[jboss-cvs] JBossAS SVN: r75409 - in projects/jboss-reflect/trunk/src/main/org/jboss/reflect/plugins: javassist and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sat Jul 5 05:11:45 EDT 2008


Author: alesj
Date: 2008-07-05 05:11:45 -0400 (Sat, 05 Jul 2008)
New Revision: 75409

Modified:
   projects/jboss-reflect/trunk/src/main/org/jboss/reflect/plugins/introspection/IntrospectionTypeInfoFactoryImpl.java
   projects/jboss-reflect/trunk/src/main/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java
Log:
[JBREFLECT-28]; finally get the synch right (strict enough).

Modified: projects/jboss-reflect/trunk/src/main/org/jboss/reflect/plugins/introspection/IntrospectionTypeInfoFactoryImpl.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/org/jboss/reflect/plugins/introspection/IntrospectionTypeInfoFactoryImpl.java	2008-07-05 03:06:40 UTC (rev 75408)
+++ projects/jboss-reflect/trunk/src/main/org/jboss/reflect/plugins/introspection/IntrospectionTypeInfoFactoryImpl.java	2008-07-05 09:11:45 UTC (rev 75409)
@@ -302,17 +302,21 @@
          return primitive;
 
       NumberInfo number = NumberInfo.valueOf(clazz.getName());
-      if (number != null && number.getPhase() != NumberInfo.Phase.INITIALIZING)
+      if (number != null)
       {
          synchronized (number)
          {
-            if (number.getPhase() != NumberInfo.Phase.COMPLETE)
+            // are we (since it's our synch monitor) just initializing
+            if (number.getPhase() != NumberInfo.Phase.INITIALIZING)
             {
-               number.initializing();
-               number.setDelegate(get(clazz));
+               if (number.getPhase() != NumberInfo.Phase.COMPLETE)
+               {
+                  number.initializing();
+                  number.setDelegate(get(clazz));
+               }
+               return number;
             }
          }
-         return number;
       }
 
       return get(clazz);
@@ -333,17 +337,21 @@
             return primitive;
 
          NumberInfo number = NumberInfo.valueOf(name);
-         if (number != null && number.getPhase() != NumberInfo.Phase.INITIALIZING)
+         if (number != null)
          {
             synchronized (number)
             {
-               if (number.getPhase() != NumberInfo.Phase.COMPLETE)
+               // are we (since it's our synch monitor) just initializing
+               if (number.getPhase() != NumberInfo.Phase.INITIALIZING)
                {
-                  number.initializing();
-                  number.setDelegate(get(type));
+                  if (number.getPhase() != NumberInfo.Phase.COMPLETE)
+                  {
+                     number.initializing();
+                     number.setDelegate(get(type));
+                  }
+                  return number;
                }
             }
-            return number;
          }
       }
 
@@ -360,17 +368,21 @@
          return primitive;
 
       NumberInfo number = NumberInfo.valueOf(name);
-      if (number != null && number.getPhase() != NumberInfo.Phase.INITIALIZING)
+      if (number != null)
       {
          synchronized (number)
          {
-            if (number.getPhase() != NumberInfo.Phase.COMPLETE)
+            // are we (since it's our synch monitor) just initializing
+            if (number.getPhase() != NumberInfo.Phase.INITIALIZING)
             {
-               number.initializing();
-               number.setDelegate(resolveComplexTypeInfo(cl, name));
+               if (number.getPhase() != NumberInfo.Phase.COMPLETE)
+               {
+                  number.initializing();
+                  number.setDelegate(resolveComplexTypeInfo(cl, name));
+               }
+               return number;
             }
          }
-         return number;
       }
 
       return resolveComplexTypeInfo(cl, name);

Modified: projects/jboss-reflect/trunk/src/main/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java	2008-07-05 03:06:40 UTC (rev 75408)
+++ projects/jboss-reflect/trunk/src/main/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java	2008-07-05 09:11:45 UTC (rev 75409)
@@ -261,17 +261,20 @@
          return primitive;
 
       NumberInfo number = NumberInfo.valueOf(clazz.getName());
-      if (number != null && number.getPhase() != NumberInfo.Phase.INITIALIZING)
+      if (number != null)
       {
          synchronized (number)
          {
-            if (number.getPhase() != NumberInfo.Phase.COMPLETE)
+            if (number.getPhase() != NumberInfo.Phase.INITIALIZING)
             {
-               number.initializing();
-               number.setDelegate((TypeInfo)get(clazz));
+               if (number.getPhase() != NumberInfo.Phase.COMPLETE)
+               {
+                  number.initializing();
+                  number.setDelegate((TypeInfo)get(clazz));
+               }
+               return number;
             }
          }
-         return number;
       }
 
       return (TypeInfo) get(clazz);
@@ -289,17 +292,20 @@
          return primitive;
 
       NumberInfo number = NumberInfo.valueOf(name);
-      if (number != null && number.getPhase() != NumberInfo.Phase.INITIALIZING)
+      if (number != null)
       {
          synchronized (number)
          {
-            if (number.getPhase() != NumberInfo.Phase.COMPLETE)
+            if (number.getPhase() != NumberInfo.Phase.INITIALIZING)
             {
-               number.initializing();
-               number.setDelegate((TypeInfo) get(Class.forName(name, false, cl)));
+               if (number.getPhase() != NumberInfo.Phase.COMPLETE)
+               {
+                  number.initializing();
+                  number.setDelegate((TypeInfo)get(Class.forName(name, false, cl)));
+               }
+               return number;
             }
          }
-         return number;
       }
 
       Class<?> clazz = Class.forName(name, false, cl);




More information about the jboss-cvs-commits mailing list