You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by sc...@apache.org on 2008/03/22 14:17:56 UTC

svn commit: r639992 - /webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/catalog/impl/OASISCatalogManager.java

Author: scheu
Date: Sat Mar 22 06:17:56 2008
New Revision: 639992

URL: http://svn.apache.org/viewvc?rev=639992&view=rev
Log:
Quick addition of doPriv calls to OASISCatalogManager.

Modified:
    webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/catalog/impl/OASISCatalogManager.java

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/catalog/impl/OASISCatalogManager.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/catalog/impl/OASISCatalogManager.java?rev=639992&r1=639991&r2=639992&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/catalog/impl/OASISCatalogManager.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/catalog/impl/OASISCatalogManager.java Sat Mar 22 06:17:56 2008
@@ -28,6 +28,8 @@
 import java.lang.reflect.Method;
 import java.net.URL;
 import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
 import java.util.logging.Logger;
 
 /**
@@ -117,16 +119,16 @@
 
     private String determineFileName() {
 
-    	ClassLoader classLoader = findClassLoader();
-    	// try web app WEB-INF first
-    	URL url = classLoader.getResource(DEFAULT_CATALOG_WEB);
-    	if (url != null) {
-    		return url.toString();
-    	}
-    	// have not returned -- perhaps we're in an EJB?
-    	url = classLoader.getResource(DEFAULT_CATALOG_EJB);
-    	return url == null? null: url.toString();
-    	
+        ClassLoader classLoader = findClassLoader();
+        // try web app WEB-INF first
+        URL url = classLoader.getResource(DEFAULT_CATALOG_WEB);
+        if (url != null) {
+            return url.toString();
+        }
+        // have not returned -- perhaps we're in an EJB?
+        url = classLoader.getResource(DEFAULT_CATALOG_EJB);
+        return url == null? null: url.toString();
+
     }
     
     /**
@@ -135,41 +137,50 @@
      * This method returns an instance of the underlying catalog class.
      */
     public Catalog getPrivateCatalog() {
-        Catalog catalog = staticCatalog;
-        boolean useStatic = super.getUseStaticCatalog();
-
-        if (catalog == null || !useStatic) {
-            try {
-  	            String catalogClassName = getCatalogClassName();
-  	            if (catalogClassName == null) {
-  	                catalog = new Catalog();
-  	            } else {
-  	                try {
-  	                    catalog = (Catalog) Class.forName(catalogClassName).newInstance();
-  	                } catch (ClassNotFoundException cnfe) {
-  	                    debug.message(1,"Catalog class named '"
-  			                          + catalogClassName
-  			                          + "' could not be found. Using default.");
-  	                    catalog = new Catalog();
-  	                } catch (ClassCastException cnfe) {
-  	                    debug.message(1,"Class named '"
-  			                          + catalogClassName
-  			                          + "' is not a Catalog. Using default.");
-  	                    catalog = new Catalog();
-  	                }
-  	            }
-
-  	            catalog.setCatalogManager(this);
-  	            catalog.setupReaders();
-  	            catalog.loadSystemCatalogs();
-            } catch (Exception ex) {
-  	            ex.printStackTrace();
-            }
-
-  	        staticCatalog = catalog;
+        try {
+            final CatalogManager cm = this;
+            Catalog catalog = 
+                (Catalog) AccessController.
+                doPrivileged(new PrivilegedExceptionAction() {
+                    public Object run() throws Exception {
+                        Catalog catalog = staticCatalog;
+                        boolean useStatic = cm.getUseStaticCatalog();
+
+                        if (catalog == null || !useStatic) {
+
+                            String catalogClassName = getCatalogClassName();
+                            if (catalogClassName == null) {
+                                catalog = new Catalog();
+                            } else {
+                                try {
+                                    catalog = (Catalog) Class.forName(catalogClassName).newInstance();
+                                } catch (ClassNotFoundException cnfe) {
+                                    debug.message(1,"Catalog class named '"
+                                                  + catalogClassName
+                                                  + "' could not be found. Using default.");
+                                    catalog = new Catalog();
+                                } catch (ClassCastException cnfe) {
+                                    debug.message(1,"Class named '"
+                                                  + catalogClassName
+                                                  + "' is not a Catalog. Using default.");
+                                    catalog = new Catalog();
+                                }
+                            }
+
+                            catalog.setCatalogManager(cm);
+                            catalog.setupReaders();
+                            catalog.loadSystemCatalogs();
+                        }
+                        return catalog;
+                    }});
+            staticCatalog = catalog;
+            return catalog;
+        } catch (PrivilegedActionException pae) {
+            // The Catch and swallow
+            debug.message(1,"getPrivateCatatalog failed.  " +
+                        "Processing continues " + pae.getException());
         }
-
-        return catalog;
+        return null;
     }
     
     /**
@@ -192,25 +203,29 @@
      *                            host JDK
      */
     private static ClassLoader findClassLoader() {
-		// REVIEW need a doPriv block?
-
-		Method m = null;
-
-		try {
 
-			m = Thread.class.getMethod("getContextClassLoader", (Class[]) null);
-		} catch (NoSuchMethodException e) {
-			// Assume that we are running JDK 1.1, use the current ClassLoader
-			// TODO print debug statement about assuming JDK 1.1
-			return OASISCatalogManager.class.getClassLoader();
-		}
-		try {
-			return (ClassLoader) m.invoke(Thread.currentThread(),
-					(Object[]) null);
-		} catch (Exception x) {
-			throw ExceptionFactory.makeWebServiceException(x);
-		}
-
-	}
+        try {
+            ClassLoader cl = 
+                (ClassLoader) AccessController.
+                doPrivileged(new PrivilegedExceptionAction() {
+                    public Object run() throws Exception {
+                        Method m = null;
+
+                        try {
+                            m = Thread.class.getMethod("getContextClassLoader", (Class[]) null);
+                        } catch (NoSuchMethodException e) {
+                            // Assume that we are running JDK 1.1, use the current ClassLoader
+                            // TODO print debug statement about assuming JDK 1.1
+                            return OASISCatalogManager.class.getClassLoader();
+                        }
+                        return (ClassLoader) m.invoke(Thread.currentThread(),
+                                                      (Object[]) null);
+                    }}
+                );
+            return cl;
+        } catch (PrivilegedActionException pae) {
+            throw ExceptionFactory.makeWebServiceException(pae.getException());
+        }
+    }
    
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org