[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