Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||||
IPropertiesManager |
|
| 0.0;0 |
1 | package com.sourceforge.jpatterns.core.configuration; |
|
2 | ||
3 | import java.io.Serializable; |
|
4 | import java.util.Set; |
|
5 | ||
6 | /** |
|
7 | * This interface defines the methods would be used later for the working with the configuration functionality defined at the properties. |
|
8 | * <br/> |
|
9 | * The <code>com.sourceforge.jpatterns.core.configuration.PropertiesBasedFactory</code> class contains the getter returning the |
|
10 | * implementation of the <code>IPropertiesManager</code>. It is the single place where the configuration specifying which implementation |
|
11 | * of the interface should be used is configured at the Java Sources. All the configuration settings necessary for implementing the |
|
12 | * "factory" pattern is placed at the properties file, and then the JPatterns built-in pattern "factory" and xml configuration is used |
|
13 | * later for retrieving the implementations of the interfaces. |
|
14 | * <br/> |
|
15 | * Please review <code>com.sourceforge.jpatterns.core.configuration.PropertiesBasedFactory#getPropertiesManager()</code> |
|
16 | * <br/> |
|
17 | * Please review properly the following Java Docs - it is important for understanding of the algorithm of working of the JPatterns |
|
18 | * configuration functionality. |
|
19 | * {@link com.sourceforge.jpatterns.core.configuration.PropertiesProvider.JPProperties.USE_ONLY_CUSTOM_FRAMEWORK_PROPERTIES} |
|
20 | * |
|
21 | * todo [zmicer]: not sure if all these methods should take place here (e.g. getDefaultBundle etc) |
|
22 | * |
|
23 | * $Author:: zmicer $<br/> |
|
24 | * $Rev:: 67 $<br/> * $Date:: 2007-08-28 21:37:07 #$<br/> |
|
25 | * $Date:: 2007-08-28 21:37:07 #$<br/> |
|
26 | */ |
|
27 | public interface IPropertiesManager extends Serializable |
|
28 | { |
|
29 | /** |
|
30 | * @return true if the custom resource bundle is presents at the class path |
|
31 | */ |
|
32 | boolean customConfigPresents(); |
|
33 | ||
34 | /** |
|
35 | * @return true if the default config resource bundle is presents at the class path |
|
36 | */ |
|
37 | boolean defaultConfigPresents(); |
|
38 | ||
39 | /** |
|
40 | * This method returns the value of the props signing if custom properties file totally overrides the default, and if it is present, |
|
41 | * then the values from the default properties are not used at all. |
|
42 | * <br/> |
|
43 | * Please review properly the following Java Docs - it is important for understanding of the algorithm of working of the JPatterns |
|
44 | * configuration functionality. |
|
45 | * {@link com.sourceforge.jpatterns.core.configuration.PropertiesProvider.JPProperties.USE_ONLY_CUSTOM_FRAMEWORK_PROPERTIES} |
|
46 | * |
|
47 | * @return true if the approrpiate property is set to the true, false otherwise. |
|
48 | */ |
|
49 | boolean useOnlyCustomConfigIfPresent(); |
|
50 | ||
51 | /** |
|
52 | * Return the bundle value using the ResourceBundle already retrieved. This method analyzes two bundles - default and custom one, |
|
53 | * the priority has custom - it provides the user with the possibility to override the values defined at the default properties, |
|
54 | * and it is a good customization point for the framework. |
|
55 | * <br/> |
|
56 | * |
|
57 | * @param key for the value we need. Can not be null (otherwise <code>IllegalArgumentException</code> would appear). |
|
58 | * |
|
59 | * @return the value for this bundle or just null in the case there is not defined bundles with such name |
|
60 | */ |
|
61 | String getBundle(final String key); |
|
62 | ||
63 | /** |
|
64 | * Get bundle for the provided key - it is a class. The shorten name is used - Serializable, PropertiesManagerImpl etc. - without packaging |
|
65 | * |
|
66 | * @param key for the value we need, Class object. Can not be null (otherwise <code>IllegalArgumentException</code> would appear). |
|
67 | * |
|
68 | * @return the value for this bundle or just null in the case there is not defined bundles with such name |
|
69 | */ |
|
70 | String getBundle(final Class key); |
|
71 | ||
72 | /** |
|
73 | * Get bundled object by the key provided. We would obtain the full class name using this key, and then try to instantiate the object. |
|
74 | * In the case value for the this key is null, or object can not be instantiated the <code>JPConfigException</code> |
|
75 | * would appear. |
|
76 | * |
|
77 | * @param key the class for which we should obtain appropriate implementation (usually it is class of the interface of abstract class |
|
78 | * implementation of which we would obtain.) |
|
79 | * @return the Object which was instantiated (following the Java Docs above we would throw the JPConfigException exception in |
|
80 | * the case the key was not found or the object can not be instantiated.) |
|
81 | */ |
|
82 | Object getBundledObject(final Class key); |
|
83 | ||
84 | /** |
|
85 | * Get bundled object by the String key provided. We would obtain the full class name using this key, and then try to instantiate |
|
86 | * the object. In the case value for the this key is null, or object can not be instantiated the |
|
87 | * <code>JPConfigException</code> would appear. |
|
88 | * |
|
89 | * @param key the class for which we should obtain appropriate implementation (usually it is String - base name of the interface of |
|
90 | * abstract class implementation of which we would obtain.) |
|
91 | * @return the Object which was instantiated (following the Java Docs above we would throw the JPConfigException exception in |
|
92 | * the case the key was not found or the object can not be instantiated.) |
|
93 | */ |
|
94 | Object getBundledObject(final String key); |
|
95 | ||
96 | /** |
|
97 | * Get the value from the default bundle. this was provided in any case - potentially it could be used at the unit tests etc. |
|
98 | * <br/> |
|
99 | * Please be noticed that we should check if the default configuration presents before the getting the value. The absence of the default |
|
100 | * configuration is a failure for the JPatterns framework. |
|
101 | * |
|
102 | * @param key to be processed. Can not be null (otherwise <code>IllegalArgumentException</code> would appear). |
|
103 | * |
|
104 | * @return String, the value required |
|
105 | */ |
|
106 | String getDefaultBundle(final String key); |
|
107 | ||
108 | /** |
|
109 | * Get the value from the custom bundle. this was provided in any case - potentially it could be used at the unit tests etc. |
|
110 | * <br/> |
|
111 | * Please be noticed that we should check if the custom configuration presents before the getting the value. |
|
112 | * The absence of the custom configuration is a normal behavioral of the system. |
|
113 | * |
|
114 | * @param key to be processed. Can not be null (otherwise <code>IllegalArgumentException</code> would appear). |
|
115 | * |
|
116 | * @return String, the value required |
|
117 | */ |
|
118 | String getCustomBundle(final String key); |
|
119 | ||
120 | /** |
|
121 | * @return the Enumeration of the keys (merged one or the custom one or the default one - it depends on the following: |
|
122 | * a. if custom properties files is present or was specified at the JVM parameter b. study the |
|
123 | * <code>com.sourceforge.jpatterns.core.configuration.PropertiesProvider.JPProperties.USE_ONLY_CUSTOM_FRAMEWORK_PROPERTIES</code>) |
|
124 | */ |
|
125 | Set<String> getMergedKeys(); |
|
126 | } |