[weld-commits] Weld SVN: r5336 - in core/trunk/impl/src/main/java/org/jboss/weld: context and 1 other directories.

weld-commits at lists.jboss.org weld-commits at lists.jboss.org
Thu Dec 17 14:42:04 EST 2009


Author: dallen6
Date: 2009-12-17 14:42:04 -0500 (Thu, 17 Dec 2009)
New Revision: 5336

Added:
   core/trunk/impl/src/main/java/org/jboss/weld/WeldExceptionMessage.java
Modified:
   core/trunk/impl/src/main/java/org/jboss/weld/AmbiguousResolutionException.java
   core/trunk/impl/src/main/java/org/jboss/weld/CreationException.java
   core/trunk/impl/src/main/java/org/jboss/weld/DeploymentException.java
   core/trunk/impl/src/main/java/org/jboss/weld/ForbiddenArgumentException.java
   core/trunk/impl/src/main/java/org/jboss/weld/ForbiddenStateException.java
   core/trunk/impl/src/main/java/org/jboss/weld/IllegalProductException.java
   core/trunk/impl/src/main/java/org/jboss/weld/InjectionException.java
   core/trunk/impl/src/main/java/org/jboss/weld/InvalidObjectException.java
   core/trunk/impl/src/main/java/org/jboss/weld/InvalidOperationException.java
   core/trunk/impl/src/main/java/org/jboss/weld/UnproxyableResolutionException.java
   core/trunk/impl/src/main/java/org/jboss/weld/UnsatisfiedResolutionException.java
   core/trunk/impl/src/main/java/org/jboss/weld/WeldException.java
   core/trunk/impl/src/main/java/org/jboss/weld/context/ContextNotActiveException.java
   core/trunk/impl/src/main/java/org/jboss/weld/xml/WeldXmlException.java
Log:
Refactoring of exceptions to remove static references and use common localized message class

Modified: core/trunk/impl/src/main/java/org/jboss/weld/AmbiguousResolutionException.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/AmbiguousResolutionException.java	2009-12-17 18:42:33 UTC (rev 5335)
+++ core/trunk/impl/src/main/java/org/jboss/weld/AmbiguousResolutionException.java	2009-12-17 19:42:04 UTC (rev 5336)
@@ -17,9 +17,6 @@
 
 package org.jboss.weld;
 
-import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
-import ch.qos.cal10n.IMessageConveyor;
-
 /**
  * Provides message localization service for the
  * {@link javax.enterprise.inject.AmbiguousResolutionException}.
@@ -28,10 +25,9 @@
  */
 public class AmbiguousResolutionException extends javax.enterprise.inject.AmbiguousResolutionException
 {
-   private static final long serialVersionUID = 1L;
+   private static final long    serialVersionUID = 2L;
 
-   // Exception messages
-   private static final IMessageConveyor messageConveyer = loggerFactory().getMessageConveyor();
+   private WeldExceptionMessage message;
 
    /**
     * Creates a new exception with the given cause.
@@ -40,7 +36,8 @@
     */
    public AmbiguousResolutionException(Throwable throwable)
    {
-      super(throwable.getLocalizedMessage(), throwable);
+      super(throwable);
+      message = new WeldExceptionMessage(throwable.getLocalizedMessage());
    }
 
    /**
@@ -53,6 +50,18 @@
     */
    public <E extends Enum<?>> AmbiguousResolutionException(E key, Object... args)
    {
-      super(messageConveyer.getMessage(key, args));
+      message = new WeldExceptionMessage(key, args);
    }
+
+   @Override
+   public String getLocalizedMessage()
+   {
+      return getMessage();
+   }
+
+   @Override
+   public String getMessage()
+   {
+      return message.getAsString();
+   }
 }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/CreationException.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/CreationException.java	2009-12-17 18:42:33 UTC (rev 5335)
+++ core/trunk/impl/src/main/java/org/jboss/weld/CreationException.java	2009-12-17 19:42:04 UTC (rev 5336)
@@ -17,23 +17,18 @@
 
 package org.jboss.weld;
 
-import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
-import ch.qos.cal10n.IMessageConveyor;
-
 /**
  * A version of {@link javax.enterprise.inject.CreationException} that supports
  * message localization.
  * 
  * @author David Allen
- *
  */
 public class CreationException extends javax.enterprise.inject.CreationException
 {
 
-   private static final long serialVersionUID = 5167626747306493463L;
+   private static final long    serialVersionUID = 2L;
 
-   // Exception messages
-   private static final IMessageConveyor messageConveyer  = loggerFactory().getMessageConveyor();
+   private WeldExceptionMessage message;
 
    /**
     * Creates a new exception with the given localized message key and optional
@@ -45,7 +40,7 @@
     */
    public <E extends Enum<?>> CreationException(E key, Object... args)
    {
-      super(messageConveyer.getMessage(key, args));
+      message = new WeldExceptionMessage(key, args);
    }
 
    /**
@@ -59,6 +54,19 @@
     */
    public <E extends Enum<?>> CreationException(E key, Throwable throwable, Object... args)
    {
-      super(messageConveyer.getMessage(key, args), throwable);
+      super(throwable);
+      message = new WeldExceptionMessage(key, args);
    }
+
+   @Override
+   public String getLocalizedMessage()
+   {
+      return getMessage();
+   }
+
+   @Override
+   public String getMessage()
+   {
+      return message.getAsString();
+   }
 }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/DeploymentException.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/DeploymentException.java	2009-12-17 18:42:33 UTC (rev 5335)
+++ core/trunk/impl/src/main/java/org/jboss/weld/DeploymentException.java	2009-12-17 19:42:04 UTC (rev 5336)
@@ -27,11 +27,6 @@
 {
    private static final long serialVersionUID = 8014646336322875707L;
 
-   public DeploymentException()
-   {
-      super();
-   }
-
    /**
     * Creates a new exception with the given localized message key and optional
     * arguments for the message.

Modified: core/trunk/impl/src/main/java/org/jboss/weld/ForbiddenArgumentException.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/ForbiddenArgumentException.java	2009-12-17 18:42:33 UTC (rev 5335)
+++ core/trunk/impl/src/main/java/org/jboss/weld/ForbiddenArgumentException.java	2009-12-17 19:42:04 UTC (rev 5336)
@@ -17,9 +17,6 @@
 
 package org.jboss.weld;
 
-import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
-import ch.qos.cal10n.IMessageConveyor;
-
 /**
  * This exception is used when the specification calls for an
  * {@link java.lang.IllegalArgumentException}.
@@ -29,10 +26,9 @@
 public class ForbiddenArgumentException extends IllegalArgumentException
 {
 
-   private static final long serialVersionUID = 1L;
+   private static final long    serialVersionUID = 2L;
 
-   // Exception messages
-   private static final IMessageConveyor messageConveyer = loggerFactory().getMessageConveyor();
+   private WeldExceptionMessage message;
 
    /**
     * Creates a new exception with the given cause.
@@ -41,7 +37,8 @@
     */
    public ForbiddenArgumentException(Throwable throwable)
    {
-      super(throwable.getLocalizedMessage(), throwable);
+      super(throwable);
+      message = new WeldExceptionMessage(throwable.getLocalizedMessage());
    }
 
    /**
@@ -54,6 +51,18 @@
     */
    public <E extends Enum<?>> ForbiddenArgumentException(E key, Object... args)
    {
-      super(messageConveyer.getMessage(key, args));
+      message = new WeldExceptionMessage(key, args);
    }
+
+   @Override
+   public String getLocalizedMessage()
+   {
+      return getMessage();
+   }
+
+   @Override
+   public String getMessage()
+   {
+      return message.getAsString();
+   }
 }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/ForbiddenStateException.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/ForbiddenStateException.java	2009-12-17 18:42:33 UTC (rev 5335)
+++ core/trunk/impl/src/main/java/org/jboss/weld/ForbiddenStateException.java	2009-12-17 19:42:04 UTC (rev 5336)
@@ -17,9 +17,6 @@
 
 package org.jboss.weld;
 
-import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
-import ch.qos.cal10n.IMessageConveyor;
-
 /**
  * This exception is used when the specification calls for an
  * {@link java.lang.IllegalStateException}.
@@ -28,10 +25,9 @@
  */
 public class ForbiddenStateException extends IllegalStateException
 {
-   private static final long             serialVersionUID = 1L;
+   private static final long    serialVersionUID = 2L;
 
-   // Exception messages
-   private static final IMessageConveyor messageConveyer  = loggerFactory().getMessageConveyor();
+   private WeldExceptionMessage message;
 
    /**
     * Creates a new exception with the given localized message key and optional
@@ -43,9 +39,9 @@
     */
    public <E extends Enum<?>> ForbiddenStateException(E key, Object... args)
    {
-      super(messageConveyer.getMessage(key, args));
+      message = new WeldExceptionMessage(key, args);
    }
-   
+
    /**
     * Creates a new exception with the given cause.
     * 
@@ -55,4 +51,16 @@
    {
       super(cause.getLocalizedMessage(), cause);
    }
+
+   @Override
+   public String getLocalizedMessage()
+   {
+      return getMessage();
+   }
+
+   @Override
+   public String getMessage()
+   {
+      return message.getAsString();
+   }
 }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/IllegalProductException.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/IllegalProductException.java	2009-12-17 18:42:33 UTC (rev 5335)
+++ core/trunk/impl/src/main/java/org/jboss/weld/IllegalProductException.java	2009-12-17 19:42:04 UTC (rev 5336)
@@ -17,23 +17,18 @@
 
 package org.jboss.weld;
 
-import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
-import ch.qos.cal10n.IMessageConveyor;
-
 /**
  * An {@link javax.enterprise.inject.IllegalProductException} with support for
  * localized messages in Weld.
  * 
  * @author David Allen
- *
  */
 public class IllegalProductException extends javax.enterprise.inject.IllegalProductException
 {
 
-   private static final long serialVersionUID = -8200417008899252835L;
+   private static final long    serialVersionUID = 2L;
 
-   // Exception messages
-   private static final IMessageConveyor messageConveyer  = loggerFactory().getMessageConveyor();
+   private WeldExceptionMessage message;
 
    /**
     * Creates a new exception with the given localized message key and optional
@@ -45,6 +40,18 @@
     */
    public <E extends Enum<?>> IllegalProductException(E key, Object... args)
    {
-      super(messageConveyer.getMessage(key, args));
+      message = new WeldExceptionMessage(key, args);
    }
+
+   @Override
+   public String getLocalizedMessage()
+   {
+      return getMessage();
+   }
+
+   @Override
+   public String getMessage()
+   {
+      return message.getAsString();
+   }
 }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/InjectionException.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/InjectionException.java	2009-12-17 18:42:33 UTC (rev 5335)
+++ core/trunk/impl/src/main/java/org/jboss/weld/InjectionException.java	2009-12-17 19:42:04 UTC (rev 5336)
@@ -17,9 +17,6 @@
 
 package org.jboss.weld;
 
-import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
-import ch.qos.cal10n.IMessageConveyor;
-
 /**
  * Provides message localization service for the
  * {@link javax.enterprise.inject.InjectionException}.
@@ -28,10 +25,9 @@
  */
 public class InjectionException extends javax.enterprise.inject.InjectionException
 {
-   private static final long serialVersionUID = 1L;
+   private static final long    serialVersionUID = 2L;
 
-   // Exception messages
-   private static final IMessageConveyor messageConveyer = loggerFactory().getMessageConveyor();
+   private WeldExceptionMessage message;
 
    /**
     * Creates a new exception with the given cause.
@@ -40,20 +36,22 @@
     */
    public InjectionException(Throwable throwable)
    {
-      super(throwable.getLocalizedMessage(), throwable);
+      super(throwable);
+      message = new WeldExceptionMessage(throwable.getLocalizedMessage());
    }
 
    /**
     * Creates a new exception with an arbitrary message and the cause of the
-    * exception.  It is not recommended to use this constructor since the
-    * message cannot be localized.
+    * exception. It is not recommended to use this constructor since the message
+    * cannot be localized.
     * 
     * @param message The error message
     * @param throwable The cause of the exception or wrapped throwable
     */
    public InjectionException(String message, Throwable throwable)
    {
-      super(message, throwable);
+      super(throwable);
+      this.message = new WeldExceptionMessage(message);
    }
 
    /**
@@ -66,6 +64,18 @@
     */
    public <E extends Enum<?>> InjectionException(E key, Object... args)
    {
-      super(messageConveyer.getMessage(key, args));
+      message = new WeldExceptionMessage(key, args);
    }
+
+   @Override
+   public String getLocalizedMessage()
+   {
+      return getMessage();
+   }
+
+   @Override
+   public String getMessage()
+   {
+      return message.getAsString();
+   }
 }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/InvalidObjectException.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/InvalidObjectException.java	2009-12-17 18:42:33 UTC (rev 5335)
+++ core/trunk/impl/src/main/java/org/jboss/weld/InvalidObjectException.java	2009-12-17 19:42:04 UTC (rev 5336)
@@ -17,23 +17,18 @@
 
 package org.jboss.weld;
 
-import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
-import ch.qos.cal10n.IMessageConveyor;
-
 /**
  * An extended version of {@link java.io.InvalidObjectException} that supports
  * localization.
  * 
  * @author David Allen
- *
  */
 public class InvalidObjectException extends java.io.InvalidObjectException
 {
 
-   private static final long serialVersionUID = 1L;
+   private static final long    serialVersionUID = 2L;
 
-   // Exception messages
-   private static final IMessageConveyor messageConveyer  = loggerFactory().getMessageConveyor();
+   private WeldExceptionMessage message;
 
    /**
     * Creates a new exception with the given localized message key and optional
@@ -45,7 +40,20 @@
     */
    public <E extends Enum<?>> InvalidObjectException(E key, Object... args)
    {
-      super(messageConveyer.getMessage(key, args));
+      super(null);
+      message = new WeldExceptionMessage(key, args);
    }
 
+   @Override
+   public String getLocalizedMessage()
+   {
+      return getMessage();
+   }
+
+   @Override
+   public String getMessage()
+   {
+      return message.getAsString();
+   }
+
 }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/InvalidOperationException.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/InvalidOperationException.java	2009-12-17 18:42:33 UTC (rev 5335)
+++ core/trunk/impl/src/main/java/org/jboss/weld/InvalidOperationException.java	2009-12-17 19:42:04 UTC (rev 5336)
@@ -17,26 +17,23 @@
 
 package org.jboss.weld;
 
-import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
-import ch.qos.cal10n.IMessageConveyor;
-
 /**
  * An exception used for unsupported operations or invocations of operations
  * that are invalid in certain contexts.
  * 
  * @author David Allen
- *
  */
 public class InvalidOperationException extends UnsupportedOperationException
 {
 
-   private static final long serialVersionUID = 1L;
+   private static final long    serialVersionUID = 2L;
 
-   // Exception messages
-   private static final IMessageConveyor messageConveyer = loggerFactory().getMessageConveyor();
+   private WeldExceptionMessage message;
 
    /**
-    * Default constructor mostly for serialization purposes.
+    * Creates a new exception with no message.  Here the stacktrace serves as the
+    * main information since it has the method which was invoked causing this
+    * exception.
     */
    public InvalidOperationException()
    {
@@ -53,6 +50,18 @@
     */
    public <E extends Enum<?>> InvalidOperationException(E key, Object... args)
    {
-      super(messageConveyer.getMessage(key, args));
+      message = new WeldExceptionMessage(key, args);
    }
+
+   @Override
+   public String getLocalizedMessage()
+   {
+      return getMessage();
+   }
+
+   @Override
+   public String getMessage()
+   {
+      return message.getAsString();
+   }
 }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/UnproxyableResolutionException.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/UnproxyableResolutionException.java	2009-12-17 18:42:33 UTC (rev 5335)
+++ core/trunk/impl/src/main/java/org/jboss/weld/UnproxyableResolutionException.java	2009-12-17 19:42:04 UTC (rev 5336)
@@ -17,9 +17,6 @@
 
 package org.jboss.weld;
 
-import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
-import ch.qos.cal10n.IMessageConveyor;
-
 /**
  * Provides message localization service for the
  * {@link javax.enterprise.inject.UnproxyableResolutionException}.
@@ -28,10 +25,9 @@
  */
 public class UnproxyableResolutionException extends javax.enterprise.inject.UnproxyableResolutionException
 {
-   private static final long serialVersionUID = 1L;
+   private static final long    serialVersionUID = 2L;
 
-   // Exception messages
-   private static final IMessageConveyor messageConveyer = loggerFactory().getMessageConveyor();
+   private WeldExceptionMessage message;
 
    /**
     * Creates a new exception with the given cause.
@@ -40,7 +36,8 @@
     */
    public UnproxyableResolutionException(Throwable throwable)
    {
-      super(throwable.getLocalizedMessage(), throwable);
+      super(throwable);
+      message = new WeldExceptionMessage(throwable.getLocalizedMessage());
    }
 
    /**
@@ -53,7 +50,19 @@
     */
    public <E extends Enum<?>> UnproxyableResolutionException(E key, Object... args)
    {
-      super(messageConveyer.getMessage(key, args));
+      message = new WeldExceptionMessage(key, args);
    }
 
+   @Override
+   public String getLocalizedMessage()
+   {
+      return getMessage();
+   }
+
+   @Override
+   public String getMessage()
+   {
+      return message.getAsString();
+   }
+
 }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/UnsatisfiedResolutionException.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/UnsatisfiedResolutionException.java	2009-12-17 18:42:33 UTC (rev 5335)
+++ core/trunk/impl/src/main/java/org/jboss/weld/UnsatisfiedResolutionException.java	2009-12-17 19:42:04 UTC (rev 5336)
@@ -17,22 +17,17 @@
 
 package org.jboss.weld;
 
-import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
-import ch.qos.cal10n.IMessageConveyor;
-
 /**
  * Provides message localization service for the
  * {@link javax.enterprise.inject.UnsatisfiedResolutionException}.
  * 
  * @author David Allen
- *
  */
 public class UnsatisfiedResolutionException extends javax.enterprise.inject.UnsatisfiedResolutionException
 {
-   private static final long serialVersionUID = 1L;
+   private static final long    serialVersionUID = 2L;
 
-   // Exception messages
-   private static final IMessageConveyor messageConveyer = loggerFactory().getMessageConveyor();
+   private WeldExceptionMessage message;
 
    /**
     * Creates a new exception with the given cause.
@@ -41,7 +36,8 @@
     */
    public UnsatisfiedResolutionException(Throwable throwable)
    {
-      super(throwable.getLocalizedMessage(), throwable);
+      super(throwable);
+      message = new WeldExceptionMessage(throwable.getLocalizedMessage());
    }
 
    /**
@@ -54,7 +50,19 @@
     */
    public <E extends Enum<?>> UnsatisfiedResolutionException(E key, Object... args)
    {
-      super(messageConveyer.getMessage(key, args));
+      message = new WeldExceptionMessage(key, args);
    }
 
+   @Override
+   public String getLocalizedMessage()
+   {
+      return getMessage();
+   }
+
+   @Override
+   public String getMessage()
+   {
+      return message.getAsString();
+   }
+
 }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/WeldException.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/WeldException.java	2009-12-17 18:42:33 UTC (rev 5335)
+++ core/trunk/impl/src/main/java/org/jboss/weld/WeldException.java	2009-12-17 19:42:04 UTC (rev 5336)
@@ -17,12 +17,8 @@
 
 package org.jboss.weld;
 
-import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
-
 import java.util.List;
 
-import ch.qos.cal10n.IMessageConveyor;
-
 /**
  * A general run-time exception used by the JSR-299 reference implementation Weld.
  * 
@@ -30,30 +26,19 @@
  */
 public class WeldException extends RuntimeException
 {
-   private static final long             serialVersionUID = 1L;
+   private static final long             serialVersionUID = 2L;
 
-   // Exception messages
-   private static final IMessageConveyor messageConveyer  = loggerFactory().getMessageConveyor();
-
-   private String message = null;
-
+   private WeldExceptionMessage message;
+   
    /**
-    * Default constructor mostly for serialization purposes.
-    */
-   protected WeldException()
-   {
-      super();
-   }
-
-   /**
     * Creates a new exception with the given cause.
     * 
     * @param throwable The cause of the exception
     */
    public WeldException(Throwable throwable)
    {
-      super(throwable.getLocalizedMessage(), throwable);
-      this.message = throwable.getLocalizedMessage();
+      super(throwable);
+      this.message = new WeldExceptionMessage(throwable.getLocalizedMessage());
    }
 
    /**
@@ -66,8 +51,7 @@
     */
    public <E extends Enum<?>> WeldException(E key, Object... args)
    {
-      super(messageConveyer.getMessage(key, args));
-      this.message = messageConveyer.getMessage(key, args);
+      this.message = new WeldExceptionMessage(key, args);
    }
 
    /**
@@ -81,8 +65,8 @@
     */
    public <E extends Enum<?>> WeldException(E key, Throwable throwable, Object... args)
    {
-      super(messageConveyer.getMessage(key, args), throwable);
-      this.message = messageConveyer.getMessage(key, args);
+      super(throwable);
+      this.message = new WeldExceptionMessage(key, args);
    }
 
    /**
@@ -105,14 +89,9 @@
          }
          errorMessage.append(throwable.getLocalizedMessage());
       }
-      setMessage(errorMessage.toString());
+      this.message = new WeldExceptionMessage(errorMessage.toString());
    }
 
-   protected void setMessage(String message)
-   {
-      this.message = message;
-   }
-
    @Override
    public String getLocalizedMessage()
    {
@@ -122,7 +101,7 @@
    @Override
    public String getMessage()
    {
-      return message;
+      return message.getAsString();
    }
    
 }

Added: core/trunk/impl/src/main/java/org/jboss/weld/WeldExceptionMessage.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/WeldExceptionMessage.java	                        (rev 0)
+++ core/trunk/impl/src/main/java/org/jboss/weld/WeldExceptionMessage.java	2009-12-17 19:42:04 UTC (rev 5336)
@@ -0,0 +1,109 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat, Inc. and/or its affiliates, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed 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.jboss.weld;
+
+import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * The message for exceptions generated by Weld. Each exception contains one
+ * message object which will handle the generation of the string message at the
+ * time the message is needed. This includes localization of the message based
+ * on the settings in the JVM where the {@link java.lang.Throwable#getMessage()}
+ * or {@link java.lang.Throwable#getLocalizedMessage()} methods are invoked.
+ * </p>
+ * 
+ * @author David Allen
+ */
+public class WeldExceptionMessage implements Serializable
+{
+
+   private static final long serialVersionUID = 1L;
+
+   /**
+    * The string version of the message. This is only used when the original
+    * message from a wrapped exception is being used. Since it is already
+    * localized, it will simply be stored here and used as the message.
+    */
+   private String            message;
+
+   private Enum<?>           messageKey;
+   private Object            messageArguments[];
+
+   /**
+    * <p>
+    * Creates a new exception message initialized to a static message. Use this
+    * only for messages generated by third-party software, i.e., those which do
+    * not use enumerated message keys.
+    * </p>
+    * 
+    * @param message the static message
+    */
+   public WeldExceptionMessage(String message)
+   {
+      // This will not be further localized
+      this.message = message;
+   }
+
+   /**
+    * <p>
+    * Creates a new exception message based on an enumerated message key. This
+    * message will not be localized until it is actually logged or other
+    * software invokes the {@link #getMessage()} method.
+    * </p>
+    * 
+    * @param <E> the message key enumeration
+    * @param key the message key from the above enumeration
+    * @param args optional arguments for the message
+    */
+   public <E extends Enum<?>> WeldExceptionMessage(E key, Object... args)
+   {
+      this.messageKey = key;
+      this.messageArguments = args;
+   }
+
+   /**
+    * Generates the localized message for the exception.
+    * 
+    * @return exception message as a string
+    */
+   public String getAsString()
+   {
+      String result = message;
+      if (result == null)
+      {
+         try
+         {
+            result = loggerFactory().getMessageConveyor().getMessage(messageKey, messageArguments);
+         }
+         catch (Exception e)
+         {
+            // We want the using exception to be processed, but also include
+            // this one in its message
+            result = "Exception message for key " + messageKey + " not found due to " + e.getLocalizedMessage();
+         }
+         if (result == null)
+         {
+            result = "Exception message for key " + messageKey + " not found";
+         }
+      }
+      return result;
+   }
+}


Property changes on: core/trunk/impl/src/main/java/org/jboss/weld/WeldExceptionMessage.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: core/trunk/impl/src/main/java/org/jboss/weld/context/ContextNotActiveException.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/context/ContextNotActiveException.java	2009-12-17 18:42:33 UTC (rev 5335)
+++ core/trunk/impl/src/main/java/org/jboss/weld/context/ContextNotActiveException.java	2009-12-17 19:42:04 UTC (rev 5336)
@@ -17,22 +17,20 @@
 
 package org.jboss.weld.context;
 
-import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
-import ch.qos.cal10n.IMessageConveyor;
+import org.jboss.weld.WeldExceptionMessage;
 
 /**
- * A localized message version of the {@link javax.enterprise.context.ContextNotActiveException}.
+ * A localized message version of the
+ * {@link javax.enterprise.context.ContextNotActiveException}.
  * 
  * @author David Allen
- *
  */
 public class ContextNotActiveException extends javax.enterprise.context.ContextNotActiveException
 {
 
-   private static final long serialVersionUID = 1L;
+   private static final long    serialVersionUID = 2L;
 
-   // Exception messages
-   private static final IMessageConveyor messageConveyer = loggerFactory().getMessageConveyor();
+   private WeldExceptionMessage message;
 
    public ContextNotActiveException(Throwable throwable)
    {
@@ -41,6 +39,18 @@
 
    public <E extends Enum<?>> ContextNotActiveException(E key, Object... args)
    {
-      super(messageConveyer.getMessage(key, args));
+      message = new WeldExceptionMessage(key, args);
    }
+
+   @Override
+   public String getLocalizedMessage()
+   {
+      return getMessage();
+   }
+
+   @Override
+   public String getMessage()
+   {
+      return message.getAsString();
+   }
 }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/xml/WeldXmlException.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/xml/WeldXmlException.java	2009-12-17 18:42:33 UTC (rev 5335)
+++ core/trunk/impl/src/main/java/org/jboss/weld/xml/WeldXmlException.java	2009-12-17 19:42:04 UTC (rev 5336)
@@ -17,34 +17,43 @@
 
 package org.jboss.weld.xml;
 
-import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
-
 import javax.enterprise.inject.InjectionException;
 
-import ch.qos.cal10n.IMessageConveyor;
+import org.jboss.weld.WeldExceptionMessage;
 
 /**
  * Used for exceptions from the Weld XML parser and provides localization
  * support.
  * 
  * @author David Allen
- * 
  */
 public class WeldXmlException extends InjectionException
 {
 
-   private static final long serialVersionUID = -6716110761385845182L;
+   private static final long    serialVersionUID = 2L;
 
-   // Exception messages
-   private static final IMessageConveyor messageConveyer = loggerFactory().getMessageConveyor();
+   private WeldExceptionMessage message;
 
    public WeldXmlException(Throwable throwable)
    {
-      super(throwable.getLocalizedMessage(), throwable);
+      super(throwable);
+      message = new WeldExceptionMessage(throwable.getLocalizedMessage());
    }
 
    public <E extends Enum<?>> WeldXmlException(E key, Object... args)
    {
-      super(messageConveyer.getMessage(key, args));
+      message = new WeldExceptionMessage(key, args);
    }
+
+   @Override
+   public String getLocalizedMessage()
+   {
+      return getMessage();
+   }
+
+   @Override
+   public String getMessage()
+   {
+      return message.getAsString();
+   }
 }



More information about the weld-commits mailing list