1 /*
2 * Copyright (C) The Spice Group. All rights reserved.
3 *
4 * This software is published under the terms of the Spice
5 * Software License version 1.1, a copy of which has been included
6 * with this distribution in the LICENSE.txt file.
7 */
8 package org.codehaus.spice.loggerstore.factories;
9
10 import java.io.File;
11 import java.io.FileInputStream;
12 import java.io.InputStream;
13 import java.net.URL;
14 import java.util.Map;
15 import org.codehaus.spice.loggerstore.LoggerStore;
16 import org.codehaus.spice.loggerstore.LoggerStoreFactory;
17 import org.jcontainer.dna.AbstractLogEnabled;
18
19 /***
20 * The abstract class that makes it easy to create LoggerStoreFactory
21 * implementations.
22 *
23 * @author Peter Donald
24 * @author <a href="mailto:mauro.talevi at aquilonia.org">Mauro Talevi</a>
25 * @version $Revision: 1.1 $ $Date: 2003/11/19 18:22:44 $
26 */
27 public abstract class AbstractLoggerStoreFactory
28 extends AbstractLogEnabled
29 implements LoggerStoreFactory
30 {
31 /***
32 * Creates a LoggerStore from a given set of configuration parameters. The
33 * configuration map contains entrys specific to the concrete
34 * implementation.
35 *
36 * @param config the parameter map to configuration of the store
37 * @return the LoggerStore
38 * @throws Exception if unable to create the LoggerStore
39 */
40 public LoggerStore createLoggerStore( final Map config )
41 throws Exception
42 {
43 final LoggerStore loggerStore = doCreateLoggerStore( config );
44 setupLogger( loggerStore );
45 return loggerStore;
46 }
47
48 protected abstract LoggerStore doCreateLoggerStore( Map config )
49 throws Exception;
50
51 /***
52 * Utility method to throw exception indicating input data was invalid.
53 *
54 * @return never returns
55 * @throws Exception indicating input data was invalid
56 */
57 protected LoggerStore missingConfiguration()
58 throws Exception
59 {
60 throw new Exception( "Invalid configuration" );
61 }
62
63 /***
64 * A utility method to retrieve a InputStream from input map. It will
65 * systematically go through the following steps to attempt to locate the
66 * InputStream stopping at success.
67 *
68 * <ul> <li>Lookup LoggerStoreFactory.URL_LOCATION for string defining URL
69 * location of input configuration.</li> <li>Lookup java.net.URL for URL
70 * object defining URL location of input configuration.</li> <li>Lookup
71 * LoggerStoreFactory.FILE_LOCATION for string defining File location of
72 * input configuration.</li> <li>Lookup java.io.File for File object
73 * defining File location of input configuration.</li> <li>Lookup
74 * java.io.InputStream for InputStream object.</li> </ul>
75 *
76 * @param config the input map
77 * @return the InputStream or null if no stream present
78 * @throws Exception if there was a problem aquiring stream
79 */
80 protected InputStream getInputStream( final Map config )
81 throws Exception
82 {
83 final String urlLocation = (String)config.get( URL_LOCATION );
84 URL url = null;
85 if( null != urlLocation )
86 {
87 url = new URL( urlLocation );
88 }
89 if( null == url )
90 {
91 url = (URL)config.get( URL.class.getName() );
92 }
93 if( null != url )
94 {
95 return url.openStream();
96 }
97
98 final String fileLocation = (String)config.get( FILE_LOCATION );
99 File file = null;
100 if( null != fileLocation )
101 {
102 file = new File( fileLocation );
103 }
104 if( null == file )
105 {
106 file = (File)config.get( File.class.getName() );
107 }
108 if( null != file )
109 {
110 return new FileInputStream( file );
111 }
112
113 return (InputStream)config.get( InputStream.class.getName() );
114 }
115 }
This page was automatically generated by Maven