You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2017/09/09 08:50:20 UTC

svn commit: r1807859 - in /myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi: ./ converter/ model/ util/ validator/

Author: tandraschko
Date: Sat Sep  9 08:50:20 2017
New Revision: 1807859

URL: http://svn.apache.org/viewvc?rev=1807859&view=rev
Log:
MYFACES-4127 refactored other producers to reuse AbstractDynamicProducer

Modified:
    myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactFlowMapProducer.java
    myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactProducerExtension.java
    myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/converter/DynamicConverterProducer.java
    myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/model/DynamicDataModelProducer.java
    myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/util/AbstractDynamicProducer.java
    myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/validator/DynamicValidatorProducer.java

Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactFlowMapProducer.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactFlowMapProducer.java?rev=1807859&r1=1807858&r2=1807859&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactFlowMapProducer.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactFlowMapProducer.java Sat Sep  9 08:50:20 2017
@@ -20,6 +20,7 @@ package org.apache.myfaces.cdi;
 
 import java.lang.reflect.Type;
 import java.util.Map;
+import javax.enterprise.inject.spi.BeanManager;
 import javax.enterprise.util.AnnotationLiteral;
 import javax.faces.annotation.FlowMap;
 import javax.faces.context.FacesContext;
@@ -34,8 +35,10 @@ public class JsfArtifactFlowMapProducer
         private static final long serialVersionUID = -8623640277155878657L;
     }
     
-    public JsfArtifactFlowMapProducer()
+    public JsfArtifactFlowMapProducer(BeanManager beanManager)
     {
+        super(beanManager);
+        
         super.name("flowScope")
                 .scope(FlowScoped.class)
                 .qualifiers(new FlowMapAnnotationLiteral())

Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactProducerExtension.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactProducerExtension.java?rev=1807859&r1=1807858&r2=1807859&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactProducerExtension.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactProducerExtension.java Sat Sep  9 08:50:20 2017
@@ -54,7 +54,7 @@ public class JsfArtifactProducerExtensio
     {
         if (registerCdiProducers)
         {
-            afterBeanDiscovery.addBean(new JsfArtifactFlowMapProducer());
+            afterBeanDiscovery.addBean(new JsfArtifactFlowMapProducer(beanManager));
         }
     }
 

Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/converter/DynamicConverterProducer.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/converter/DynamicConverterProducer.java?rev=1807859&r1=1807858&r2=1807859&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/converter/DynamicConverterProducer.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/converter/DynamicConverterProducer.java Sat Sep  9 08:50:20 2017
@@ -19,118 +19,47 @@
 
 package org.apache.myfaces.cdi.converter;
 
-import java.io.Serializable;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import static java.util.Arrays.asList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.enterprise.context.Dependent;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.Typed;
-import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.BeanManager;
-import javax.enterprise.inject.spi.InjectionPoint;
-import javax.enterprise.inject.spi.PassivationCapable;
 import javax.faces.FacesException;
 import javax.faces.convert.Converter;
+import org.apache.myfaces.cdi.util.AbstractDynamicProducer;
 import org.apache.myfaces.shared.util.ClassUtils;
 
 /**
  *
  */
 @Typed
-public class DynamicConverterProducer implements Bean<Converter>, Serializable, PassivationCapable
+public class DynamicConverterProducer extends AbstractDynamicProducer<Converter>
 {
-    private static final long serialVersionUID = 1L;
-
-    private BeanManager beanManager;
-    private ConverterInfo typeInfo;
-    private Set<Type> types;
-    private Class<?> beanClass;
-
     public DynamicConverterProducer(BeanManager beanManager, ConverterInfo typeInfo)
     {
-        this.beanManager = beanManager;
-        this.typeInfo = typeInfo;
-        types = new HashSet<Type>(asList(typeInfo.getType(), Object.class));
-        beanClass = ClassUtils.simpleClassForName(typeInfo.getType().getTypeName());
-    }
-
-    @Override
-    public String getId()
-    {
+        super(beanManager);
+        
         String forClass = typeInfo.getForClass() == null ? "" : 
                 ((typeInfo.getForClass() == Object.class) ? "" : typeInfo.getForClass().getName());
         String converterId = typeInfo.getConverterId() == null ? "" : typeInfo.getConverterId();
-        return ""+typeInfo.getType()+"_"+forClass+"_"+converterId;
-    }
+        String id = "" + typeInfo.getType() + "_" + forClass + "_" + converterId;
 
-    @Override
-    public Class<?> getBeanClass()
-    {
-        return beanClass;
-    }
-
-    @Override
-    public Set<Type> getTypes()
-    {
-        return types;
-    }
-    
-    @Override
-    public Set<Annotation> getQualifiers()
-    {
-        return Collections.singleton(
-                (Annotation) new FacesConverterAnnotationLiteral(
+        FacesConverterAnnotationLiteral literal = new FacesConverterAnnotationLiteral(
                         typeInfo.getForClass() == null ? Object.class : typeInfo.getForClass(), 
-                        typeInfo.getConverterId() == null ? "" : typeInfo.getConverterId(), true));
-    }
-
-    @Override
-    public Class<? extends Annotation> getScope()
-    {
-        return Dependent.class;
-    }
-
-    @Override
-    public String getName()
-    {
-        return null;
-    }
-    
+                        typeInfo.getConverterId() == null ? "" : typeInfo.getConverterId(), true);
 
-    @Override
-    public Set<Class<? extends Annotation>> getStereotypes()
-    {
-        return Collections.emptySet();
+        super.id(id)
+                .scope(Dependent.class)
+                .qualifiers(literal)
+                .types(typeInfo.getType(), Object.class)
+                .beanClass(ClassUtils.simpleClassForName(typeInfo.getType().getTypeName()))
+                .create(e -> createConverter(e));
     }
 
-    @Override
-    public boolean isAlternative()
-    {
-        return false;
-    }
-    
-    @Override
-    public Set<InjectionPoint> getInjectionPoints()
+    protected Converter createConverter(CreationalContext<Converter> cc)
     {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public boolean isNullable()
-    {
-        return true;
-    }
-    
-    @Override
-    public Converter create(CreationalContext<Converter> cc)
-    {
-        Class<? extends Converter> converterClass = (Class<? extends Converter>) beanClass;        
+        Class<? extends Converter> converterClass = (Class<? extends Converter>) getBeanClass();        
         Converter converter = null;
         try
         {
@@ -139,15 +68,10 @@ public class DynamicConverterProducer im
         catch (Exception ex)
         {
             Logger.getLogger(DynamicConverterProducer.class.getName()).log(
-                    Level.SEVERE, "Could not instantiate converter " + beanClass.getName(), ex);
-            throw new FacesException("Could not instantiate converter: " + beanClass.getName(), ex);
+                    Level.SEVERE, "Could not instantiate converter " + converterClass.getName(), ex);
+            throw new FacesException("Could not instantiate converter: " + converterClass.getName(), ex);
             
         }
         return converter;
     }
-
-    @Override
-    public void destroy(Converter t, CreationalContext<Converter> cc)
-    {
-    }
 }

Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/model/DynamicDataModelProducer.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/model/DynamicDataModelProducer.java?rev=1807859&r1=1807858&r2=1807859&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/model/DynamicDataModelProducer.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/model/DynamicDataModelProducer.java Sat Sep  9 08:50:20 2017
@@ -19,120 +19,39 @@
 
 package org.apache.myfaces.cdi.model;
 
-import java.io.Serializable;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import static java.util.Arrays.asList;
-import java.util.Collections;
-import java.util.HashSet;
 import java.util.Map;
-import java.util.Set;
 import javax.enterprise.context.Dependent;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.Typed;
-import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.BeanManager;
-import javax.enterprise.inject.spi.InjectionPoint;
-import javax.enterprise.inject.spi.PassivationCapable;
 import javax.faces.model.DataModel;
+import org.apache.myfaces.cdi.util.AbstractDynamicProducer;
 import org.apache.myfaces.cdi.util.CDIUtils;
-import org.apache.myfaces.shared.util.ClassUtils;
 
 /**
  *
  */
 @Typed
-public class DynamicDataModelProducer implements 
-        Bean< Map<Class<?>,Class<? extends DataModel>> >, Serializable, PassivationCapable
+public class DynamicDataModelProducer extends AbstractDynamicProducer<Map<Class<?>, Class<? extends DataModel>>>
 {
-    private static final long serialVersionUID = 1L;
-
-    private BeanManager beanManager;
-    private DataModelInfo typeInfo;
-    private Set<Type> types;
-    private Class<?> beanClass;
-
     public DynamicDataModelProducer(BeanManager beanManager, DataModelInfo typeInfo)
     {
-        this.beanManager = beanManager;
-        this.typeInfo = typeInfo;
-        types = new HashSet<Type>(asList(typeInfo.getType(), Object.class));
-        beanClass = ClassUtils.simpleClassForName(typeInfo.getType().getTypeName());
-    }
-
-    @Override
-    public String getId()
-    {
-        return ""+typeInfo.getForClass();
+        super(beanManager);
+        
+        FacesDataModelAnnotationLiteral literal = new FacesDataModelAnnotationLiteral(typeInfo.getForClass());
+
+        super.id("" + typeInfo.getForClass())
+                .scope(Dependent.class)
+                .qualifiers(literal)
+                .types(typeInfo.getType(), Object.class)
+                .beanClass(Map.class)
+                .create(e -> createDataModel(e));
     }
 
-    @Override
-    public Class<?> getBeanClass()
-    {
-        return Map.class;
-    }
-
-    @Override
-    public Set<Type> getTypes()
-    {
-        return types;
-    }
-    
-    @Override
-    public Set<Annotation> getQualifiers()
-    {
-        return Collections.singleton(
-                (Annotation) new FacesDataModelAnnotationLiteral(typeInfo.getForClass()));
-    }
-
-    @Override
-    public Class<? extends Annotation> getScope()
-    {
-        return Dependent.class;
-    }
-
-    @Override
-    public String getName()
-    {
-        return null;
-    }
-    
-
-    @Override
-    public Set<Class<? extends Annotation>> getStereotypes()
-    {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public boolean isAlternative()
-    {
-        return false;
-    }
-    
-    @Override
-    public Set<InjectionPoint> getInjectionPoints()
-    {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public boolean isNullable()
-    {
-        return true;
-    }
-    
-    @Override
-    public Map<Class<?>,Class<? extends DataModel>> create(
+    protected Map<Class<?>,Class<? extends DataModel>> createDataModel(
             CreationalContext<Map<Class<?>,Class<? extends DataModel>>> cc)
     {
-        FacesDataModelClassBeanHolder holder = CDIUtils.lookup(beanManager, FacesDataModelClassBeanHolder.class);
+        FacesDataModelClassBeanHolder holder = CDIUtils.lookup(getBeanManager(), FacesDataModelClassBeanHolder.class);
         return holder.getClassInstanceToDataModelWrapperClassMap();
     }
-
-    @Override
-    public void destroy(Map<Class<?>,Class<? extends DataModel>> t, 
-            CreationalContext<Map<Class<?>,Class<? extends DataModel>>> cc)
-    {
-    }
 }

Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/util/AbstractDynamicProducer.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/util/AbstractDynamicProducer.java?rev=1807859&r1=1807858&r2=1807859&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/util/AbstractDynamicProducer.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/util/AbstractDynamicProducer.java Sat Sep  9 08:50:20 2017
@@ -29,12 +29,14 @@ import java.util.function.Function;
 import javax.enterprise.context.Dependent;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
 import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.inject.spi.PassivationCapable;
 
 // Inspired by Mojarra's CdiProducer
 public abstract class AbstractDynamicProducer<T> implements Bean<T>, PassivationCapable, Serializable
 {
+    private BeanManager beanManager;
     private String id;
     private String name;
     private Class<?> beanClass;
@@ -43,8 +45,9 @@ public abstract class AbstractDynamicPro
     private Class<? extends Annotation> scope;
     private Function<CreationalContext<T>, T> create;
 
-    public AbstractDynamicProducer()
+    public AbstractDynamicProducer(BeanManager beanManager)
     {
+        this.beanManager = beanManager;
         this.id = this.getClass().getName();
         this.beanClass = Object.class;
         this.types = Collections.singleton(Object.class);
@@ -124,8 +127,11 @@ public abstract class AbstractDynamicPro
         return false;
     }
 
-    
-    
+    public BeanManager getBeanManager()
+    {
+        return beanManager;
+    }
+
     
     public AbstractDynamicProducer<T> name(String name)
     {
@@ -170,6 +176,12 @@ public abstract class AbstractDynamicPro
         return this;
     }
 
+    public AbstractDynamicProducer<T> id(String id)
+    {
+        this.id = id;
+        return this;
+    }
+    
     public AbstractDynamicProducer<T> addToId(Object object)
     {
         id = id + " " + object.toString();

Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/validator/DynamicValidatorProducer.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/validator/DynamicValidatorProducer.java?rev=1807859&r1=1807858&r2=1807859&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/validator/DynamicValidatorProducer.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/validator/DynamicValidatorProducer.java Sat Sep  9 08:50:20 2017
@@ -19,115 +19,44 @@
 
 package org.apache.myfaces.cdi.validator;
 
-import java.io.Serializable;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import static java.util.Arrays.asList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.enterprise.context.Dependent;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.Typed;
-import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.BeanManager;
-import javax.enterprise.inject.spi.InjectionPoint;
-import javax.enterprise.inject.spi.PassivationCapable;
 import javax.faces.FacesException;
 import javax.faces.validator.Validator;
+import org.apache.myfaces.cdi.util.AbstractDynamicProducer;
 import org.apache.myfaces.shared.util.ClassUtils;
 
 /**
  *
  */
 @Typed
-public class DynamicValidatorProducer implements Bean<Validator>, Serializable, PassivationCapable
+public class DynamicValidatorProducer extends AbstractDynamicProducer<Validator>
 {
-    private static final long serialVersionUID = 1L;
-
-    private BeanManager beanManager;
-    private ValidatorInfo typeInfo;
-    private Set<Type> types;
-    private Class<?> beanClass;
-
     public DynamicValidatorProducer(BeanManager beanManager, ValidatorInfo typeInfo)
     {
-        this.beanManager = beanManager;
-        this.typeInfo = typeInfo;
-        types = new HashSet<Type>(asList(typeInfo.getType(), Object.class));
-        beanClass = ClassUtils.simpleClassForName(typeInfo.getType().getTypeName());
-    }
+        super(beanManager);
+        
+        String validatorId = typeInfo.getValidatorId() == null ? "" : typeInfo.getValidatorId();
+        String id = "" + typeInfo.getType() + "_" + validatorId;
 
-    @Override
-    public String getId()
-    {
-        String converterId = typeInfo.getValidatorId() == null ? "" : typeInfo.getValidatorId();
-        return ""+typeInfo.getType()+"_"+converterId;
-    }
+        FacesValidatorAnnotationLiteral literal = new FacesValidatorAnnotationLiteral(
+                        typeInfo.getValidatorId() == null ? "" : typeInfo.getValidatorId(), false, true);
 
-    @Override
-    public Class<?> getBeanClass()
-    {
-        return beanClass;
+        super.id(id)
+                .scope(Dependent.class)
+                .qualifiers(literal)
+                .types(typeInfo.getType(), Object.class)
+                .beanClass(ClassUtils.simpleClassForName(typeInfo.getType().getTypeName()))
+                .create(e -> createValidator(e));
     }
 
-    @Override
-    public Set<Type> getTypes()
-    {
-        return types;
-    }
-    
-    @Override
-    public Set<Annotation> getQualifiers()
+    protected Validator createValidator(CreationalContext<Validator> cc)
     {
-        return Collections.singleton(
-                (Annotation) new FacesValidatorAnnotationLiteral(
-                        typeInfo.getValidatorId() == null ? "" : typeInfo.getValidatorId(), false, true));
-    }
-
-    @Override
-    public Class<? extends Annotation> getScope()
-    {
-        return Dependent.class;
-    }
-
-    @Override
-    public String getName()
-    {
-        return null;
-    }
-    
-
-    @Override
-    public Set<Class<? extends Annotation>> getStereotypes()
-    {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public boolean isAlternative()
-    {
-        return false;
-    }
-    
-    @Override
-    public Set<InjectionPoint> getInjectionPoints()
-    {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public boolean isNullable()
-    {
-        return true;
-    }
-    
-    @Override
-    public Validator create(CreationalContext<Validator> cc)
-    {
-        Class<? extends Validator> converterClass = (Class<? extends Validator>) beanClass;        
+        Class<? extends Validator> converterClass = (Class<? extends Validator>) getBeanClass();        
         Validator converter = null;
         try
         {
@@ -136,15 +65,11 @@ public class DynamicValidatorProducer im
         catch (Exception ex)
         {
             Logger.getLogger(DynamicValidatorProducer.class.getName()).log(
-                    Level.SEVERE, "Could not instantiate converter " + beanClass.getName(), ex);
-            throw new FacesException("Could not instantiate converter: " + beanClass.getName(), ex);
+                    Level.SEVERE, "Could not instantiate converter " + converterClass.getName(), ex);
+            throw new FacesException("Could not instantiate converter: " + converterClass.getName(), ex);
             
         }
         return converter;
     }
 
-    @Override
-    public void destroy(Validator t, CreationalContext<Validator> cc)
-    {
-    }
 }