[infinispan-commits] Infinispan SVN: r543 - in trunk/core/src: main/java/org/infinispan/config/parsing and 3 other directories.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Fri Jul 10 07:30:31 EDT 2009


Author: vblagojevic at jboss.com
Date: 2009-07-10 07:30:31 -0400 (Fri, 10 Jul 2009)
New Revision: 543

Modified:
   trunk/core/src/main/java/org/infinispan/config/Configuration.java
   trunk/core/src/main/java/org/infinispan/config/CustomInterceptorConfig.java
   trunk/core/src/main/java/org/infinispan/config/parsing/AutomatedXmlConfigurationParserImpl.java
   trunk/core/src/main/java/org/infinispan/util/ClassFinder.java
   trunk/core/src/test/java/org/infinispan/config/parsing/XmlFileParsingTest.java
   trunk/core/src/test/resources/configs/named-cache-test.xml
Log:
ns

Modified: trunk/core/src/main/java/org/infinispan/config/Configuration.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/Configuration.java	2009-07-10 08:03:00 UTC (rev 542)
+++ trunk/core/src/main/java/org/infinispan/config/Configuration.java	2009-07-10 11:30:31 UTC (rev 543)
@@ -51,7 +51,10 @@
          @ConfigurationElement(name = "lazyDeserialization", parent = "default", description = ""),  
          @ConfigurationElement(name = "invocationBatching", parent = "default", description = ""),   
          @ConfigurationElement(name = "clustering", parent = "default", description = "", customReader=ClusteringConfigReader.class),
-         @ConfigurationElement(name = "hash", parent = "default", description = ""),
+         @ConfigurationElement(name = "sync", parent = "clustering"),
+         @ConfigurationElement(name = "hash", parent = "clustering"),
+         @ConfigurationElement(name = "l1", parent = "clustering"),
+         @ConfigurationElement(name = "async", parent = "clustering", description = ""),
          @ConfigurationElement(name = "eviction", parent = "default", description = ""),
          @ConfigurationElement(name = "expiration", parent = "default", description = ""),
          @ConfigurationElement(name = "unsafe", parent = "default", description = ""),

Modified: trunk/core/src/main/java/org/infinispan/config/CustomInterceptorConfig.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/CustomInterceptorConfig.java	2009-07-10 08:03:00 UTC (rev 542)
+++ trunk/core/src/main/java/org/infinispan/config/CustomInterceptorConfig.java	2009-07-10 11:30:31 UTC (rev 543)
@@ -31,6 +31,7 @@
  * @since 4.0
  */
 @Immutable
+ at ConfigurationElement(name = "interceptor", parent = "customInterceptors")
 public class CustomInterceptorConfig extends AbstractNamedCacheConfigurationBean {
    private CommandInterceptor interceptor;
    private boolean isFirst;
@@ -91,6 +92,7 @@
    /**
     * Shall this interceptor be the first one in the chain?
     */
+
    public void setFirst(boolean first) {
       testImmutability("first");
       isFirst = first;
@@ -108,6 +110,8 @@
     * Put this interceptor at the specified index, after the default chain is built. If the index is not valid (negative
     * or grater than the size of the chain) an {@link ConfigurationException} is thrown at construction time.
     */
+   @ConfigurationAttribute(name = "index", 
+            containingElement = "interceptor") 
    public void setIndex(int index) {
       testImmutability("index");
       this.index = index;
@@ -117,6 +121,8 @@
     * Adds the interceptor immediately after the first occurance of an interceptor having the given class. If the chain
     * does not contain such an interceptor then this interceptor definition is ignored.
     */
+   @ConfigurationAttribute(name = "after", 
+            containingElement = "interceptor") 
    public void setAfterInterceptor(String afterClass) {
       testImmutability("after");
       this.after = afterClass;
@@ -134,6 +140,8 @@
     * Adds the interceptor immediately before the first occurance of an interceptor having the given class. If the chain
     * does not contain such an interceptor then this interceptor definition is ignored.
     */
+   @ConfigurationAttribute(name = "before", 
+            containingElement = "interceptor") 
    public void setBeforeInterceptor(String beforeClass) {
       testImmutability("before");
       this.before = beforeClass;

Modified: trunk/core/src/main/java/org/infinispan/config/parsing/AutomatedXmlConfigurationParserImpl.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/parsing/AutomatedXmlConfigurationParserImpl.java	2009-07-10 08:03:00 UTC (rev 542)
+++ trunk/core/src/main/java/org/infinispan/config/parsing/AutomatedXmlConfigurationParserImpl.java	2009-07-10 11:30:31 UTC (rev 543)
@@ -23,7 +23,6 @@
 
 import java.beans.PropertyEditor;
 import java.beans.PropertyEditorManager;
-import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
@@ -61,8 +60,7 @@
    private static  List<Class<?>> CONFIG_BEANS =null;
    
    static {
-      String path = System.getProperty("java.class.path") + File.pathSeparator
-               + System.getProperty("surefire.test.class.path");
+      String path = ClassFinder.PATH;
       try {         
          CONFIG_BEANS = ClassFinder.isAssignableFrom(ClassFinder.infinispanClasses(),AbstractConfigurationBean.class);
       } catch (Exception e) {
@@ -184,11 +182,14 @@
    
    public AbstractConfigurationBean findAndInstantiateBean(List<Class<?>> b, Element e) throws ConfigurationException {
       String name = e.getTagName();
+      String parentName = ((Element)e.getParentNode()).getTagName();
+      if(parentName.equals("namedCache"))
+         parentName = "default";
       for (Class<?> clazz : b) {
          ConfigurationElements elements = clazz.getAnnotation(ConfigurationElements.class);
          if (elements != null) {
             for (ConfigurationElement ce : elements.elements()) {
-               if (ce.name().equals(name)) {
+               if (ce.name().equals(name) && ce.parent().equals(parentName)) {
                   try {
                      return (AbstractConfigurationBean) clazz.newInstance();
                   } catch (Exception e1) {
@@ -198,7 +199,7 @@
             }
          } else {
             ConfigurationElement ce = clazz.getAnnotation(ConfigurationElement.class);
-            if (ce != null && ce.name().equals(name)) {
+            if (ce != null && (ce.name().equals(name) && ce.parent().equals(parentName))) {
                try {
                   return (AbstractConfigurationBean) clazz.newInstance();
                } catch (Exception e1) {

Modified: trunk/core/src/main/java/org/infinispan/util/ClassFinder.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/util/ClassFinder.java	2009-07-10 08:03:00 UTC (rev 542)
+++ trunk/core/src/main/java/org/infinispan/util/ClassFinder.java	2009-07-10 11:30:31 UTC (rev 543)
@@ -36,6 +36,9 @@
  * Find infinispan classes utility
  */
 public class ClassFinder {
+   
+   public static String PATH = System.getProperty("java.class.path") + File.pathSeparator
+            + System.getProperty("surefire.test.class.path");
 
    public static List<Class<?>> withAnnotationPresent(List<Class<?>> classes, Class<? extends Annotation> c) {
       List<Class<?>> clazzes = new ArrayList<Class<?>>();
@@ -66,8 +69,7 @@
    }
 
    public static List<Class<?>> infinispanClasses() throws Exception {
-      String cp = System.getProperty("java.class.path") + File.pathSeparator + System.getProperty("surefire.test.class.path");
-      return infinispanClasses(cp);
+      return infinispanClasses(PATH);
    }
 
    public static List<Class<?>> infinispanClasses(String javaClassPath) throws Exception {

Modified: trunk/core/src/test/java/org/infinispan/config/parsing/XmlFileParsingTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/config/parsing/XmlFileParsingTest.java	2009-07-10 08:03:00 UTC (rev 542)
+++ trunk/core/src/test/java/org/infinispan/config/parsing/XmlFileParsingTest.java	2009-07-10 11:30:31 UTC (rev 543)
@@ -5,6 +5,7 @@
 import org.infinispan.config.GlobalConfiguration;
 import org.infinispan.config.GlobalConfiguration.ShutdownHookBehavior;
 import org.infinispan.distribution.DefaultConsistentHash;
+import org.infinispan.eviction.EvictionStrategy;
 import org.infinispan.loaders.file.FileCacheStoreConfig;
 import org.infinispan.util.concurrent.IsolationLevel;
 import org.testng.annotations.Test;
@@ -144,6 +145,12 @@
       c = namedCaches.get("cacheWithCustomInterceptors");
       assert !c.getCustomInterceptors().isEmpty();
       assert c.getCustomInterceptors().size() == 5;
+      
+      c = namedCaches.get("evictionCache");
+      assert c.getEvictionMaxEntries() == 5000;
+      assert c.getEvictionStrategy().equals(EvictionStrategy.FIFO);
+      assert c.getExpirationLifespan() == 60000;
+      assert c.getExpirationMaxIdle() == 1000;
    }
 
    private void testConfigurationMerging(XmlConfigurationParser parser) throws IOException {

Modified: trunk/core/src/test/resources/configs/named-cache-test.xml
===================================================================
--- trunk/core/src/test/resources/configs/named-cache-test.xml	2009-07-10 08:03:00 UTC (rev 542)
+++ trunk/core/src/test/resources/configs/named-cache-test.xml	2009-07-10 11:30:31 UTC (rev 543)
@@ -109,7 +109,18 @@
          <l1 enabled="true" lifespan="600000"/>
       </clustering>
    </namedCache>
+   
+   <!-- Note that any of the elements appearing in a namedCache section can also appear in the default section as a template. -->
+   <namedCache name="evictionCache">
 
+      <!--
+         Eviction configuration.  WakeupInterval defines how often the eviction thread runs, in milliseconds.  0 means
+         the eviction thread will never run.  A separate executor is used for eviction in each cache.
+      -->
+      <eviction wakeUpInterval="500" maxEntries="5000" strategy="FIFO"/>
+      <expiration lifespan="60000" maxIdle="1000"/>
+   </namedCache>
+
    <namedCache name="withouthJmxEnabled">
       <clustering>
          <async useReplQueue="true" replQueueInterval="100" replQueueMaxElements="200"/>




More information about the infinispan-commits mailing list