[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