[jboss-cvs] JBossAS SVN: r111383 - in projects/jboss-cl/branches/Branch_2_2: classloader/src/main/java/org/jboss/classloader/spi/base and 9 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon May 16 10:55:53 EDT 2011


Author: alesj
Date: 2011-05-16 10:55:53 -0400 (Mon, 16 May 2011)
New Revision: 111383

Added:
   projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/support/DomainTester.java
   projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/support/YearTranslator.java
   projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/DomainTransformUnitTestCase.java
   projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingTranslatorMetaData.java
   projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingTranslatorsMetaData.java
   projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingTranslatorsMetaData10.java
   projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/TranslatorScope.java
   projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/helpers/ReflectionTranslator.java
   projects/jboss-cl/branches/Branch_2_2/classloading/src/test/java/org/jboss/test/classloading/metadata/xml/test/ClassLoadingTranslatorsMetaDataXmlUnitTestCase.java
   projects/jboss-cl/branches/Branch_2_2/classloading/src/test/resources/org/jboss/test/classloading/metadata/xml/test/Translators.xml
Modified:
   projects/jboss-cl/branches/Branch_2_2/
   projects/jboss-cl/branches/Branch_2_2/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java
   projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/TransformTestSuite.java
   projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/support/MethodHelper.java
   projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/MixedTransformUnitTestCase.java
   projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/PolicyTransformUnitTestCase.java
   projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/SystemTransformUnitTestCase.java
   projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/TransformTest.java
   projects/jboss-cl/branches/Branch_2_2/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/test/NoopClassLoaderFactoryXMLUnitTestCase.java
   projects/jboss-cl/branches/Branch_2_2/classloading/src/test/java/org/jboss/test/classloading/metadata/MetaDataTestSuite.java
Log:
Port translator handling from trunk.



Property changes on: projects/jboss-cl/branches/Branch_2_2
___________________________________________________________________
Added: svn:mergeinfo
   + /projects/jboss-cl/trunk:111073-111080

Modified: projects/jboss-cl/branches/Branch_2_2/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java	2011-05-16 14:55:00 UTC (rev 111382)
+++ projects/jboss-cl/branches/Branch_2_2/classloader/src/main/java/org/jboss/classloader/spi/base/BaseClassLoaderDomain.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -24,15 +24,29 @@
 import java.io.IOException;
 import java.net.URL;
 import java.security.ProtectionDomain;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.jboss.classloader.plugins.ClassLoaderUtils;
-import org.jboss.classloader.spi.*;
+import org.jboss.classloader.spi.CacheLoader;
+import org.jboss.classloader.spi.ClassLoaderCache;
+import org.jboss.classloader.spi.ClassLoaderPolicy;
+import org.jboss.classloader.spi.DelegateLoader;
+import org.jboss.classloader.spi.ImportType;
+import org.jboss.classloader.spi.Loader;
+import org.jboss.classloader.spi.ShutdownPolicy;
+import org.jboss.classloader.spi.translator.TranslatorUtils;
 import org.jboss.logging.Logger;
 import org.jboss.util.collection.ConcurrentSet;
+import org.jboss.util.loading.Translator;
 
 /**
  * BaseClassLoaderDomain.<p>
@@ -52,6 +66,9 @@
    /** The classloader system to which we belong */
    private BaseClassLoaderSystem system;
    
+   /** The translators */
+   private List<Translator> translators;
+
    /** The classloaders  in the order they were registered */
    private List<ClassLoaderInformation> classLoaders = new CopyOnWriteArrayList<ClassLoaderInformation>();
    
@@ -217,10 +234,13 @@
     */
    protected byte[] transform(ClassLoader classLoader, String className, byte[] byteCode, ProtectionDomain protectionDomain) throws Exception
    {
+      byte[] result = byteCode;
+
       BaseClassLoaderSystem system = getClassLoaderSystem();
       if (system != null)
-         return system.transform(classLoader, className, byteCode, protectionDomain);
-      return byteCode;
+         result = system.transform(classLoader, className, result, protectionDomain);
+
+      return TranslatorUtils.applyTranslatorsOnTransform(getTranslators(), classLoader, className, result, protectionDomain);
    }
 
    /**
@@ -1712,8 +1732,63 @@
       for (ClassLoaderInformation info : infos)
          info.clearBlackList(name);
    }
-   
+
    /**
+    * Get the policy's translators.
+    *
+    * @return the translators
+    */
+   public synchronized List<Translator> getTranslators()
+   {
+      if (translators == null || translators.isEmpty())
+         return Collections.emptyList();
+      else
+         return Collections.unmodifiableList(translators);
+   }
+
+   /**
+    * Set the translators.
+    *
+    * @param translators the translators
+    */
+   public synchronized void setTranslators(List<Translator> translators)
+   {
+      this.translators = translators;
+   }
+
+   /**
+    * Add the translator.
+    *
+    * @param translator the translator to add
+    * @throws IllegalArgumentException for null translator
+    */
+   public synchronized void addTranslator(Translator translator)
+   {
+      if (translator == null)
+         throw new IllegalArgumentException("Null translator");
+
+      if (translators == null)
+         translators = new ArrayList<Translator>();
+
+      translators.add(translator);
+   }
+
+   /**
+    * Remove the translator.
+    *
+    * @param translator the translator to remove
+    * @throws IllegalArgumentException for null translator
+    */
+   public synchronized void removeTranslator(Translator translator)
+   {
+      if (translator == null)
+         throw new IllegalArgumentException("Null translator");
+
+      if (translators != null)
+         translators.remove(translator);
+   }
+
+   /**
     * ClassCacheItem.
     */
    static class ClassCacheItem

Modified: projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/TransformTestSuite.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/TransformTestSuite.java	2011-05-16 14:55:00 UTC (rev 111382)
+++ projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/TransformTestSuite.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -24,6 +24,7 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 import junit.textui.TestRunner;
+import org.jboss.test.classloader.transform.test.DomainTransformUnitTestCase;
 import org.jboss.test.classloader.transform.test.MixedTransformUnitTestCase;
 import org.jboss.test.classloader.transform.test.PolicyTransformUnitTestCase;
 import org.jboss.test.classloader.transform.test.SystemTransformUnitTestCase;
@@ -55,6 +56,7 @@
       TestSuite suite = new TestSuite("Transform Tests");
 
       suite.addTest(PolicyTransformUnitTestCase.suite());
+      suite.addTest(DomainTransformUnitTestCase.suite());
       suite.addTest(SystemTransformUnitTestCase.suite());
       suite.addTest(MixedTransformUnitTestCase.suite());
 

Copied: projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/support/DomainTester.java (from rev 111080, projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/transform/support/DomainTester.java)
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/support/DomainTester.java	                        (rev 0)
+++ projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/support/DomainTester.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -0,0 +1,29 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.classloader.transform.support;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class DomainTester
+{
+}

Modified: projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/support/MethodHelper.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/support/MethodHelper.java	2011-05-16 14:55:00 UTC (rev 111382)
+++ projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/support/MethodHelper.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -33,6 +33,11 @@
       return System.getProperty("user.name", "Ales");     
    }
 
+   public static int year()
+   {
+      return 2011;
+   }
+
    public static Locale locale()
    {
       return Locale.getDefault();     

Copied: projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/support/YearTranslator.java (from rev 111080, projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/transform/support/YearTranslator.java)
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/support/YearTranslator.java	                        (rev 0)
+++ projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/support/YearTranslator.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -0,0 +1,35 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.classloader.transform.support;
+
+import javassist.CtClass;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class YearTranslator extends JavassistTranslator
+{
+   protected void addMethods(CtClass ctClass) throws Exception
+   {
+      addMethod(ctClass, "year");
+   }
+}

Copied: projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/DomainTransformUnitTestCase.java (from rev 111080, projects/jboss-cl/trunk/classloader/src/test/java/org/jboss/test/classloader/transform/test/DomainTransformUnitTestCase.java)
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/DomainTransformUnitTestCase.java	                        (rev 0)
+++ projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/DomainTransformUnitTestCase.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -0,0 +1,73 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.classloader.transform.test;
+
+import java.lang.reflect.Method;
+
+import junit.framework.Test;
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ClassLoaderPolicy;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.test.classloader.transform.support.YearTranslator;
+
+/**
+ * Per policy transformation tests.
+ *
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class DomainTransformUnitTestCase extends TransformTest
+{
+   public DomainTransformUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(DomainTransformUnitTestCase.class);
+   }
+
+   protected void prepareTransform(ClassLoaderSystem system, ClassLoaderDomain domain, ClassLoaderPolicy policy)
+   {
+      domain.addTranslator(new YearTranslator());
+   }
+
+   protected String getClassName()
+   {
+      return "org.jboss.test.classloader.transform.support.DomainTester";
+   }
+
+   protected void testInstance(Object instance) throws Exception
+   {
+      Method author = instance.getClass().getDeclaredMethod("year");
+      assertNotNull(author.invoke(instance));
+
+      try
+      {
+         instance.getClass().getDeclaredMethod("locale");
+         fail("Should not be here.");
+      }
+      catch (Exception ignored)
+      {
+      }
+   }
+}
\ No newline at end of file

Modified: projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/MixedTransformUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/MixedTransformUnitTestCase.java	2011-05-16 14:55:00 UTC (rev 111382)
+++ projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/MixedTransformUnitTestCase.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -24,10 +24,12 @@
 import java.lang.reflect.Method;
 
 import junit.framework.Test;
+import org.jboss.classloader.spi.ClassLoaderDomain;
 import org.jboss.classloader.spi.ClassLoaderPolicy;
 import org.jboss.classloader.spi.ClassLoaderSystem;
 import org.jboss.test.classloader.transform.support.AuthorTranslator;
 import org.jboss.test.classloader.transform.support.LocaleTranslator;
+import org.jboss.test.classloader.transform.support.YearTranslator;
 
 /**
  * Mixed transformation tests.
@@ -46,9 +48,10 @@
       return suite(MixedTransformUnitTestCase.class);
    }
 
-   protected void prepareTransform(ClassLoaderSystem system, ClassLoaderPolicy policy)
+   protected void prepareTransform(ClassLoaderSystem system, ClassLoaderDomain domain, ClassLoaderPolicy policy)
    {
       policy.addTranslator(new AuthorTranslator());
+      domain.addTranslator(new YearTranslator());
       system.addTranslator(new LocaleTranslator());
    }
 
@@ -62,6 +65,9 @@
       Method author = instance.getClass().getDeclaredMethod("author");
       assertNotNull(author.invoke(instance));
 
+      Method year = instance.getClass().getDeclaredMethod("year");
+      assertNotNull(year.invoke(instance));
+
       Method locale = instance.getClass().getDeclaredMethod("locale");
       assertNotNull(locale.invoke(instance));
    }

Modified: projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/PolicyTransformUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/PolicyTransformUnitTestCase.java	2011-05-16 14:55:00 UTC (rev 111382)
+++ projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/PolicyTransformUnitTestCase.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -24,6 +24,7 @@
 import java.lang.reflect.Method;
 
 import junit.framework.Test;
+import org.jboss.classloader.spi.ClassLoaderDomain;
 import org.jboss.classloader.spi.ClassLoaderPolicy;
 import org.jboss.classloader.spi.ClassLoaderSystem;
 import org.jboss.test.classloader.transform.support.AuthorTranslator;
@@ -45,7 +46,7 @@
       return suite(PolicyTransformUnitTestCase.class);
    }
 
-   protected void prepareTransform(ClassLoaderSystem system, ClassLoaderPolicy policy)
+   protected void prepareTransform(ClassLoaderSystem system, ClassLoaderDomain domain, ClassLoaderPolicy policy)
    {
       policy.addTranslator(new AuthorTranslator());
    }

Modified: projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/SystemTransformUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/SystemTransformUnitTestCase.java	2011-05-16 14:55:00 UTC (rev 111382)
+++ projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/SystemTransformUnitTestCase.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -24,6 +24,7 @@
 import java.lang.reflect.Method;
 
 import junit.framework.Test;
+import org.jboss.classloader.spi.ClassLoaderDomain;
 import org.jboss.classloader.spi.ClassLoaderPolicy;
 import org.jboss.classloader.spi.ClassLoaderSystem;
 import org.jboss.test.classloader.transform.support.LocaleTranslator;
@@ -45,7 +46,7 @@
       return suite(SystemTransformUnitTestCase.class);
    }
 
-   protected void prepareTransform(ClassLoaderSystem system, ClassLoaderPolicy policy)
+   protected void prepareTransform(ClassLoaderSystem system, ClassLoaderDomain domain, ClassLoaderPolicy policy)
    {
       system.addTranslator(new LocaleTranslator());
    }

Modified: projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/TransformTest.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/TransformTest.java	2011-05-16 14:55:00 UTC (rev 111382)
+++ projects/jboss-cl/branches/Branch_2_2/classloader/src/test/java/org/jboss/test/classloader/transform/test/TransformTest.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -21,6 +21,7 @@
  */
 package org.jboss.test.classloader.transform.test;
 
+import org.jboss.classloader.spi.ClassLoaderDomain;
 import org.jboss.classloader.spi.ClassLoaderPolicy;
 import org.jboss.classloader.spi.ClassLoaderSystem;
 import org.jboss.classloader.test.support.MockClassLoaderPolicy;
@@ -41,9 +42,10 @@
    public void testTransform() throws Exception
    {
       ClassLoaderSystem system = createClassLoaderSystemWithModifiedBootstrap();
+      ClassLoaderDomain domain = system.getDefaultDomain();
       MockClassLoaderPolicy policy = createMockClassLoaderPolicy();
       policy.setPaths("org/jboss/test/classloader/transform/support");
-      prepareTransform(system, policy);
+      prepareTransform(system, domain, policy);
 
       ClassLoader cl = system.registerClassLoaderPolicy(policy);
       Class<?> clazz = cl.loadClass(getClassName());
@@ -51,7 +53,7 @@
       testInstance(instance);
    }
 
-   protected abstract void prepareTransform(ClassLoaderSystem system, ClassLoaderPolicy policy);
+   protected abstract void prepareTransform(ClassLoaderSystem system, ClassLoaderDomain domain, ClassLoaderPolicy policy);
 
    protected abstract String getClassName();
 

Copied: projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingTranslatorMetaData.java (from rev 111080, projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingTranslatorMetaData.java)
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingTranslatorMetaData.java	                        (rev 0)
+++ projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingTranslatorMetaData.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -0,0 +1,140 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.classloading.spi.metadata;
+
+import java.io.Serializable;
+import javax.xml.bind.annotation.XmlAttribute;
+
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementProperties;
+
+/**
+ * ClassLoadingTranslatorMetaData.
+ * 
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
+ */
+ at ManagementObject(properties=ManagementProperties.EXPLICIT, name="org.jboss.classloading.spi.metadata.ClassLoadingTranslatorMetaData")
+public class ClassLoadingTranslatorMetaData implements Serializable, Cloneable
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 1L;
+
+   private String className;
+   private String method;
+   private TranslatorScope scope;
+
+   public String getClassName()
+   {
+      return className;
+   }
+
+   @XmlAttribute(name = "class", required = true)
+   public void setClassName(String className)
+   {
+      this.className = className;
+   }
+
+   public String getMethod()
+   {
+      return method;
+   }
+
+   @XmlAttribute
+   public void setMethod(String method)
+   {
+      this.method = method;
+   }
+
+   public TranslatorScope getScope()
+   {
+      return scope;
+   }
+
+   @XmlAttribute
+   public void setScope(TranslatorScope scope)
+   {
+      this.scope = scope;
+   }
+
+   @Override
+   public String toString()
+   {
+      StringBuilder builder = new StringBuilder();
+      builder.append(getClass().getSimpleName());
+      builder.append("@");
+      builder.append(Integer.toHexString(System.identityHashCode(this)));
+      builder.append("{");
+      toString(builder);
+      builder.append("}");
+      return builder.toString();
+   }
+   
+   /**
+    * For subclasses to override the toString contents
+    * 
+    * @param builder the builder
+    */
+   protected void toString(StringBuilder builder)
+   {
+      builder.append("class=").append(getClassName());
+      if (getMethod() != null)
+         builder.append(" method=").append(getMethod());
+      builder.append(" scope=").append(getScope());
+   }
+   
+   @Override
+   public boolean equals(Object obj)
+   {
+      if (obj == this)
+         return true;
+      if (obj == null || obj instanceof ClassLoadingTranslatorMetaData == false)
+         return false;
+      ClassLoadingTranslatorMetaData other = (ClassLoadingTranslatorMetaData) obj;
+      if (equals(getClassName(), other.getClassName()) == false)
+         return false;
+      if (equals(getMethod(), other.getMethod()) == false)
+         return false;
+      if (equals(getScope(), other.getScope()) == false)
+         return false;
+      return true;
+   }
+   
+   // FINDBUGS: Just to keep it happy
+   @Override
+   public int hashCode()
+   {
+      return super.hashCode();
+   }
+
+   @Override
+   protected ClassLoadingTranslatorMetaData clone() throws CloneNotSupportedException
+   {
+      return (ClassLoadingTranslatorMetaData) super.clone();
+   }
+
+   static boolean equals(Object one, Object two)
+   {
+      if (one == null)
+         return two == null;
+      return one.equals(two);
+   }
+}

Copied: projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingTranslatorsMetaData.java (from rev 111080, projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingTranslatorsMetaData.java)
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingTranslatorsMetaData.java	                        (rev 0)
+++ projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingTranslatorsMetaData.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -0,0 +1,149 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.classloading.spi.metadata;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementProperties;
+
+/**
+ * ClassLoadingTranslatorsMetaData.
+ * 
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
+ */
+ at ManagementObject(properties=ManagementProperties.EXPLICIT, name="org.jboss.classloading.spi.metadata.ClassLoadingTranslatorsMetaData")
+public class ClassLoadingTranslatorsMetaData implements Serializable, Cloneable
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 1L;
+
+   private List<ClassLoadingTranslatorMetaData> translators;
+   private TranslatorScope scope = TranslatorScope.POLICY;
+
+   protected void addTranslator(ClassLoadingTranslatorMetaData translator)
+   {
+      if (translators == null)
+         translators = new ArrayList<ClassLoadingTranslatorMetaData>();
+
+      if (translator.getScope() == null)
+         translator.setScope(getScope());
+
+      translators.add(translator);
+   }
+
+   public List<ClassLoadingTranslatorMetaData> getTranslators()
+   {
+      return translators;
+   }
+
+   @XmlElement(name = "translator")
+   public void setTranslators(List<ClassLoadingTranslatorMetaData> translators)
+   {
+      if (translators != null)
+      {
+         for (ClassLoadingTranslatorMetaData translator : translators)
+            addTranslator(translator);
+      }
+      else
+      {
+         this.translators = null;
+      }
+   }
+
+   public TranslatorScope getScope()
+   {
+      return scope;
+   }
+
+   @XmlAttribute
+   public void setScope(TranslatorScope scope)
+   {
+      this.scope = scope;
+   }
+
+   @Override
+   public String toString()
+   {
+      StringBuilder builder = new StringBuilder();
+      builder.append(getClass().getSimpleName());
+      builder.append("@");
+      builder.append(Integer.toHexString(System.identityHashCode(this)));
+      builder.append("{");
+      toString(builder);
+      builder.append("}");
+      return builder.toString();
+   }
+   
+   /**
+    * For subclasses to override the toString contents
+    * 
+    * @param builder the builder
+    */
+   protected void toString(StringBuilder builder)
+   {
+      builder.append("translators=").append(getTranslators());
+   }
+   
+   @Override
+   public boolean equals(Object obj)
+   {
+      if (obj == this)
+         return true;
+      if (obj == null || obj instanceof ClassLoadingTranslatorsMetaData == false)
+         return false;
+      ClassLoadingTranslatorsMetaData other = (ClassLoadingTranslatorsMetaData) obj;
+      return equals(getTranslators(), other.getTranslators()) && equals(getScope(), other.getScope());
+   }
+   
+   // FINDBUGS: Just to keep it happy
+   @Override
+   public int hashCode()
+   {
+      return super.hashCode();
+   }
+   
+   static boolean equals(Object one, Object two)
+   {
+      if (one == null)
+         return two == null;
+      return one.equals(two);
+   }
+
+   @Override
+   public Object clone() throws CloneNotSupportedException
+   {
+      ClassLoadingTranslatorsMetaData clone = (ClassLoadingTranslatorsMetaData) super.clone();
+      if (getTranslators() != null)
+      {
+         List<ClassLoadingTranslatorMetaData> cloneTranslators = new ArrayList<ClassLoadingTranslatorMetaData>(getTranslators().size());
+         for (ClassLoadingTranslatorMetaData cltmd : getTranslators())
+            cloneTranslators.add(cltmd.clone());
+         clone.setTranslators(cloneTranslators);
+      }
+      return clone;
+   }
+}

Copied: projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingTranslatorsMetaData10.java (from rev 111080, projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingTranslatorsMetaData10.java)
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingTranslatorsMetaData10.java	                        (rev 0)
+++ projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/ClassLoadingTranslatorsMetaData10.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.classloading.spi.metadata;
+
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.xb.annotations.JBossXmlSchema;
+
+/**
+ * ClassLoadingTranslatorsMetaData v1.0.
+ * 
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
+ */
+ at JBossXmlSchema(namespace="urn:jboss:classloading-translators:1.0", elementFormDefault=XmlNsForm.QUALIFIED)
+ at XmlRootElement(name="classloading-translators")
+ at XmlType(name = "classloadingTranslatorsType", propOrder = {"translators"})
+public class ClassLoadingTranslatorsMetaData10 extends ClassLoadingTranslatorsMetaData
+{
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 1L;
+}

Copied: projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/TranslatorScope.java (from rev 111080, projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/metadata/TranslatorScope.java)
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/TranslatorScope.java	                        (rev 0)
+++ projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/TranslatorScope.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -0,0 +1,92 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.classloading.spi.metadata;
+
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ClassLoaderPolicy;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.util.loading.Translator;
+
+/**
+ * TranslatorScope.
+ *
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
+ */
+public enum TranslatorScope
+{
+   SYSTEM
+         {
+            public void addTranslator(ClassLoaderSystem system, ClassLoaderDomain domain, ClassLoaderPolicy policy, Translator translator)
+            {
+               system.addTranslator(translator);
+            }
+
+            public void removeTranslator(ClassLoaderSystem system, ClassLoaderDomain domain, ClassLoaderPolicy policy, Translator translator)
+            {
+               system.removeTranslator(translator);
+            }
+         },
+   DOMAIN
+         {
+            public void addTranslator(ClassLoaderSystem system, ClassLoaderDomain domain, ClassLoaderPolicy policy, Translator translator)
+            {
+               domain.addTranslator(translator);
+            }
+
+            public void removeTranslator(ClassLoaderSystem system, ClassLoaderDomain domain, ClassLoaderPolicy policy, Translator translator)
+            {
+               domain.removeTranslator(translator);
+            }
+         },
+   POLICY
+         {
+            public void addTranslator(ClassLoaderSystem system, ClassLoaderDomain domain, ClassLoaderPolicy policy, Translator translator)
+            {
+               policy.addTranslator(translator);
+            }
+
+            public void removeTranslator(ClassLoaderSystem system, ClassLoaderDomain domain, ClassLoaderPolicy policy, Translator translator)
+            {
+               policy.removeTranslator(translator);
+            }
+         };
+
+   /**
+    * Add translator.
+    *
+    * @param system     the CL system
+    * @param domain     the CL domain
+    * @param policy     the CL policy
+    * @param translator the trsnslator
+    */
+   public abstract void addTranslator(ClassLoaderSystem system, ClassLoaderDomain domain, ClassLoaderPolicy policy, Translator translator);
+
+   /**
+    * Remove translator.
+    *
+    * @param system     the CL system
+    * @param domain     the CL domain
+    * @param policy     the CL policy
+    * @param translator the trsnslator
+    */
+   public abstract void removeTranslator(ClassLoaderSystem system, ClassLoaderDomain domain, ClassLoaderPolicy policy, Translator translator);
+}
\ No newline at end of file

Copied: projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/helpers/ReflectionTranslator.java (from rev 111080, projects/jboss-cl/trunk/classloading/src/main/java/org/jboss/classloading/spi/metadata/helpers/ReflectionTranslator.java)
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/helpers/ReflectionTranslator.java	                        (rev 0)
+++ projects/jboss-cl/branches/Branch_2_2/classloading/src/main/java/org/jboss/classloading/spi/metadata/helpers/ReflectionTranslator.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -0,0 +1,59 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.classloading.spi.metadata.helpers;
+
+import java.lang.reflect.Method;
+import java.security.ProtectionDomain;
+
+import org.jboss.util.loading.Translator;
+
+/**
+ * Reflection based translator.
+ *
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class ReflectionTranslator implements Translator
+{
+   private Object translator;
+   private Method method;
+
+   public ReflectionTranslator(Object translator, String methodName) throws Exception
+   {
+      if (translator == null)
+         throw new IllegalArgumentException("Null translator");
+      if (methodName == null)
+         throw new IllegalArgumentException("Null method name");
+
+      this.translator = translator;
+      this.method = translator.getClass().getMethod(methodName, ClassLoader.class, String.class, Class.class, ProtectionDomain.class, byte[].class);
+   }
+
+   public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws Exception
+   {
+      return (byte[]) method.invoke(translator, loader, className, classBeingRedefined, protectionDomain, classfileBuffer);
+   }
+
+   public void unregisterClassLoader(ClassLoader loader)
+   {
+   }
+}

Modified: projects/jboss-cl/branches/Branch_2_2/classloading/src/test/java/org/jboss/test/classloading/metadata/MetaDataTestSuite.java
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloading/src/test/java/org/jboss/test/classloading/metadata/MetaDataTestSuite.java	2011-05-16 14:55:00 UTC (rev 111382)
+++ projects/jboss-cl/branches/Branch_2_2/classloading/src/test/java/org/jboss/test/classloading/metadata/MetaDataTestSuite.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -21,18 +21,30 @@
  */
 package org.jboss.test.classloading.metadata;
 
-import org.jboss.test.classloading.metadata.test.*;
-import org.jboss.test.classloading.metadata.xml.test.ClassLoadingDomainMetaDataXmlUnitTestCase;
-import org.jboss.test.classloading.metadata.xml.test.ClassLoadingMetaDataXmlUnitTestCase;
-
 import junit.framework.Test;
 import junit.framework.TestSuite;
 import junit.textui.TestRunner;
+import org.jboss.test.classloading.metadata.test.CapabilitiesMetaDataUnitTestCase;
+import org.jboss.test.classloading.metadata.test.ClassLoadingMetaDataFactoryUnitTestCase;
+import org.jboss.test.classloading.metadata.test.ClassLoadingMetaDataUnitTestCase;
+import org.jboss.test.classloading.metadata.test.ManagedObjectClassLoadingDomainMetaDataUnitTestCase;
+import org.jboss.test.classloading.metadata.test.ManagedObjectClassLoadingMetaDataUnitTestCase;
+import org.jboss.test.classloading.metadata.test.ModuleCapabilityUnitTestCase;
+import org.jboss.test.classloading.metadata.test.ModuleRequirementUnitTestCase;
+import org.jboss.test.classloading.metadata.test.NameAndVersionRangeUnitTestCase;
+import org.jboss.test.classloading.metadata.test.NameAndVersionUnitTestCase;
+import org.jboss.test.classloading.metadata.test.PackageCapabilityUnitTestCase;
+import org.jboss.test.classloading.metadata.test.PackageRequirementUnitTestCase;
+import org.jboss.test.classloading.metadata.test.RequirementsMetaDataUnitTestCase;
+import org.jboss.test.classloading.metadata.xml.test.ClassLoadingDomainMetaDataXmlUnitTestCase;
+import org.jboss.test.classloading.metadata.xml.test.ClassLoadingMetaDataXmlUnitTestCase;
+import org.jboss.test.classloading.metadata.xml.test.ClassLoadingTranslatorsMetaDataXmlUnitTestCase;
 
 /**
  * Version Test Suite.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
  * @version $Revision: 37459 $
  */
 public class MetaDataTestSuite extends TestSuite
@@ -70,6 +82,7 @@
       suite.addTest(ManagedObjectClassLoadingDomainMetaDataUnitTestCase.suite());
       suite.addTest(ClassLoadingMetaDataXmlUnitTestCase.suite());
       suite.addTest(ClassLoadingDomainMetaDataXmlUnitTestCase.suite());
+      suite.addTest(ClassLoadingTranslatorsMetaDataXmlUnitTestCase.suite());
 
       return suite;
    }

Copied: projects/jboss-cl/branches/Branch_2_2/classloading/src/test/java/org/jboss/test/classloading/metadata/xml/test/ClassLoadingTranslatorsMetaDataXmlUnitTestCase.java (from rev 111080, projects/jboss-cl/trunk/classloading/src/test/java/org/jboss/test/classloading/metadata/xml/test/ClassLoadingTranslatorsMetaDataXmlUnitTestCase.java)
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloading/src/test/java/org/jboss/test/classloading/metadata/xml/test/ClassLoadingTranslatorsMetaDataXmlUnitTestCase.java	                        (rev 0)
+++ projects/jboss-cl/branches/Branch_2_2/classloading/src/test/java/org/jboss/test/classloading/metadata/xml/test/ClassLoadingTranslatorsMetaDataXmlUnitTestCase.java	2011-05-16 14:55:53 UTC (rev 111383)
@@ -0,0 +1,73 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.classloading.metadata.xml.test;
+
+import java.util.List;
+
+import junit.framework.Test;
+import org.jboss.classloading.spi.metadata.ClassLoadingTranslatorMetaData;
+import org.jboss.classloading.spi.metadata.ClassLoadingTranslatorsMetaData;
+import org.jboss.classloading.spi.metadata.ClassLoadingTranslatorsMetaData10;
+import org.jboss.classloading.spi.metadata.TranslatorScope;
+import org.jboss.test.classloading.metadata.xml.AbstractJBossXBTest;
+
+/**
+ * ClassLoadingDomainMetaDataXmlUnitTestCase.
+ * 
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
+ */
+public class ClassLoadingTranslatorsMetaDataXmlUnitTestCase extends AbstractJBossXBTest
+{
+   public static Test suite()
+   {
+      return suite(ClassLoadingTranslatorsMetaDataXmlUnitTestCase.class);
+   }
+
+   public ClassLoadingTranslatorsMetaDataXmlUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public void testTranslators() throws Exception
+   {
+      ClassLoadingTranslatorsMetaData result = unmarshal();
+      assertNotNull(result);
+      List<ClassLoadingTranslatorMetaData> translators = result.getTranslators();
+      assertNotNull(translators);
+      assertEquals(3, translators.size());
+      assertEquals(translators.get(0), "org.jboss.acme.X", null, TranslatorScope.SYSTEM);
+      assertEquals(translators.get(1), "org.jboss.acme.X", null, TranslatorScope.DOMAIN);
+      assertEquals(translators.get(2), "org.jboss.acme.X", "bable", TranslatorScope.SYSTEM);
+   }
+
+   protected void assertEquals(ClassLoadingTranslatorMetaData translator, String className, String method, TranslatorScope scope)
+   {
+      assertEquals(className, translator.getClassName());
+      assertEquals(method, translator.getMethod());
+      assertEquals(scope, translator.getScope());
+   }
+
+   protected ClassLoadingTranslatorsMetaData unmarshal(Class<?>... extra) throws Exception
+   {
+      return unmarshalObject(ClassLoadingTranslatorsMetaData.class, ClassLoadingTranslatorsMetaData10.class, extra);
+   }
+}

Copied: projects/jboss-cl/branches/Branch_2_2/classloading/src/test/resources/org/jboss/test/classloading/metadata/xml/test/Translators.xml (from rev 111080, projects/jboss-cl/trunk/classloading/src/test/resources/org/jboss/test/classloading/metadata/xml/test/Translators.xml)
===================================================================
--- projects/jboss-cl/branches/Branch_2_2/classloading/src/test/resources/org/jboss/test/classloading/metadata/xml/test/Translators.xml	                        (rev 0)
+++ projects/jboss-cl/branches/Branch_2_2/classloading/src/test/resources/org/jboss/test/classloading/metadata/xml/test/Translators.xml	2011-05-16 14:55:53 UTC (rev 111383)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloading-translators xmlns="urn:jboss:classloading-translators:1.0" scope="SYSTEM">
+    <translator class="org.jboss.acme.X" />
+    <translator class="org.jboss.acme.X" scope="DOMAIN" />
+    <translator class="org.jboss.acme.X" method="bable" />
+</classloading-translators>


Property changes on: projects/jboss-cl/branches/Branch_2_2/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/test/NoopClassLoaderFactoryXMLUnitTestCase.java
___________________________________________________________________
Deleted: svn:mergeinfo
   - 



More information about the jboss-cvs-commits mailing list