[weld-commits] Weld SVN: r4811 - in core/trunk/impl/src/main: java/org/jboss/weld/bean and 2 other directories.

weld-commits at lists.jboss.org weld-commits at lists.jboss.org
Sun Nov 8 19:08:10 EST 2009


Author: dallen6
Date: 2009-11-08 19:08:10 -0500 (Sun, 08 Nov 2009)
New Revision: 4811

Added:
   core/trunk/impl/src/main/java/org/jboss/weld/IllegalProductException.java
Modified:
   core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/DecoratorImpl.java
   core/trunk/impl/src/main/java/org/jboss/weld/logging/messages/BeanMessage.java
   core/trunk/impl/src/main/resources/org/jboss/weld/messages/bean_en.properties
Log:
Conversion of exceptions to use localized messages.

Added: core/trunk/impl/src/main/java/org/jboss/weld/IllegalProductException.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/IllegalProductException.java	                        (rev 0)
+++ core/trunk/impl/src/main/java/org/jboss/weld/IllegalProductException.java	2009-11-09 00:08:10 UTC (rev 4811)
@@ -0,0 +1,42 @@
+/*
+ * 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 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;
+
+   // Exception messages
+   private static final IMessageConveyor messageConveyer  = loggerFactory().getMessageConveyor();
+
+   public <E extends Enum<?>> IllegalProductException(E key, Object... args)
+   {
+      super(messageConveyer.getMessage(key, args));
+   }
+}


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

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java	2009-11-09 00:06:27 UTC (rev 4810)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java	2009-11-09 00:08:10 UTC (rev 4811)
@@ -18,6 +18,16 @@
 
 import static org.jboss.weld.logging.Category.BEAN;
 import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
+import static org.jboss.weld.logging.messages.BeanMessage.NON_SERIALIZABLE_CONSTRUCTOR_PARAM_INJECTION_ERROR;
+import static org.jboss.weld.logging.messages.BeanMessage.NON_SERIALIZABLE_FIELD_INJECTION_ERROR;
+import static org.jboss.weld.logging.messages.BeanMessage.NON_SERIALIZABLE_INITIALIZER_PARAM_INJECTION_ERROR;
+import static org.jboss.weld.logging.messages.BeanMessage.NON_SERIALIZABLE_PRODUCER_PARAM_INJECTION_ERROR;
+import static org.jboss.weld.logging.messages.BeanMessage.NON_SERIALIZABLE_PRODUCT_ERROR;
+import static org.jboss.weld.logging.messages.BeanMessage.NULL_NOT_ALLOWED_FROM_PRODUCER;
+import static org.jboss.weld.logging.messages.BeanMessage.ONLY_ONE_SCOPE_ALLOWED;
+import static org.jboss.weld.logging.messages.BeanMessage.PRODUCER_CAST_ERROR;
+import static org.jboss.weld.logging.messages.BeanMessage.RETURN_TYPE_MUST_BE_CONCRETE;
+import static org.jboss.weld.logging.messages.BeanMessage.TYPE_PARAMETER_MUST_BE_CONCRETE;
 import static org.jboss.weld.logging.messages.BeanMessage.USING_DEFAULT_SCOPE;
 import static org.jboss.weld.logging.messages.BeanMessage.USING_SCOPE;
 
@@ -36,7 +46,6 @@
 import javax.enterprise.context.Dependent;
 import javax.enterprise.context.NormalScope;
 import javax.enterprise.context.spi.CreationalContext;
-import javax.enterprise.inject.IllegalProductException;
 import javax.enterprise.inject.Produces;
 import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.inject.spi.Producer;
@@ -45,6 +54,8 @@
 
 import org.jboss.weld.BeanManagerImpl;
 import org.jboss.weld.DefinitionException;
+import org.jboss.weld.IllegalProductException;
+import org.jboss.weld.WeldException;
 import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
 import org.jboss.weld.introspector.WeldMember;
 import org.jboss.weld.metadata.cache.MetaAnnotationStore;
@@ -119,7 +130,7 @@
       catch (ClassCastException e)
       {
          Type type = Beans.getDeclaredBeanType(getClass());
-         throw new RuntimeException(" Cannot cast producer type " + getAnnotatedItem().getJavaClass() + " to bean type " + (type == null ? " unknown " : type), e);
+         throw new WeldException(PRODUCER_CAST_ERROR, e, getAnnotatedItem().getJavaClass(), (type == null ? " unknown " : type));
       }
    }
 
@@ -128,19 +139,16 @@
     */
    protected void checkProducerReturnType()
    {
-      if (getAnnotatedItem().getBaseType() instanceof TypeVariable<?>)
+      if ((getAnnotatedItem().getBaseType() instanceof TypeVariable<?>) || 
+          (getAnnotatedItem().getBaseType() instanceof WildcardType))
       {
-         throw new DefinitionException("Return type must be concrete " + getAnnotatedItem().getBaseType());
+         throw new DefinitionException(RETURN_TYPE_MUST_BE_CONCRETE, getAnnotatedItem().getBaseType());
       }
-      if (getAnnotatedItem().getBaseType() instanceof WildcardType)
-      {
-         throw new DefinitionException("Return type must be concrete " + getAnnotatedItem().getBaseType());
-      }
       for (Type type : getAnnotatedItem().getActualTypeArguments())
       {
          if (!(type instanceof Class))
          {
-            throw new DefinitionException("Producer type cannot be parameterized with type parameter or wildcard:\n" + this.getAnnotatedItem());
+            throw new DefinitionException(TYPE_PARAMETER_MUST_BE_CONCRETE, this.getAnnotatedItem());
          }
       }
    }
@@ -190,14 +198,14 @@
    {
       if (instance == null && !isDependent())
       {
-         throw new IllegalProductException("Cannot return null from a non-dependent producer method");
+         throw new IllegalProductException(NULL_NOT_ALLOWED_FROM_PRODUCER, getProducer());
       }
       else if (instance != null)
       {
          boolean passivating = manager.getServices().get(MetaAnnotationStore.class).getScopeModel(getScope()).isPassivating();
          if (passivating && !Reflections.isSerializable(instance.getClass()))
          {
-            throw new IllegalProductException("Producers cannot declare passivating scope and return a non-serializable class");
+            throw new IllegalProductException(NON_SERIALIZABLE_PRODUCT_ERROR, getProducer());
          }
          InjectionPoint injectionPoint = manager.getCurrentInjectionPoint();
          if (injectionPoint == null || injectionPoint.equals(BeanManagerImpl.DUMMY_INJECTION_POINT))
@@ -210,7 +218,7 @@
             {
                if (!injectionPoint.isTransient() && instance != null && !Reflections.isSerializable(instance.getClass()))
                {
-                  throw new IllegalProductException("Producers cannot produce non-serializable instances for injection into non-transient fields of passivating beans\n\nProducer: " + this.toString() + "\nInjection Point: " + injectionPoint.toString());
+                  throw new IllegalProductException(NON_SERIALIZABLE_FIELD_INJECTION_ERROR, this, injectionPoint);
                }
             }
             else if (injectionPoint.getMember() instanceof Method)
@@ -218,16 +226,16 @@
                Method method = (Method) injectionPoint.getMember();
                if (method.isAnnotationPresent(Inject.class))
                {
-                  throw new IllegalProductException("Producers cannot produce non-serializable instances for injection into parameters of intializers of beans declaring passivating scope. Bean " + toString() + " being injected into " + injectionPoint.toString());
+                  throw new IllegalProductException(NON_SERIALIZABLE_INITIALIZER_PARAM_INJECTION_ERROR, this, injectionPoint);
                }
                if (method.isAnnotationPresent(Produces.class))
                {
-                  throw new IllegalProductException("Producers cannot produce non-serializable instances for injection into parameters of producer methods declaring passivating scope. Bean " + toString() + " being injected into " + injectionPoint.toString());
+                  throw new IllegalProductException(NON_SERIALIZABLE_PRODUCER_PARAM_INJECTION_ERROR, this, injectionPoint);
                }
             }
             else if (injectionPoint.getMember() instanceof Constructor)
             {
-               throw new IllegalProductException("Producers cannot produce non-serializable instances for injection into parameters of constructors of beans declaring passivating scope. Bean " + toString() + " being injected into " + injectionPoint.toString());
+               throw new IllegalProductException(NON_SERIALIZABLE_CONSTRUCTOR_PARAM_INJECTION_ERROR, this, injectionPoint);
             }
          }
       }
@@ -241,7 +249,7 @@
       scopeAnnotations.addAll(getAnnotatedItem().getMetaAnnotations(NormalScope.class));
       if (scopeAnnotations.size() > 1)
       {
-         throw new DefinitionException("At most one scope may be specified");
+         throw new DefinitionException(ONLY_ONE_SCOPE_ALLOWED, getProducer());
       }
       if (scopeAnnotations.size() == 1)
       {

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/DecoratorImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/DecoratorImpl.java	2009-11-09 00:06:27 UTC (rev 4810)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/DecoratorImpl.java	2009-11-09 00:08:10 UTC (rev 4811)
@@ -16,6 +16,14 @@
  */
 package org.jboss.weld.bean;
 
+import static org.jboss.weld.logging.messages.BeanMessage.DECORATED_TYPE_PARAMETERIZED_DELEGATE_NOT;
+import static org.jboss.weld.logging.messages.BeanMessage.DELEGATE_MUST_SUPPORT_EVERY_DECORATED_TYPE;
+import static org.jboss.weld.logging.messages.BeanMessage.DELEGATE_ON_NON_INITIALIZER_METHOD;
+import static org.jboss.weld.logging.messages.BeanMessage.DELEGATE_TYPE_PARAMETER_MISMATCH;
+import static org.jboss.weld.logging.messages.BeanMessage.NO_DELEGATE_FOR_DECORATOR;
+import static org.jboss.weld.logging.messages.BeanMessage.TOO_MANY_DELEGATES_FOR_DECORATOR;
+import static org.jboss.weld.logging.messages.BeanMessage.UNABLE_TO_PROCESS;
+
 import java.io.Serializable;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.ParameterizedType;
@@ -29,6 +37,7 @@
 
 import org.jboss.weld.BeanManagerImpl;
 import org.jboss.weld.DefinitionException;
+import org.jboss.weld.ForbiddenStateException;
 import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
 import org.jboss.weld.injection.MethodInjectionPoint;
 import org.jboss.weld.injection.WeldInjectionPoint;
@@ -120,16 +129,16 @@
       {
          if (injectionPoint instanceof MethodInjectionPoint<?, ?> && !injectionPoint.isAnnotationPresent(Inject.class))
          {
-            throw new DefinitionException("Method with @Decorates parameter must be an initializer method " + injectionPoint);
+            throw new DefinitionException(DELEGATE_ON_NON_INITIALIZER_METHOD, injectionPoint);
          }
       }
       if (getDelegateInjectionPoints().size() == 0)
       {
-         throw new DefinitionException("No delegate injection points defined " + this);
+         throw new DefinitionException(NO_DELEGATE_FOR_DECORATOR, this);
       }
       else if (getDelegateInjectionPoints().size() > 1)
       {
-         throw new DefinitionException("Too many delegate injection point defined " + this);
+         throw new DefinitionException(TOO_MANY_DELEGATES_FOR_DECORATOR, this);
       }
    }
 
@@ -154,7 +163,7 @@
          {
             if (!((Class<?>) decoratedType).isAssignableFrom(delegateInjectionPoint.getJavaClass()))
             {
-               throw new DefinitionException("The delegate type must extend or implement every decorated type. Decorated type " + decoratedType + "." + this );
+               throw new DefinitionException(DELEGATE_MUST_SUPPORT_EVERY_DECORATED_TYPE, decoratedType, this );
             }
          }
          else if (decoratedType instanceof ParameterizedType)
@@ -162,20 +171,20 @@
             ParameterizedType parameterizedType = (ParameterizedType) decoratedType;
             if (!delegateInjectionPoint.isParameterizedType())
             {
-               throw new DefinitionException("The decorated type is parameterized, but the delegate type isn't. Delegate type " + delegateType + "." + this);
+               throw new DefinitionException(DECORATED_TYPE_PARAMETERIZED_DELEGATE_NOT, delegateType, this);
             }
             if (!Arrays.equals(delegateInjectionPoint.getActualTypeArguments(), parameterizedType.getActualTypeArguments()))
             {
-               throw new DefinitionException("The delegate type must have exactly the same type parameters as the decorated type. Decorated type " + decoratedType + "." + this );
+               throw new DefinitionException(DELEGATE_TYPE_PARAMETER_MISMATCH, decoratedType, this );
             }
             Type rawType = ((ParameterizedType) decoratedType).getRawType();
             if (rawType instanceof Class && !((Class<?>) rawType).isAssignableFrom(delegateInjectionPoint.getJavaClass()))
             {
-               throw new DefinitionException("The delegate type must extend or implement every decorated type. Decorated type " + decoratedType + "." + this );
+               throw new DefinitionException(DELEGATE_MUST_SUPPORT_EVERY_DECORATED_TYPE, decoratedType, this );
             }
             else
             {
-               throw new IllegalStateException("Unable to process " + decoratedType);
+               throw new ForbiddenStateException(UNABLE_TO_PROCESS, decoratedType);
             }
 
          }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/logging/messages/BeanMessage.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/logging/messages/BeanMessage.java	2009-11-09 00:06:27 UTC (rev 4810)
+++ core/trunk/impl/src/main/java/org/jboss/weld/logging/messages/BeanMessage.java	2009-11-09 00:08:10 UTC (rev 4811)
@@ -67,6 +67,21 @@
    @MessageId("000046") ONLY_ONE_SCOPE_ALLOWED,
    @MessageId("000047") SPECIALIZING_BEAN_MUST_EXTEND_A_BEAN,
    @MessageId("000048") CONFLICTING_INTERCEPTOR_BINDINGS,
-   @MessageId("000049") INVOCATION_ERROR
+   @MessageId("000049") INVOCATION_ERROR,
+   @MessageId("000050") PRODUCER_CAST_ERROR,
+   @MessageId("000051") RETURN_TYPE_MUST_BE_CONCRETE,
+   @MessageId("000052") NULL_NOT_ALLOWED_FROM_PRODUCER,
+   @MessageId("000053") NON_SERIALIZABLE_PRODUCT_ERROR,
+   @MessageId("000054") NON_SERIALIZABLE_FIELD_INJECTION_ERROR,
+   @MessageId("000055") NON_SERIALIZABLE_INITIALIZER_PARAM_INJECTION_ERROR,
+   @MessageId("000056") NON_SERIALIZABLE_PRODUCER_PARAM_INJECTION_ERROR,
+   @MessageId("000057") NON_SERIALIZABLE_CONSTRUCTOR_PARAM_INJECTION_ERROR,
+   @MessageId("000058") DELEGATE_ON_NON_INITIALIZER_METHOD,
+   @MessageId("000059") NO_DELEGATE_FOR_DECORATOR,
+   @MessageId("000060") TOO_MANY_DELEGATES_FOR_DECORATOR,
+   @MessageId("000061") DELEGATE_MUST_SUPPORT_EVERY_DECORATED_TYPE,
+   @MessageId("000062") DECORATED_TYPE_PARAMETERIZED_DELEGATE_NOT,
+   @MessageId("000063") DELEGATE_TYPE_PARAMETER_MISMATCH,
+   @MessageId("000064") UNABLE_TO_PROCESS
    
 }

Modified: core/trunk/impl/src/main/resources/org/jboss/weld/messages/bean_en.properties
===================================================================
--- core/trunk/impl/src/main/resources/org/jboss/weld/messages/bean_en.properties	2009-11-09 00:06:27 UTC (rev 4810)
+++ core/trunk/impl/src/main/resources/org/jboss/weld/messages/bean_en.properties	2009-11-09 00:08:10 UTC (rev 4811)
@@ -48,3 +48,18 @@
 SPECIALIZING_BEAN_MUST_EXTEND_A_BEAN=Specializing bean must extend another bean\:  {0}
 CONFLICTING_INTERCEPTOR_BINDINGS=Conflicting interceptor bindings found on {0}
 INVOCATION_ERROR=Unable to invoke {0} on {1}
+PRODUCER_CAST_ERROR=Cannot cast producer type {0} to bean type {1}
+RETURN_TYPE_MUST_BE_CONCRETE=Return type must be concrete\:  {0}
+NULL_NOT_ALLOWED_FROM_PRODUCER=Cannot return null from a non-dependent producer method\:  {0}
+NON_SERIALIZABLE_PRODUCT_ERROR=Producers cannot declare passivating scope and return a non-serializable class\:  {0}
+NON_SERIALIZABLE_INJECTION_ERROR=Producers cannot produce non-serializable instances for injection into non-transient fields of passivating beans\\n\\nProducer\:  {0}\\nInjection Point\:  {1}
+NON_SERIALIZABLE_INITIALIZER_PARAM_INJECTION_ERROR=Producers cannot produce non-serializable instances for injection into parameters of initializers of beans declaring passivating scope.\\n\\nBean\:  {0}\\nInjection Point\:  {1}
+NON_SERIALIZABLE_PRODUCER_PARAM_INJECTION_ERROR=Producers cannot produce non-serializable instances for injection into parameters of producer methods declaring passivating scope.\\n\\nBean\:  {0}\\nInjection Point\:  {1}
+NON_SERIALIZABLE_CONSTRUCTOR_PARAM_INJECTION_ERROR=Producers cannot produce non-serializable instances for injection into parameters of constructors of beans declaring passivating scope.\\n\\nBean\:  {0}\\nInjection Point\:  {1}
+DECORATES_ON_NON_INITIALIZER_METHOD=Method with @Delegate parameter must be an initializer method\:  {0}
+NO_DELEGATE_FOR_DECORATOR=No delegate injection points defined for {0}
+TOO_MANY_DELEGATES_FOR_DECORATOR=Too many delegate injection points defined for {0}
+DELEGATE_MUST_SUPPORT_EVERY_DECORATED_TYPE=The delegate type must extend or implement every decorated type.  Decorated type {0} on {1}
+DECORATED_TYPE_PARAMETERIZED_DELEGATE_NOT=The decorated type is parameterized, but the delegate type isn't.  Delegate type {0} on {1}
+DELEGATE_TYPE_PARAMETER_MISMATCH=The delegate type must have exactly the same type parameters as the decorated type.  Decorated type {0} on decorator {1}
+UNABLE_TO_PROCESS=Unable to process {0}



More information about the weld-commits mailing list