[jboss-cvs] JBossAS SVN: r108847 - in projects/jboss-jca/trunk: common/src/main/java/org/jboss/jca/common/spi/annotations/repository and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sat Oct 23 11:25:38 EDT 2010
Author: jesper.pedersen
Date: 2010-10-23 11:25:37 -0400 (Sat, 23 Oct 2010)
New Revision: 108847
Removed:
projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/annotations/SecurityActions.java
Modified:
projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/annotations/Annotations.java
projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/spi/annotations/repository/Annotation.java
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java
projects/jboss-jca/trunk/deployers/src/test/java/org/jboss/jca/deployers/annotations/AnnotationsTestCase.java
projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/Validation.java
Log:
Don't use TCCL when looking up annotation definitions
Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/annotations/Annotations.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/annotations/Annotations.java 2010-10-23 11:54:48 UTC (rev 108846)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/annotations/Annotations.java 2010-10-23 15:25:37 UTC (rev 108847)
@@ -101,10 +101,11 @@
* Scan for annotations in the URLs specified
* @param connector The connector adapter metadata
* @param annotationRepository annotationRepository to use
+ * @param classLoader The class loader used to generate the repository
* @return The updated metadata
* @exception Exception Thrown if an error occurs
*/
- public Connector merge(Connector connector, AnnotationRepository annotationRepository)
+ public Connector merge(Connector connector, AnnotationRepository annotationRepository, ClassLoader classLoader)
throws Exception
{
// Process annotations
@@ -119,21 +120,21 @@
if (connector == null || !isMetadataComplete)
{
-
if (connector == null)
{
- Connector annotationsConnector = process(annotationRepository, null);
+ Connector annotationsConnector = process(annotationRepository, null, classLoader);
connector = annotationsConnector;
}
else
{
Connector annotationsConnector = process(annotationRepository,
- ((ResourceAdapter1516) connector.getResourceadapter()).getResourceadapterClass());
+ ((ResourceAdapter1516) connector.getResourceadapter()).getResourceadapterClass(),
+ classLoader);
connector = connector.merge(annotationsConnector);
}
}
+ }
- }
return connector;
}
@@ -141,10 +142,12 @@
* Process annotations
* @param annotationRepository The annotation repository
* @param xmlResourceAdapterClass resource adpater class name as define in xml
+ * @param classLoader The class loader used to generate the repository
* @return The updated metadata
* @exception Exception Thrown if an error occurs
*/
- public Connector process(AnnotationRepository annotationRepository, String xmlResourceAdapterClass)
+ public Connector process(AnnotationRepository annotationRepository, String xmlResourceAdapterClass,
+ ClassLoader classLoader)
throws Exception
{
if (annotationRepository == null)
@@ -162,7 +165,8 @@
*/
// @ConfigProperty handle at last
- Map<Metadatas, ArrayList<ConfigProperty16>> configPropertiesMap = processConfigProperty(annotationRepository);
+ Map<Metadatas, ArrayList<ConfigProperty16>> configPropertiesMap =
+ processConfigProperty(annotationRepository, classLoader);
// @ConnectionDefinitions
ArrayList<ConnectionDefinition> connectionDefinitions = processConnectionDefinitions(annotationRepository,
@@ -578,12 +582,13 @@
/**
* Process: @ConfigProperty
- * @param md The metadata
* @param annotationRepository The annotation repository
+ * @param classLoader The class loader to use
* @return The updated metadata
* @exception Exception Thrown if an error occurs
*/
- private Map<Metadatas, ArrayList<ConfigProperty16>> processConfigProperty(AnnotationRepository annotationRepository)
+ private Map<Metadatas, ArrayList<ConfigProperty16>> processConfigProperty(AnnotationRepository annotationRepository,
+ ClassLoader classLoader)
throws Exception
{
Map<Metadatas, ArrayList<ConfigProperty16>> valueMap = null;
@@ -610,7 +615,7 @@
}
else
{
- configPropertyType = new XsdString(getConfigPropertyType(annotation), null);
+ configPropertyType = new XsdString(getConfigPropertyType(annotation, classLoader), null);
}
Boolean configPropertySupportsDynamicUpdates = configPropertyAnnotation.supportsDynamicUpdates();
@@ -629,8 +634,7 @@
Boolean configPropertyIgnore = configPropertyAnnotation.ignore();
String attachedClassName = annotation.getClassName();
- ClassLoader cl = SecurityActions.getThreadContextClassLoader();
- Class attachedClass = Class.forName(attachedClassName, true, cl);
+ Class attachedClass = Class.forName(attachedClassName, true, classLoader);
if (hasInterface(attachedClass, "javax.resource.spi.ResourceAdapter"))
{
@@ -869,17 +873,18 @@
/**
* Get the config-property-type for an annotation
* @param annotation The annotation
+ * @param classLoader The class loader to use
* @return The fully qualified classname
* @exception ClassNotFoundException Thrown if a class cannot be found
*/
@SuppressWarnings("unchecked")
- private String getConfigPropertyType(Annotation annotation)
+ private String getConfigPropertyType(Annotation annotation,
+ ClassLoader classLoader)
throws ClassNotFoundException
{
if (annotation.isOnField())
{
- ClassLoader cl = SecurityActions.getThreadContextClassLoader();
- Class clz = Class.forName(annotation.getClassName(), true, cl);
+ Class clz = Class.forName(annotation.getClassName(), true, classLoader);
while (!Object.class.equals(clz))
{
@@ -897,8 +902,7 @@
}
else if (annotation.isOnMethod())
{
- ClassLoader cl = SecurityActions.getThreadContextClassLoader();
- Class clz = Class.forName(annotation.getClassName(), true, cl);
+ Class clz = Class.forName(annotation.getClassName(), true, classLoader);
Class[] parameters = null;
@@ -909,7 +913,7 @@
for (int i = 0; i < annotation.getParameterTypes().size(); i++)
{
String parameter = annotation.getParameterTypes().get(i);
- parameters[i] = Class.forName(parameter, true, cl);
+ parameters[i] = Class.forName(parameter, true, classLoader);
}
}
Deleted: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/annotations/SecurityActions.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/annotations/SecurityActions.java 2010-10-23 11:54:48 UTC (rev 108846)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/annotations/SecurityActions.java 2010-10-23 15:25:37 UTC (rev 108847)
@@ -1,110 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008-2009, 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.jca.common.annotations;
-
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-/**
- * Privileged Blocks
- * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
- */
-class SecurityActions
-{
- /**
- * Constructor
- */
- private SecurityActions()
- {
- }
-
- /**
- * Get the thread context class loader
- * @return The class loader
- */
- static ClassLoader getThreadContextClassLoader()
- {
- return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
- {
- @Override
- public ClassLoader run()
- {
- return Thread.currentThread().getContextClassLoader();
- }
- });
- }
-
- /**
- * Set the thread context class loader
- * @param cl The class loader
- */
- static void setThreadContextClassLoader(final ClassLoader cl)
- {
- AccessController.doPrivileged(new PrivilegedAction<Object>()
- {
- @Override
- public Object run()
- {
- Thread.currentThread().setContextClassLoader(cl);
- return null;
- }
- });
- }
-
- /**
- * Get a system property
- * @param name The property name
- * @return The property value
- */
- static String getSystemProperty(final String name)
- {
- return AccessController.doPrivileged(new PrivilegedAction<String>()
- {
- @Override
- public String run()
- {
- return System.getProperty(name);
- }
- });
- }
-
- /**
- * Create an URLClassLoader
- * @param urls The urls
- * @param parent The parent class loader
- * @return The class loader
- */
- static URLClassLoader createURLCLassLoader(final URL[] urls, final ClassLoader parent)
- {
- return AccessController.doPrivileged(new PrivilegedAction<URLClassLoader>()
- {
- @Override
- public URLClassLoader run()
- {
- return new URLClassLoader(urls, parent);
- }
- });
- }
-}
Modified: projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/spi/annotations/repository/Annotation.java
===================================================================
--- projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/spi/annotations/repository/Annotation.java 2010-10-23 11:54:48 UTC (rev 108846)
+++ projects/jboss-jca/trunk/common/src/main/java/org/jboss/jca/common/spi/annotations/repository/Annotation.java 2010-10-23 15:25:37 UTC (rev 108847)
@@ -32,54 +32,40 @@
*/
public interface Annotation
{
-
/**
- *
- * get the class Name of this annotation
- *
+ * Get the class Name of this annotation
* @return the classname
*/
public String getClassName();
/**
- *
* Get the Annotation Object
- *
- * @return te java.lang.Annotation instance
+ * @return the java.lang.Annotation instance
*/
public Object getAnnotation();
/**
- *
- * get the list of parameters type for this annotation
- *
+ * Get the list of parameters type for this annotation
* @return list of parameters types
*/
public List<String> getParameterTypes();
/**
- *
- * get the member name
- *
+ * Get the member name
* @return member name
*/
public String getMemberName();
/**
- *
- * check if the annotation is on a method
- *
+ * Check if the annotation is on a method
* @return true if the annotation is attached to a method
*/
- boolean isOnMethod();
+ public boolean isOnMethod();
/**
- *
- * check if the annotation is on a field
- *
+ * Check if the annotation is on a field
* @return true if the annotation is attached to a field
*/
- boolean isOnField();
-
+ public boolean isOnField();
}
Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java 2010-10-23 11:54:48 UTC (rev 108846)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java 2010-10-23 15:25:37 UTC (rev 108847)
@@ -148,7 +148,7 @@
Annotations annotator = new Annotations();
AnnotationScanner scanner = AnnotationScannerFactory.getAnnotationScanner();
AnnotationRepository repository = scanner.scan(cl.getURLs(), cl);
- cmd = annotator.merge(cmd, repository);
+ cmd = annotator.merge(cmd, repository, cl);
// Validate metadata
cmd.validate();
Modified: projects/jboss-jca/trunk/deployers/src/test/java/org/jboss/jca/deployers/annotations/AnnotationsTestCase.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/test/java/org/jboss/jca/deployers/annotations/AnnotationsTestCase.java 2010-10-23 11:54:48 UTC (rev 108846)
+++ projects/jboss-jca/trunk/deployers/src/test/java/org/jboss/jca/deployers/annotations/AnnotationsTestCase.java 2010-10-23 15:25:37 UTC (rev 108847)
@@ -80,7 +80,7 @@
@Test(expected = ValidateException.class)
public void testProcessNullArguments() throws Throwable
{
- annotations.process(null, null);
+ annotations.process(null, null, null);
}
/**
@@ -90,7 +90,7 @@
@Test(expected = ValidateException.class)
public void testProcessNullAnnotationRepository() throws Throwable
{
- annotations.process(null, null);
+ annotations.process(null, null, null);
}
@@ -104,12 +104,12 @@
{
try
{
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = getURL("ra16inoutanno.rar");
- System.out.println(url);
AnnotationScanner asf = new AnnotationScannerImpl();
- AnnotationRepository ar = asf.scan(new URL[] {url}, Thread.currentThread().getContextClassLoader());
+ AnnotationRepository ar = asf.scan(new URL[] {url}, classLoader);
- annotations.process(ar, null);
+ annotations.process(ar, null, classLoader);
}
catch (Throwable t)
{
@@ -127,11 +127,12 @@
{
try
{
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = getURL("rafail2connector.rar");
AnnotationScanner asf = new AnnotationScannerImpl();
- AnnotationRepository ar = asf.scan(new URL[] {url}, Thread.currentThread().getContextClassLoader());
+ AnnotationRepository ar = asf.scan(new URL[] {url}, classLoader);
- annotations.process(ar, null);
+ annotations.process(ar, null, classLoader);
fail("Success");
}
@@ -150,11 +151,12 @@
{
try
{
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = getURL("ra16annoconndefs.rar");
AnnotationScanner asf = new AnnotationScannerImpl();
- AnnotationRepository ar = asf.scan(new URL[] {url}, Thread.currentThread().getContextClassLoader());
+ AnnotationRepository ar = asf.scan(new URL[] {url}, classLoader);
- annotations.process(ar, null);
+ annotations.process(ar, null, classLoader);
}
catch (Throwable t)
{
@@ -173,11 +175,12 @@
{
try
{
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = getURL("ra16annoconndef.rar");
AnnotationScanner asf = new AnnotationScannerImpl();
- AnnotationRepository ar = asf.scan(new URL[] {url}, Thread.currentThread().getContextClassLoader());
+ AnnotationRepository ar = asf.scan(new URL[] {url}, classLoader);
- annotations.process(ar, null);
+ annotations.process(ar, null, classLoader);
}
catch (Throwable t)
{
@@ -194,11 +197,12 @@
{
try
{
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = getURL("ra16annoactiv.rar");
AnnotationScanner asf = new AnnotationScannerImpl();
- AnnotationRepository ar = asf.scan(new URL[] {url}, Thread.currentThread().getContextClassLoader());
+ AnnotationRepository ar = asf.scan(new URL[] {url}, classLoader);
- annotations.process(ar, null);
+ annotations.process(ar, null, classLoader);
}
catch (Throwable t)
{
@@ -215,11 +219,12 @@
{
try
{
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = getURL("ra16annoauthmech.rar");
AnnotationScanner asf = new AnnotationScannerImpl();
- AnnotationRepository ar = asf.scan(new URL[] {url}, Thread.currentThread().getContextClassLoader());
+ AnnotationRepository ar = asf.scan(new URL[] {url}, classLoader);
- annotations.process(ar, null);
+ annotations.process(ar, null, classLoader);
}
catch (Throwable t)
{
@@ -236,11 +241,12 @@
{
try
{
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = getURL("ra16annoadminobj.rar");
AnnotationScanner asf = new AnnotationScannerImpl();
- AnnotationRepository ar = asf.scan(new URL[] {url}, Thread.currentThread().getContextClassLoader());
+ AnnotationRepository ar = asf.scan(new URL[] {url}, classLoader);
- annotations.process(ar, null);
+ annotations.process(ar, null, classLoader);
}
catch (Throwable t)
{
@@ -257,11 +263,12 @@
{
try
{
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = getURL("ra16annoconfprop.rar");
AnnotationScanner asf = new AnnotationScannerImpl();
- AnnotationRepository ar = asf.scan(new URL[] {url}, Thread.currentThread().getContextClassLoader());
+ AnnotationRepository ar = asf.scan(new URL[] {url}, classLoader);
- annotations.process(ar, null);
+ annotations.process(ar, null, classLoader);
}
catch (Throwable t)
{
Modified: projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/Validation.java
===================================================================
--- projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/Validation.java 2010-10-23 11:54:48 UTC (rev 108846)
+++ projects/jboss-jca/trunk/validator/src/main/java/org/jboss/jca/validator/Validation.java 2010-10-23 15:25:37 UTC (rev 108847)
@@ -146,7 +146,7 @@
Annotations annotator = new Annotations();
AnnotationScanner scanner = AnnotationScannerFactory.getAnnotationScanner();
AnnotationRepository repository = scanner.scan(cl.getURLs(), cl);
- cmd = annotator.merge(cmd, repository);
+ cmd = annotator.merge(cmd, repository, cl);
List<Validate> validateClasses = new ArrayList<Validate>();
List<Failure> failures = new ArrayList<Failure>();
More information about the jboss-cvs-commits
mailing list