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)
- {
- }
}