svn commit: r749893 - in /ofbiz/trunk/framework: base/src/org/ofbiz/base/util/ entity/src/META-INF/ entity/src/META-INF/services/ entity/src/org/ofbiz/entity/util/

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r749893 - in /ofbiz/trunk/framework: base/src/org/ofbiz/base/util/ entity/src/META-INF/ entity/src/META-INF/services/ entity/src/org/ofbiz/entity/util/

doogie-3
Author: doogie
Date: Wed Mar  4 04:21:13 2009
New Revision: 749893

URL: http://svn.apache.org/viewvc?rev=749893&view=rev
Log:
Move some entity-specific code out of base, by making use of
javax.imageio.spi.ServiceRegistry, and META-INF/services.

Added:
    ofbiz/trunk/framework/entity/src/META-INF/
    ofbiz/trunk/framework/entity/src/META-INF/services/
    ofbiz/trunk/framework/entity/src/META-INF/services/org.ofbiz.base.util.CachedClassLoader$Init
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/CachedClassLoaderInit.java
Modified:
    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/CachedClassLoader.java

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/CachedClassLoader.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/CachedClassLoader.java?rev=749893&r1=749892&r2=749893&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/CachedClassLoader.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/CachedClassLoader.java Wed Mar  4 04:21:13 2009
@@ -22,7 +22,9 @@
 import java.net.URLClassLoader;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.Map;
+import javax.imageio.spi.ServiceRegistry;
 
 /**
  * Caching Class Loader
@@ -30,6 +32,10 @@
  */
 public class CachedClassLoader extends URLClassLoader {
     
+    public interface Init {
+        void loadClasses(ClassLoader loader, Map<String, Class<?>> classNameMap) throws ClassNotFoundException;
+    }
+
     public static final String module = CachedClassLoader.class.getName();
     
     private String contextName;
@@ -107,18 +113,16 @@
         globalClassNameClassMap.put("byte", Byte.TYPE);
         globalClassNameClassMap.put("char", Character.TYPE);
 
-        try {
-            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
 
-            // note: loadClass is necessary for these since this class doesn't know anything about the Entity Engine at compile time
-            globalClassNameClassMap.put("GenericValue", loader.loadClass("org.ofbiz.entity.GenericValue"));
-            globalClassNameClassMap.put("org.ofbiz.entity.GenericValue", loader.loadClass("org.ofbiz.entity.GenericValue"));
-            globalClassNameClassMap.put("GenericPK", loader.loadClass("org.ofbiz.entity.GenericPK"));
-            globalClassNameClassMap.put("org.ofbiz.entity.GenericPK", loader.loadClass("org.ofbiz.entity.GenericPK"));
-            globalClassNameClassMap.put("GenericEntity", loader.loadClass("org.ofbiz.entity.GenericEntity"));
-            globalClassNameClassMap.put("org.ofbiz.entity.GenericEntity", loader.loadClass("org.ofbiz.entity.GenericEntity"));
-        } catch (ClassNotFoundException e) {
-            Debug.logError(e, "Could not pre-initialize dynamically loaded class: ", module);
+        Iterator<Init> cachedClassLoaders = ServiceRegistry.lookupProviders(Init.class, loader);
+        while (cachedClassLoaders.hasNext()) {
+            Init cachedClassLoader = cachedClassLoaders.next();
+            try {
+                cachedClassLoader.loadClasses(loader, globalClassNameClassMap);
+            } catch (ClassNotFoundException e) {
+                Debug.logError(e, "Could not pre-initialize dynamically loaded class: ", module);
+            }
         }
     }
         

Added: ofbiz/trunk/framework/entity/src/META-INF/services/org.ofbiz.base.util.CachedClassLoader$Init
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/META-INF/services/org.ofbiz.base.util.CachedClassLoader%24Init?rev=749893&view=auto
==============================================================================
--- ofbiz/trunk/framework/entity/src/META-INF/services/org.ofbiz.base.util.CachedClassLoader$Init (added)
+++ ofbiz/trunk/framework/entity/src/META-INF/services/org.ofbiz.base.util.CachedClassLoader$Init Wed Mar  4 04:21:13 2009
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+org.ofbiz.entity.util.CachedClassLoaderInit

Added: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/CachedClassLoaderInit.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/CachedClassLoaderInit.java?rev=749893&view=auto
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/CachedClassLoaderInit.java (added)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/CachedClassLoaderInit.java Wed Mar  4 04:21:13 2009
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.ofbiz.entity.util;
+
+import java.util.Map;
+
+import org.ofbiz.base.util.CachedClassLoader;
+
+public class CachedClassLoaderInit implements CachedClassLoader.Init {
+    public void loadClasses(ClassLoader loader, Map<String, Class<?>> classNameMap) throws ClassNotFoundException {
+        classNameMap.put("GenericValue", loader.loadClass("org.ofbiz.entity.GenericValue"));
+        classNameMap.put("org.ofbiz.entity.GenericValue", loader.loadClass("org.ofbiz.entity.GenericValue"));
+        classNameMap.put("GenericPK", loader.loadClass("org.ofbiz.entity.GenericPK"));
+        classNameMap.put("org.ofbiz.entity.GenericPK", loader.loadClass("org.ofbiz.entity.GenericPK"));
+        classNameMap.put("GenericEntity", loader.loadClass("org.ofbiz.entity.GenericEntity"));
+        classNameMap.put("org.ofbiz.entity.GenericEntity", loader.loadClass("org.ofbiz.entity.GenericEntity"));
+    }
+}