You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2011/05/25 21:35:20 UTC
svn commit: r1127647 - in
/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl:
config/PropertyFileResolver.java util/ConfiguredArtifactUtils.java
Author: gpetracek
Date: Wed May 25 19:35:19 2011
New Revision: 1127647
URL: http://svn.apache.org/viewvc?rev=1127647&view=rev
Log:
EXTCDI-185 added cache and cleanup
Modified:
myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/PropertyFileResolver.java
myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ConfiguredArtifactUtils.java
Modified: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/PropertyFileResolver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/PropertyFileResolver.java?rev=1127647&r1=1127646&r2=1127647&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/PropertyFileResolver.java (original)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/PropertyFileResolver.java Wed May 25 19:35:19 2011
@@ -28,9 +28,11 @@ import java.io.InputStream;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
+import java.util.Map;
import java.util.MissingResourceException;
import java.util.Properties;
import java.util.ResourceBundle;
+import java.util.concurrent.ConcurrentHashMap;
/**
* @author Gerhard Petracek
@@ -43,6 +45,9 @@ public class PropertyFileResolver extend
private static final String FILE_NAME = "myfaces-extcdi";
+ private static Map<ClassLoader, Map<String, String>> propertyCache =
+ new ConcurrentHashMap<ClassLoader, Map<String, String>>();
+
/**
* {@inheritDoc}
*/
@@ -62,85 +67,117 @@ public class PropertyFileResolver extend
key = key.substring(0, key.length() - 1);
}
- String bundleName;
+ String configKey = key.substring(key.indexOf(".") + 1);
+ String configuredValue = null;
- //TODO
- if (key.contains("@") && key.lastIndexOf("@") < key.indexOf("."))
+ Map<String, String> cache = getPropertyCache();
+
+ configuredValue = cache.get(key);
+
+ if(configuredValue == null)
{
- bundleName = key.substring(0, key.indexOf("."));
- bundleName = bundleName.replace("@", ".");
+ configuredValue = cache.get(configKey);
}
- else
+
+ if(configuredValue != null)
{
- bundleName = BASE_NAME + key.substring(0, key.indexOf("."));
+ add(configuredValue);
}
+ else
+ {
- ResourceBundle resourceBundle;
+ String bundleName;
- try
- {
- try
+ //TODO
+ if (key.contains("@") && key.lastIndexOf("@") < key.indexOf("."))
{
- resourceBundle = ResourceBundle
- .getBundle(bundleName, Locale.getDefault(), ClassUtils.getClassLoader(null));
+ bundleName = key.substring(0, key.indexOf("."));
+ bundleName = bundleName.replace("@", ".");
}
- catch (MissingResourceException e)
+ else
{
- resourceBundle = null;
+ bundleName = BASE_NAME + key.substring(0, key.indexOf("."));
}
- if (resourceBundle == null)
+ ResourceBundle resourceBundle;
+
+ try
{
try
{
- resourceBundle = ResourceBundle.getBundle(FILE_NAME);
+ resourceBundle = ResourceBundle
+ .getBundle(bundleName, Locale.getDefault(), ClassUtils.getClassLoader(null));
}
- catch (MissingResourceException e2)
+ catch (MissingResourceException e)
{
resourceBundle = null;
}
- }
- String configKey = key.substring(key.indexOf(".") + 1);
- String configuredValue = null;
-
- if (resourceBundle != null)
- {
- try
+ if (resourceBundle == null)
{
- configuredValue = resourceBundle.getString(configKey);
- add(configuredValue);
+ try
+ {
+ resourceBundle = ResourceBundle.getBundle(FILE_NAME);
+ }
+ catch (MissingResourceException e2)
+ {
+ resourceBundle = null;
+ }
}
- catch (MissingResourceException e)
+
+ if (resourceBundle != null)
{
- resourceBundle = null;
+ try
+ {
+ configuredValue = resourceBundle.getString(configKey);
+ add(configuredValue);
+ cache.put(configKey, configuredValue);
+ }
+ catch (MissingResourceException e)
+ {
+ resourceBundle = null;
+ }
}
- }
- if (resourceBundle == null)
- {
- Properties properties = getProperties("META-INF/" + FILE_NAME + ".properties");
+ if (resourceBundle == null)
+ {
+ Properties properties = getProperties("META-INF/" + FILE_NAME + ".properties");
- if (properties != null)
+ if (properties != null)
+ {
+ configuredValue = properties.getProperty(configKey);
+ add(configuredValue);
+ cache.put(configKey, configuredValue);
+ }
+ }
+
+ if (configuredValue == null)
{
- configuredValue = properties.getProperty(configKey);
- add(configuredValue);
+ return Collections.emptyList();
}
}
-
- if (configuredValue == null)
+ catch (Exception e)
{
return Collections.emptyList();
}
}
- catch (Exception e)
- {
- return Collections.emptyList();
- }
return getConfiguredValues(descriptor.getTargetType());
}
+ private static Map<String, String> getPropertyCache()
+ {
+ ClassLoader classLoader = ClassUtils.getClassLoader(null);
+ Map<String, String> cache = propertyCache.get(classLoader);
+
+ if(cache == null)
+ {
+ cache = new ConcurrentHashMap<String, String>();
+ propertyCache.put(classLoader, cache);
+ }
+ return cache;
+ }
+
/**
* Load properties from a configuration file with the given resourceName.
*
Modified: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ConfiguredArtifactUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ConfiguredArtifactUtils.java?rev=1127647&r1=1127646&r2=1127647&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ConfiguredArtifactUtils.java (original)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ConfiguredArtifactUtils.java Wed May 25 19:35:19 2011
@@ -122,34 +122,27 @@ public abstract class ConfiguredArtifact
for(ConfiguredValueResolver configuredValueResolver : resolvers)
{
- if(configuredValueResolver.isActivated())
+ resolverResult = configuredValueResolver.resolveInstances(new ConfiguredValueDescriptor<String, T>()
{
- resolverResult = configuredValueResolver.resolveInstances(new ConfiguredValueDescriptor<String, T>()
+ /**
+ * {@inheritDoc}
+ */
+ public String getKey()
{
- /**
- * {@inheritDoc}
- */
- public String getKey()
- {
- return key;
- }
+ return key;
+ }
- /**
- * {@inheritDoc}
- */
- public Class<T> getTargetType()
- {
- return targetType;
- }
- });
- }
- else
- {
- resolverResult = null;
- }
+ /**
+ * {@inheritDoc}
+ */
+ public Class<T> getTargetType()
+ {
+ return targetType;
+ }
+ });
Field defaultInjectionPoint;
- if(resolverResult != null && !resolverResult.isEmpty())
+ if(resolverResult != null)
{
for(T currentResult : resolverResult)
{
@@ -220,7 +213,10 @@ public abstract class ConfiguredArtifact
//TODO cache the resolvers
for(ConfiguredValueResolver currentResolver : configuredValueResolvers)
{
- resolvers.add(currentResolver);
+ if(currentResolver.isActivated())
+ {
+ resolvers.add(currentResolver);
+ }
}
Collections.sort(resolvers, comparator);