[jboss-svn-commits] JBL Code SVN: r7393 - in labs/shotoku/trunk: shotoku-base/src/java/org/jboss/shotoku shotoku-base/src/java/org/jboss/shotoku/cache shotoku-base/src/java/org/jboss/shotoku/tools shotoku-feeds/src/java/org/jboss/shotoku/feeds/portlet shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables shotoku-file-access/src/java/org/jboss/shotoku/fileaccess shotoku-jcr/src/java/org/jboss/shotoku/jcr shotoku-svn/src/java/org/jboss/shotoku/svn shotoku-tags/src/java/org/jboss/shotoku/tags/tools shotoku-test/src/java/org/jboss/shotoku/test/embedded shotoku-user/src/java/org/jboss/shotoku/user/tools

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Nov 3 19:39:34 EST 2006


Author: adamw
Date: 2006-11-03 19:39:19 -0500 (Fri, 03 Nov 2006)
New Revision: 7393

Modified:
   labs/shotoku/trunk/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java
   labs/shotoku/trunk/shotoku-base/src/java/org/jboss/shotoku/cache/ShotokuCacheItem.java
   labs/shotoku/trunk/shotoku-base/src/java/org/jboss/shotoku/tools/Tools.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/portlet/FeedsViewPortlet.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/FeedsTools.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/VariableResolverManager.java
   labs/shotoku/trunk/shotoku-file-access/src/java/org/jboss/shotoku/fileaccess/FileAccessConfiguration.java
   labs/shotoku/trunk/shotoku-jcr/src/java/org/jboss/shotoku/jcr/JcrContentManager.java
   labs/shotoku/trunk/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnTools.java
   labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/TagTools.java
   labs/shotoku/trunk/shotoku-test/src/java/org/jboss/shotoku/test/embedded/SATest.java
   labs/shotoku/trunk/shotoku-user/src/java/org/jboss/shotoku/user/tools/UserTools.java
Log:
http://jira.jboss.com/jira/browse/JBSHOTOKU-102 & http://jira.jboss.com/jira/browse/JBSHOTOKU-103

Modified: labs/shotoku/trunk/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java
===================================================================
--- labs/shotoku/trunk/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java	2006-11-04 00:39:03 UTC (rev 7392)
+++ labs/shotoku/trunk/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java	2006-11-04 00:39:19 UTC (rev 7393)
@@ -626,7 +626,7 @@
     public synchronized static void initializeContentManager(String implementation) {
         if (!initializedContentManagers.contains(implementation)) {
             try {
-                Class implClass = Class.forName(implementation);
+                Class implClass = Thread.currentThread().getContextClassLoader().loadClass(implementation);
 
                 // Executing the setup function.
                 try {

Modified: labs/shotoku/trunk/shotoku-base/src/java/org/jboss/shotoku/cache/ShotokuCacheItem.java
===================================================================
--- labs/shotoku/trunk/shotoku-base/src/java/org/jboss/shotoku/cache/ShotokuCacheItem.java	2006-11-04 00:39:03 UTC (rev 7392)
+++ labs/shotoku/trunk/shotoku-base/src/java/org/jboss/shotoku/cache/ShotokuCacheItem.java	2006-11-04 00:39:19 UTC (rev 7393)
@@ -46,7 +46,6 @@
     private String keyBase;
     private ConcurrentSet<K> keys;
     private ConcurrentSet<K> keysDuringUpdate;
-    private final Object synchronizer = new Object();
     private final Map<K, ContentManager> cmForKeys = new HashMap<K, ContentManager>();
     private long lastUpdate;
     private long interval;
@@ -102,22 +101,15 @@
      * @return Value of the object.
      */
     public final T get(K key) {
-        if (!keys.contains(key)) {
-            synchronized(synchronizer) {
-                /*
-                 * Checking again, in case multiple threads try to create
-                 * the object. We want to let only the first one to do it,
-                 * but block as little as possible.
-                 */
-                if (!keys.contains(key)) {
-                    T ret = init(key);
-                    ShotokuCache.put(createKey(key), ret);
+        synchronized(this) {
+            if (!keys.contains(key)) {
+                T ret = init(key);
+                ShotokuCache.put(createKey(key), ret);
 
-                    // We have to initialize a new object.
-                    keys.add(key);
+                // We have to initialize a new object.
+                keys.add(key);
 
-                    return ret;
-                }
+                return ret;
             }
         }
 

Modified: labs/shotoku/trunk/shotoku-base/src/java/org/jboss/shotoku/tools/Tools.java
===================================================================
--- labs/shotoku/trunk/shotoku-base/src/java/org/jboss/shotoku/tools/Tools.java	2006-11-04 00:39:03 UTC (rev 7392)
+++ labs/shotoku/trunk/shotoku-base/src/java/org/jboss/shotoku/tools/Tools.java	2006-11-04 00:39:19 UTC (rev 7393)
@@ -46,7 +46,7 @@
 
 /**
  * Utility, helper functions used internally.
- * 
+ *
  * @author Adam Warski (adamw at aster.pl)
  */
 public class Tools {
@@ -54,8 +54,8 @@
 
     public static ShotokuService getService() {
         try {
-            if (instance == null) {
-                synchronized (Tools.class) {
+            synchronized (Tools.class) {
+                if (instance == null) {
                     if (ContentManager.isEmbedded()) {
                         // Embedded mode - simply creating a new service instance.
                         instance = new ShotokuServiceImpl();
@@ -340,7 +340,7 @@
         if (link == null) {
             return false;
         }
-        
+
         link = link.trim();
         return link.startsWith("http:") || link.startsWith("ftp:")
                 || link.startsWith("https:") || link.startsWith("mailto:")

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/portlet/FeedsViewPortlet.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/portlet/FeedsViewPortlet.java	2006-11-04 00:39:03 UTC (rev 7392)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/portlet/FeedsViewPortlet.java	2006-11-04 00:39:19 UTC (rev 7393)
@@ -92,7 +92,8 @@
         super.init(portletConfig);
 
         try {
-            vfg = (ViewFeedGetter) Class.forName(FeedsTools.getService().
+            vfg = (ViewFeedGetter) Thread.currentThread().getContextClassLoader().loadClass(
+                    FeedsTools.getService().
                     getProperty(getId(), FeedsConstants.VIEW_FEED_GETTER)).
                     newInstance();
         } catch (Exception e) {

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/FeedsTools.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/FeedsTools.java	2006-11-04 00:39:03 UTC (rev 7392)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tools/FeedsTools.java	2006-11-04 00:39:19 UTC (rev 7393)
@@ -42,7 +42,8 @@
                 try {
                     initial.put(
                             key.substring(FeedDefAttributes.CLASS_ATTR_PREFIX.length()),
-                            Class.forName(attributes.get(key)).newInstance());
+                            Thread.currentThread().getContextClassLoader().loadClass(
+                                    attributes.get(key)).newInstance());
                 } catch (Exception e) {
                     log.error("Exception while loading a class to the " +
                             "velocity context: " + key, e);

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/VariableResolverManager.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/VariableResolverManager.java	2006-11-04 00:39:03 UTC (rev 7392)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/variables/VariableResolverManager.java	2006-11-04 00:39:19 UTC (rev 7393)
@@ -28,7 +28,8 @@
             Class varResolverClass;
 
             try {
-                varResolverClass = Class.forName(props.getProperty(id + FeedsConstants.ONE_VAR + variable));
+                varResolverClass = Thread.currentThread().getContextClassLoader().loadClass(
+                        props.getProperty(id + FeedsConstants.ONE_VAR + variable));
             } catch (ClassNotFoundException e) {
                 log.error("Variable resolver class " + props.getProperty(id +
                         FeedsConstants.ONE_VAR + variable) + " for variable " + variable +

Modified: labs/shotoku/trunk/shotoku-file-access/src/java/org/jboss/shotoku/fileaccess/FileAccessConfiguration.java
===================================================================
--- labs/shotoku/trunk/shotoku-file-access/src/java/org/jboss/shotoku/fileaccess/FileAccessConfiguration.java	2006-11-04 00:39:03 UTC (rev 7392)
+++ labs/shotoku/trunk/shotoku-file-access/src/java/org/jboss/shotoku/fileaccess/FileAccessConfiguration.java	2006-11-04 00:39:19 UTC (rev 7393)
@@ -32,7 +32,8 @@
         String[] monitorsTokens = getTokensFromProperty(props, "monitor.stack");
         for (String monitorToken : monitorsTokens) {
             try {
-                monitors.add((FileAccessMonitor) Class.forName(monitorToken).newInstance());
+                monitors.add((FileAccessMonitor) Thread.currentThread().getContextClassLoader().loadClass(
+                        monitorToken).newInstance());
             } catch (Exception e) {
                 log.error("Error loading a file access monitor.", e);
             }

Modified: labs/shotoku/trunk/shotoku-jcr/src/java/org/jboss/shotoku/jcr/JcrContentManager.java
===================================================================
--- labs/shotoku/trunk/shotoku-jcr/src/java/org/jboss/shotoku/jcr/JcrContentManager.java	2006-11-04 00:39:03 UTC (rev 7392)
+++ labs/shotoku/trunk/shotoku-jcr/src/java/org/jboss/shotoku/jcr/JcrContentManager.java	2006-11-04 00:39:19 UTC (rev 7393)
@@ -55,7 +55,8 @@
          */
         String connectorImpl = conf.getString(JcrTools.PROPERTY_CONNECTOR);
         if (connectorImpl != null) {
-            connector = (JcrConnector) Class.forName(connectorImpl).newInstance();
+            connector = (JcrConnector) Thread.currentThread().getContextClassLoader().loadClass(
+                    connectorImpl).newInstance();
         } else {
             connector = new JackrabbitJcrConnector();
         }

Modified: labs/shotoku/trunk/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnTools.java
===================================================================
--- labs/shotoku/trunk/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnTools.java	2006-11-04 00:39:03 UTC (rev 7392)
+++ labs/shotoku/trunk/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnTools.java	2006-11-04 00:39:19 UTC (rev 7393)
@@ -94,7 +94,7 @@
      * the object, so the dirty sets work properly.
      * @return An instance of org.jboss.shotoku.svn.SvnService
      */
-    public static SvnService getService() {
+    public synchronized static SvnService getService() {
         try {
             if (instance == null) {
                 if (ContentManager.isEmbedded()) {

Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/TagTools.java
===================================================================
--- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/TagTools.java	2006-11-04 00:39:03 UTC (rev 7392)
+++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/tools/TagTools.java	2006-11-04 00:39:19 UTC (rev 7393)
@@ -17,7 +17,7 @@
      * the object, so the dirty sets work properly.
      * @return An instance of org.jboss.shotoku.svn.SvnService
      */
-    public static TagService getService() {
+    public synchronized static TagService getService() {
         try {
             if (instance == null) {
                 if (ContentManager.isEmbedded()) {

Modified: labs/shotoku/trunk/shotoku-test/src/java/org/jboss/shotoku/test/embedded/SATest.java
===================================================================
--- labs/shotoku/trunk/shotoku-test/src/java/org/jboss/shotoku/test/embedded/SATest.java	2006-11-04 00:39:03 UTC (rev 7392)
+++ labs/shotoku/trunk/shotoku-test/src/java/org/jboss/shotoku/test/embedded/SATest.java	2006-11-04 00:39:19 UTC (rev 7393)
@@ -28,7 +28,8 @@
  */
 public class SATest {
     public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException {
-        Class c = Class.forName("org.jboss.shotoku.test.servlet.ShotokuServlet$TestCacheItem");
+        Class c = Thread.currentThread().getContextClassLoader().loadClass(
+                "org.jboss.shotoku.test.servlet.ShotokuServlet$TestCacheItem");
 
         for (Constructor ctor : c.getConstructors()) {
             System.out.println(ctor.toGenericString());

Modified: labs/shotoku/trunk/shotoku-user/src/java/org/jboss/shotoku/user/tools/UserTools.java
===================================================================
--- labs/shotoku/trunk/shotoku-user/src/java/org/jboss/shotoku/user/tools/UserTools.java	2006-11-04 00:39:03 UTC (rev 7392)
+++ labs/shotoku/trunk/shotoku-user/src/java/org/jboss/shotoku/user/tools/UserTools.java	2006-11-04 00:39:19 UTC (rev 7393)
@@ -13,7 +13,7 @@
 public class UserTools {
     private static UserService instance;
 
-    public static UserService getService() {
+    public synchronized static UserService getService() {
         try {
             if (instance == null) {
                 if (ContentManager.isEmbedded()) {




More information about the jboss-svn-commits mailing list