[Jboss-cvs] JBossAS SVN: r56373 - branches/MC_VDF_WORK/j2se/src/main/org/jboss/mx/loading

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Aug 28 20:43:11 EDT 2006


Author: scott.stark at jboss.org
Date: 2006-08-28 20:43:09 -0400 (Mon, 28 Aug 2006)
New Revision: 56373

Added:
   branches/MC_VDF_WORK/j2se/src/main/org/jboss/mx/loading/LoaderRepositoryDomain.java
Removed:
   branches/MC_VDF_WORK/j2se/src/main/org/jboss/mx/loading/LoaderRepository.java
Log:
Port of legacy LoaderRepository to a ClassLoadingDomain

Deleted: branches/MC_VDF_WORK/j2se/src/main/org/jboss/mx/loading/LoaderRepository.java
===================================================================
--- branches/MC_VDF_WORK/j2se/src/main/org/jboss/mx/loading/LoaderRepository.java	2006-08-29 00:41:15 UTC (rev 56372)
+++ branches/MC_VDF_WORK/j2se/src/main/org/jboss/mx/loading/LoaderRepository.java	2006-08-29 00:43:09 UTC (rev 56373)
@@ -1,288 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.mx.loading;
-
-import EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap;
-import org.jboss.logging.Logger;
-import org.jboss.mx.server.ServerConstants;
-import org.jboss.util.loading.Translator;
-
-import javax.management.loading.ClassLoaderRepository;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Vector;
-
-/**
- * Abstract base class of all loader repository implementations
- * 
- * @see org.jboss.mx.loading.BasicLoaderRepository
- *
- * @author  <a href="mailto:juha at jboss.org">Juha Lindfors</a>.
- * @version $Revision$
- */
-public abstract class LoaderRepository
-   implements ServerConstants, ClassLoaderRepository
-{
-
-   // Attributes ----------------------------------------------------
-   protected static Vector loaders = new Vector();
-   protected static LoaderRepository instance = null;
-   protected Translator translator = null;
-
-   /** The loaded classes cache, HashMap<String, Class>.
-    * Access synchronized via this.classes monitor.
-    */
-   private ConcurrentReaderHashMap classes = new ConcurrentReaderHashMap();
-
-
-   /**
-    * Native signature to class map
-    */
-   private static HashMap nativeClassBySignature;
-
-   // Static --------------------------------------------------------
-   private static final Logger log = Logger.getLogger(LoaderRepository.class);
-
-   /**
-    * Construct the native class map
-    */
-   static
-   {
-      nativeClassBySignature = new HashMap();
-      nativeClassBySignature.put("boolean", boolean.class);
-      nativeClassBySignature.put("byte", byte.class);
-      nativeClassBySignature.put("char", char.class);
-      nativeClassBySignature.put("double", double.class);
-      nativeClassBySignature.put("float", float.class);
-      nativeClassBySignature.put("int", int.class);
-      nativeClassBySignature.put("long", long.class);
-      nativeClassBySignature.put("short", short.class);
-      nativeClassBySignature.put("void", void.class);
-
-      nativeClassBySignature.put("boolean[]", boolean[].class);
-      nativeClassBySignature.put("byte[]", byte[].class);
-      nativeClassBySignature.put("char[]", char[].class);
-      nativeClassBySignature.put("double[]", double[].class);
-      nativeClassBySignature.put("float[]", float[].class);
-      nativeClassBySignature.put("int[]", int[].class);
-      nativeClassBySignature.put("long[]", long[].class);
-      nativeClassBySignature.put("short[]", short[].class);
-   }
-
-   // Public --------------------------------------------------------
-   public Vector getLoaders()
-   {
-      return loaders;
-   }
-
-   public URL[] getURLs()
-   {
-      return null;
-   }
-
-   public Class getCachedClass(String classname)
-   {
-       return (Class)classes.get(classname);
-   }
-
-   public Translator getTranslator()
-   {
-      return translator;
-   }
-
-   public void setTranslator(Translator t)
-   {
-      translator = t;
-   }
-
-   /**
-    * Compare two loader repository, by default we do no special ordering
-    * 
-    * @param lr the loader repository
-    * @return -1, 0, 1 depending upon the order
-    */
-   public int compare(LoaderRepository lr)
-   {
-      if (lr == this)
-         return 0;
-      else
-         return -lr.reverseCompare(this);
-   }
-   
-   // BEGIN ClassLoaderRepository **************************************************************************************
-
-   /**
-    * Loads a class from the repository. This method attempts to load the class
-    * using all the classloader registered to the repository.
-    *
-    * @param className the class to load
-    * @return the found class
-    * @exception ClassNotFoundException when there is no such class
-    */
-   public abstract Class loadClass(String className) throws ClassNotFoundException;
-
-   /**
-    * Loads a class from the repository, excluding the given
-    * classloader.
-    *
-    * @param loader the classloader to exclude
-    * @param className the class to load
-    * @return the found class
-    * @exception ClassNotFoundException when there is no such class
-    */
-   public abstract Class loadClassWithout(ClassLoader loader, String className) throws ClassNotFoundException;
-
-   /**
-    * Loads a class from the repository, using the classloaders that were
-    * registered before the given classloader.
-    *
-    * @param   stop      consult all the classloaders registered before this one
-    *                    in an attempt to load a class
-    * @param   className name of the class to load
-    *
-    * @return  loaded class instance
-    *
-    * @throws ClassNotFoundException if none of the consulted classloaders were
-    *         able to load the requested class
-    */
-   public abstract Class loadClassBefore(ClassLoader stop, String className) throws ClassNotFoundException;
-
-   // END ClassLoaderRepository ****************************************************************************************
-
-   /** Create RepositoryClassLoader and optionally add it to the repository
-    * @param url the URL to use for class loading
-    * @param addToRepository a flag indicating if the CL should be added to
-    *    the repository
-    * @return the UCL instance
-    * @throws Exception
-    */
-   public abstract RepositoryClassLoader newClassLoader(final URL url, boolean addToRepository)
-      throws Exception;
-   /** Create RepositoryClassLoader and optionally add it to the repository
-    * @param url the URL to use for class loading
-    * @param origURL an orignal URL to use as the URL for the CL CodeSource.
-    * This is useful when the url is a local copy that is difficult to use for
-    * security policy writing.
-    * @param addToRepository a flag indicating if the CL should be added to
-    *    the repository
-    * @return the CL instance
-    * @throws Exception
-    */
-   public abstract RepositoryClassLoader newClassLoader(final URL url, final URL origURL,
-      boolean addToRepository)
-      throws Exception;
-
-   /** Load the given class from the repository
-    * @param name
-    * @param resolve
-    * @param cl
-    * @return
-    * @throws ClassNotFoundException
-    */
-   public abstract Class loadClass(String name, boolean resolve, ClassLoader cl)
-      throws ClassNotFoundException;
-
-   /** Find a resource URL for the given name
-    *
-    * @param name the resource name
-    * @param cl the requesting class loader
-    * @return The resource URL if found, null otherwise
-    */
-   public abstract URL getResource(String name, ClassLoader cl);
-   /** Find all resource URLs for the given name. Since this typically
-    * entails an exhuastive search of the repository it can be a relatively
-    * slow operation.
-    *
-    * @param name the resource name
-    * @param cl the requesting class loader
-    * @param urls a list into which the located resource URLs will be placed
-    */
-   public abstract void getResources(String name, ClassLoader cl, List urls);
-
-   /** Add a class loader to the repository
-    */
-   public abstract void addClassLoader(ClassLoader cl);
-   /** Update the set of URLs known to be associated with a previously added
-    * class loader.
-    *
-    * @param cl
-    * @param url
-    */
-   public abstract boolean addClassLoaderURL(ClassLoader cl, URL url);
-   /** Remove a cladd loader from the repository.
-    * @param cl
-    */
-   public abstract void removeClassLoader(ClassLoader cl);
-
-   /**
-    * Return the class of a java native type
-    * @return the class, or null if className is not a native class name
-    */
-   public static final Class getNativeClassForName(String className)
-   {
-      // Check for native classes
-      return (Class)nativeClassBySignature.get(className);
-   }
-
-   /**
-    * Allow subclasses to override the ordering
-    * 
-    * @param lr the loader repository
-    * @return -1, 0, 1 depending upon the order
-    */
-   protected int reverseCompare(LoaderRepository lr)
-   {
-      return 0;
-   }
-
-   /**
-    * Add a class to the the cache
-    */
-   void cacheLoadedClass(String name, Class cls, ClassLoader cl)
-   {
-       synchronized( classes )
-       {
-          // Update the global cache
-          classes.put(name, cls);
-          if( log.isTraceEnabled() )
-          {
-             log.trace("cacheLoadedClass, classname: "+name+", class: "+cls
-                +", cl: "+cl);
-          }
-
-           /**
-            * TODO: Adding this implementation is a hack for jmx 1.2 checkin.
-            * Had to add this because need getCachedClass() to work.
-            * However, this method does not add loaded classes to collection
-            * to be unloaded when called to remove classloader.
-            * Hopefully this will be a short term workaround.
-            * Contact telrod at e2technologies.net if you have questions. -TME
-            */
-       }
-   }
-
-   void clear()
-   {
-      classes.clear();
-   }
-}

Copied: branches/MC_VDF_WORK/j2se/src/main/org/jboss/mx/loading/LoaderRepositoryDomain.java (from rev 56372, branches/MC_VDF_WORK/j2se/src/main/org/jboss/mx/loading/LoaderRepository.java)




More information about the jboss-cvs-commits mailing list