Sure, I am heading for it now.

Willem

Claus Ibsen wrote:
Yes

While walking the dog I realized that the change isn't good - the 
synchronization should be on a lock object such as:

Private static final Object lock = new Object()

Or using some of the fancy latch stuff from JDK5

I am at work, Willem could you revert the change?

Med venlig hilsen
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk
-----Original Message-----
From: Willem Jiang [mailto:[EMAIL PROTECTED] Sent: 28. maj 2008 08:47
To: [email protected]
Subject: Re: svn commit: r660811 - 
/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/UuidGenerator.java

Hi Claus,

I don't think the below codes is enough safe, as you may call the synchronized for a null object reference.

private static String UNIQUE_STUB;

public UuidGenerator(String prefix) {
        synchronized (UNIQUE_STUB) {
            if (UNIQUE_STUB == null) {
                init();
            }
            this.seed = prefix + UNIQUE_STUB + (instanceCount++) + "-";
        }
    }

BTW, there are lots of wired exceptions appear in the Banboo[1] after you committed the blow change.
Could you revert it ?

[1]http://bamboo.logicblaze.com:8085/browse/CAMEL-TRUNK-274

Willem

[EMAIL PROTECTED] wrote:
Author: davsclaus
Date: Tue May 27 21:56:11 2008
New Revision: 660811

URL: http://svn.apache.org/viewvc?rev=660811&view=rev
Log:
UUidGenerator not using static initializer codeblock to avoid class 
initialization problems (if they fail then they are never reported = kept in 
the dark)

Modified:
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/UuidGenerator.java

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/UuidGenerator.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/UuidGenerator.java?rev=660811&r1=660810&r2=660811&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/UuidGenerator.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/UuidGenerator.java
 Tue May 27 21:56:11 2008
@@ -28,14 +28,30 @@
  */
 public class UuidGenerator {
- private static final transient Log LOG = LogFactory.getLog(UuidGenerator.class); - private static final String UNIQUE_STUB;
+    private static final transient Log LOG = 
LogFactory.getLog(UuidGenerator.class);
+    private static String UNIQUE_STUB;
     private static int instanceCount;
     private static String hostName;
     private String seed;
     private long sequence;
- static {
+    public UuidGenerator(String prefix) {
+        synchronized (UNIQUE_STUB) {
+            if (UNIQUE_STUB == null) {
+                init();
+            }
+            this.seed = prefix + UNIQUE_STUB + (instanceCount++) + "-";
+        }
+    }
+
+    public UuidGenerator() {
+        this("ID-" + hostName);
+    }
+
+    /**
+     * Initializes the stub - not static codeblock to let commons-logging work
+     */
+    private void init() {
         String stub = "";
         boolean canAccessSystemProps = true;
         try {
@@ -61,19 +77,14 @@
             hostName = "localhost";
             stub = "-1-" + System.currentTimeMillis() + "-";
         }
+
         UNIQUE_STUB = stub;
-    }
- public UuidGenerator(String prefix) {
-        synchronized (UNIQUE_STUB) {
-            this.seed = prefix + UNIQUE_STUB + (instanceCount++) + "-";
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("UuidGenerator initialized with stub genereated: " + 
UNIQUE_STUB);
         }
     }
- public UuidGenerator() {
-        this("ID-" + hostName);
-    }
-
     /**
      * As we have to find the hostname as a side-affect of generating a unique
      * stub, we allow it's easy retrevial here






Reply via email to