Author: struberg
Date: Mon Jun 19 19:57:53 2017
New Revision: 1799274
URL: http://svn.apache.org/viewvc?rev=1799274&view=rev
Log:
OWB-1182 switch default name calculation to supplier for lazy evaluation
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanAttributesBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanAttributesBuilder.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanAttributesBuilder.java?rev=1799274&r1=1799273&r2=1799274&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanAttributesBuilder.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanAttributesBuilder.java
Mon Jun 19 19:57:53 2017
@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
+import java.util.function.Supplier;
import javax.decorator.Decorator;
import javax.enterprise.context.Dependent;
@@ -505,33 +506,25 @@ public abstract class BeanAttributesBuil
protected abstract void defineName();
- protected void defineName(Annotated annotated, String name)
+ protected void defineName(Annotated annotated, Supplier<String> name)
{
- Annotation[] anns = AnnotationUtil.asArray(annotated.getAnnotations());
- Named nameAnnot = null;
+ Named nameAnnot = annotated.getAnnotation(Named.class);
boolean isDefault = false;
- for (Annotation ann : anns)
- {
- if (ann.annotationType().equals(Named.class))
- {
- nameAnnot = (Named) ann;
- break;
- }
- }
- if (nameAnnot == null) // no @Named
+ if (nameAnnot == null)
{
+ // no @Named
+
// Check for stereottype
if
(webBeansContext.getAnnotationManager().hasNamedOnStereoTypes(stereotypes))
{
isDefault = true;
}
-
}
else
- // yes @Named
{
- if (nameAnnot.value().equals(""))
+ // yes @Named
+ if (nameAnnot.value().length() == 0)
{
isDefault = true;
}
@@ -539,12 +532,11 @@ public abstract class BeanAttributesBuil
{
this.name = nameAnnot.value();
}
-
}
if (isDefault)
{
- this.name = name;
+ this.name = name.get();
}
}
@@ -661,11 +653,12 @@ public abstract class BeanAttributesBuil
} while(annotatedToSpecialize.getAnnotation(Specializes.class)
!= null);
- defineName(annotatedToSpecialize,
WebBeansUtil.getManagedBeanDefaultName(annotatedToSpecialize.getJavaClass().getSimpleName()));
+ AnnotatedType<? super C> finalAnnotatedToSpecialize =
annotatedToSpecialize;
+ defineName(annotatedToSpecialize, () ->
getManagedBeanDefaultName(finalAnnotatedToSpecialize));
}
if (name == null)
{
- defineName(getAnnotated(),
WebBeansUtil.getManagedBeanDefaultName(getAnnotated().getJavaClass().getSimpleName()));
+ defineName(getAnnotated(), () ->
getManagedBeanDefaultName(getAnnotated()));
}
else
{
@@ -721,7 +714,7 @@ public abstract class BeanAttributesBuil
@Override
protected void defineName()
{
- defineName(getAnnotated(),
WebBeansUtil.getProducerDefaultName(getAnnotated().getJavaMember().getName()));
+ defineName(getAnnotated(), () ->
getProducerDefaultName(getAnnotated()));
}
@Override
@@ -766,11 +759,11 @@ public abstract class BeanAttributesBuil
if (getAnnotated().isAnnotationPresent(Specializes.class))
{
AnnotatedMethod<? super M> superAnnotated =
getSuperAnnotated();
- defineName(superAnnotated,
WebBeansUtil.getProducerDefaultName(superAnnotated.getJavaMember().getName()));
+ defineName(superAnnotated, () ->
getProducerDefaultName(superAnnotated));
}
if (name == null)
{
- defineName(getAnnotated(),
WebBeansUtil.getProducerDefaultName(getAnnotated().getJavaMember().getName()));
+ defineName(getAnnotated(), () ->
getProducerDefaultName(getAnnotated()));
}
else
{
@@ -820,6 +813,54 @@ public abstract class BeanAttributesBuil
}
}
+ protected String getManagedBeanDefaultName(AnnotatedType<?> annotatedType)
+ {
+ String clazzName = annotatedType.getJavaClass().getSimpleName();
+ Asserts.assertNotNull(annotatedType);
+
+ if(clazzName.length() > 0)
+ {
+ StringBuilder name = new StringBuilder(clazzName);
+ name.setCharAt(0, Character.toLowerCase(name.charAt(0)));
+
+ return name.toString();
+ }
+
+ return clazzName;
+ }
+
+ protected String getProducerDefaultName(AnnotatedMember<?> annotatedMember)
+ {
+ String memberName = annotatedMember.getJavaMember().getName();
+ StringBuilder buffer = new StringBuilder(memberName);
+
+ if (buffer.length() > 3 && (buffer.substring(0, 3).equals("get") ||
buffer.substring(0, 3).equals("set")))
+ {
+
+ if(Character.isUpperCase(buffer.charAt(3)))
+ {
+ buffer.setCharAt(3, Character.toLowerCase(buffer.charAt(3)));
+ }
+
+ return buffer.substring(3);
+ }
+ else if ((buffer.length() > 2 && buffer.substring(0, 2).equals("is")))
+ {
+ if(Character.isUpperCase(buffer.charAt(2)))
+ {
+ buffer.setCharAt(2, Character.toLowerCase(buffer.charAt(2)));
+ }
+
+ return buffer.substring(2);
+ }
+
+ else
+ {
+ buffer.setCharAt(0, Character.toLowerCase(buffer.charAt(0)));
+ return buffer.toString();
+ }
+ }
+
private abstract static class AnnotatedMemberBeanAttributesBuilder<M, A
extends AnnotatedMember<M>> extends BeanAttributesBuilder<M, A>
{
protected AnnotatedMemberBeanAttributesBuilder(WebBeansContext
webBeansContext, A annotated)
@@ -837,4 +878,6 @@ public abstract class BeanAttributesBuil
return
webBeansContext.getAnnotatedElementFactory().getAnnotatedType(superclass);
}
}
+
+
}
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=1799274&r1=1799273&r2=1799274&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
Mon Jun 19 19:57:53 2017
@@ -575,53 +575,6 @@ public final class WebBeansUtil
return new InjectionPointBean(webBeansContext);
}
- public static String getManagedBeanDefaultName(String clazzName)
- {
- Asserts.assertNotNull(clazzName);
-
- if(clazzName.length() > 0)
- {
- StringBuilder name = new StringBuilder(clazzName);
- name.setCharAt(0, Character.toLowerCase(name.charAt(0)));
-
- return name.toString();
- }
-
- return clazzName;
- }
-
- public static String getProducerDefaultName(String methodName)
- {
- StringBuilder buffer = new StringBuilder(methodName);
-
- if (buffer.length() > 3 && (buffer.substring(0, 3).equals("get") ||
buffer.substring(0, 3).equals("set")))
- {
-
- if(Character.isUpperCase(buffer.charAt(3)))
- {
- buffer.setCharAt(3, Character.toLowerCase(buffer.charAt(3)));
- }
-
- return buffer.substring(3);
- }
- else if ((buffer.length() > 2 && buffer.substring(0, 2).equals("is")))
- {
- if(Character.isUpperCase(buffer.charAt(2)))
- {
- buffer.setCharAt(2, Character.toLowerCase(buffer.charAt(2)));
- }
-
- return buffer.substring(2);
- }
-
- else
- {
- buffer.setCharAt(0, Character.toLowerCase(buffer.charAt(0)));
- return buffer.toString();
- }
- }
-
-
/**
* Configure a list of producer method beans, which override the same
method
* and the bean classes are directly extended each other.