[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