Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 2C473200C13 for ; Mon, 6 Feb 2017 22:18:59 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 2AC81160B56; Mon, 6 Feb 2017 21:18:59 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 02CD4160B53 for ; Mon, 6 Feb 2017 22:18:57 +0100 (CET) Received: (qmail 22629 invoked by uid 500); 6 Feb 2017 21:18:57 -0000 Mailing-List: contact commits-help@aries.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@aries.apache.org Delivered-To: mailing list commits@aries.apache.org Received: (qmail 22618 invoked by uid 99); 6 Feb 2017 21:18:57 -0000 Received: from Unknown (HELO svn01-us-west.apache.org) (209.188.14.144) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 06 Feb 2017 21:18:57 +0000 Received: from svn01-us-west.apache.org (localhost [127.0.0.1]) by svn01-us-west.apache.org (ASF Mail Server at svn01-us-west.apache.org) with ESMTP id A89493A108E for ; Mon, 6 Feb 2017 21:18:56 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1781955 - /aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ Date: Mon, 06 Feb 2017 21:18:56 -0000 To: commits@aries.apache.org From: alien11689@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20170206211856.A89493A108E@svn01-us-west.apache.org> archived-at: Mon, 06 Feb 2017 21:18:59 -0000 Author: alien11689 Date: Mon Feb 6 21:18:56 2017 New Revision: 1781955 URL: http://svn.apache.org/viewvc?rev=1781955&view=rev Log: [REFACTOR] Refactor bean name generation Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/NamingHelper.java - copied, changed from r1781793, aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/QualifierHelper.java Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/AnnotationHelper.java aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Argument.java aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanFromFactory.java aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Blueprint.java aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Introspector.java aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Property.java Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/AnnotationHelper.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/AnnotationHelper.java?rev=1781955&r1=1781954&r2=1781955&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/AnnotationHelper.java (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/AnnotationHelper.java Mon Feb 6 21:18:56 2017 @@ -85,4 +85,13 @@ class AnnotationHelper { } return false; } + + static boolean findSingleton(Class clazz) { + for (Class singletonAnnotation : Handlers.SINGLETONS) { + if (clazz.getAnnotation(singletonAnnotation) != null) { + return true; + } + } + return false; + } } Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Argument.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Argument.java?rev=1781955&r1=1781954&r2=1781955&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Argument.java (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Argument.java Mon Feb 6 21:18:56 2017 @@ -18,18 +18,53 @@ */ package org.apache.aries.blueprint.plugin.model; +import org.apache.aries.blueprint.plugin.handlers.Handlers; +import org.apache.aries.blueprint.plugin.spi.CustomDependencyAnnotationHandler; import org.apache.aries.blueprint.plugin.spi.XmlWriter; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; +import java.lang.annotation.Annotation; + +import static org.apache.aries.blueprint.plugin.model.AnnotationHelper.findName; +import static org.apache.aries.blueprint.plugin.model.AnnotationHelper.findValue; +import static org.apache.aries.blueprint.plugin.model.NamingHelper.getBeanName; class Argument implements XmlWriter{ private final String ref; private final String value; - Argument(String ref, String value) { - this.ref = ref; + Argument(BlueprintRegistry blueprintRegistry, Class argumentClass, Annotation[] annotations) { + String value = findValue(annotations); + String ref = findName(annotations); + + for (CustomDependencyAnnotationHandler customDependencyAnnotationHandler : Handlers.CUSTOM_DEPENDENCY_ANNOTATION_HANDLERS) { + Annotation annotation = (Annotation) AnnotationHelper.findAnnotation(annotations, customDependencyAnnotationHandler.getAnnotation()); + if (annotation != null) { + String generatedRef = customDependencyAnnotationHandler.handleDependencyAnnotation(argumentClass, annotation, ref, blueprintRegistry); + if (generatedRef != null) { + ref = generatedRef; + break; + } + } + } + + if (ref == null && value == null) { + BeanTemplate template = new BeanTemplate(argumentClass, annotations); + BeanRef bean = blueprintRegistry.getMatching(template); + if (bean != null) { + ref = bean.id; + } else { + String name = findName(annotations); + if (name != null) { + ref = name; + } else { + ref = getBeanName(argumentClass); + } + } + } this.value = value; + this.ref = ref; } String getRef() { Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java?rev=1781955&r1=1781954&r2=1781955&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java Mon Feb 6 21:18:56 2017 @@ -26,7 +26,6 @@ import org.apache.aries.blueprint.plugin import org.apache.aries.blueprint.plugin.spi.FieldAnnotationHandler; import org.apache.aries.blueprint.plugin.spi.InjectLikeHandler; import org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler; -import org.apache.aries.blueprint.plugin.spi.NamedLikeHandler; import org.apache.aries.blueprint.plugin.spi.XmlWriter; import javax.xml.stream.XMLStreamException; @@ -44,7 +43,9 @@ import java.util.SortedSet; import java.util.TreeSet; import static org.apache.aries.blueprint.plugin.model.AnnotationHelper.findName; +import static org.apache.aries.blueprint.plugin.model.AnnotationHelper.findSingleton; import static org.apache.aries.blueprint.plugin.model.AnnotationHelper.findValue; +import static org.apache.aries.blueprint.plugin.model.NamingHelper.getBeanName; class Bean implements BeanEnricher, XmlWriter { @@ -57,19 +58,17 @@ class Bean implements BeanEnricher, XmlW final Map attributes = new HashMap<>(); final Map beanContentWriters = new HashMap<>(); protected final ContextEnricher contextEnricher; + private final Introspector introspector; Bean(Class clazz, ContextEnricher contextEnricher) { this.clazz = clazz; this.id = getBeanName(clazz); this.contextEnricher = contextEnricher; - Introspector introspector = new Introspector(clazz); + introspector = new Introspector(clazz); setScope(clazz); - handleCustomBeanAnnotations(); - handleFieldsAnnotation(introspector); - handleMethodsAnnotation(introspector); } @@ -110,18 +109,8 @@ class Bean implements BeanEnricher, XmlW } } - private boolean findSingleton(Class clazz) { - for (Class singletonAnnotation : Handlers.SINGLETONS) { - if (clazz.getAnnotation(singletonAnnotation) != null) { - return true; - } - } - return false; - } - - private void resolveMethods(BlueprintRegistry blueprintRegistry) { - for (Method method : new Introspector(clazz).methodsWith(AnnotationHelper.injectDependencyAnnotations)) { + for (Method method : introspector.methodsWith(AnnotationHelper.injectDependencyAnnotations)) { Property prop = Property.create(blueprintRegistry, method); if (prop != null) { properties.add(prop); @@ -130,7 +119,7 @@ class Bean implements BeanEnricher, XmlW } private void resolveFields(BlueprintRegistry matcher) { - for (Field field : new Introspector(clazz).fieldsWith(AnnotationHelper.injectDependencyAnnotations)) { + for (Field field : introspector.fieldsWith(AnnotationHelper.injectDependencyAnnotations)) { Property prop = Property.create(matcher, field); if (prop != null) { properties.add(prop); @@ -159,45 +148,10 @@ class Bean implements BeanEnricher, XmlW void resolveArguments(BlueprintRegistry blueprintRegistry, Class[] parameterTypes, Annotation[][] parameterAnnotations) { for (int i = 0; i < parameterTypes.length; ++i) { - Annotation[] annotations = parameterAnnotations[i]; - String value = findValue(annotations); - String ref = findName(annotations); - - for (CustomDependencyAnnotationHandler customDependencyAnnotationHandler : Handlers.CUSTOM_DEPENDENCY_ANNOTATION_HANDLERS) { - Annotation annotation = (Annotation) AnnotationHelper.findAnnotation(annotations, customDependencyAnnotationHandler.getAnnotation()); - if (annotation != null) { - String generatedRef = customDependencyAnnotationHandler.handleDependencyAnnotation(parameterTypes[i], annotation, ref, blueprintRegistry); - if (generatedRef != null) { - ref = generatedRef; - break; - } - } - } - - if (ref == null && value == null) { - BeanTemplate template = new BeanTemplate(parameterTypes[i], annotations); - BeanRef bean = blueprintRegistry.getMatching(template); - if (bean != null) { - ref = bean.id; - } else { - String name = findName(annotations); - if (name != null) { - ref = name; - } else { - ref = getBeanName(parameterTypes[i]); - } - } - } - - constructorArguments.add(new Argument(ref, value)); + constructorArguments.add(new Argument(blueprintRegistry, parameterTypes[i], parameterAnnotations[i])); } } - @Override - public String toString() { - return clazz.getName(); - } - private void writeProperties(XMLStreamWriter writer) throws XMLStreamException { for (Property property : properties) { property.write(writer); @@ -267,25 +221,4 @@ class Bean implements BeanEnricher, XmlW BeanRef toBeanRef() { return new BeanRef(clazz, id, clazz.getAnnotations()); } - - static String getBeanName(Class clazz) { - return getBeanName(clazz, clazz); - } - - private static String getBeanName(Class clazz, AnnotatedElement annotatedElement) { - for (NamedLikeHandler namedLikeHandler : Handlers.NAMED_LIKE_HANDLERS) { - if (annotatedElement.getAnnotation(namedLikeHandler.getAnnotation()) != null) { - String name = namedLikeHandler.getName(clazz, annotatedElement); - if (name != null) { - return name; - } - } - } - String name = clazz.getSimpleName(); - return getBeanNameFromSimpleName(name); - } - - private static String getBeanNameFromSimpleName(String name) { - return name.substring(0, 1).toLowerCase() + name.substring(1, name.length()); - } } Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanFromFactory.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanFromFactory.java?rev=1781955&r1=1781954&r2=1781955&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanFromFactory.java (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanFromFactory.java Mon Feb 6 21:18:56 2017 @@ -28,21 +28,25 @@ import java.lang.reflect.Method; class BeanFromFactory extends Bean { private final Method producingMethod; - BeanFromFactory(Class clazz, Bean factoryBean, Method factoryMethod, ContextEnricher contextEnricher) { - this(clazz, null, factoryBean, factoryMethod, contextEnricher); - } - - BeanFromFactory(Class clazz, String id, Bean factoryBean, Method factoryMethod, ContextEnricher contextEnricher) { - super(clazz, contextEnricher); - if (id != null) { - this.id = id; + BeanFromFactory(Bean factoryBean, Method factoryMethod, ContextEnricher contextEnricher) { + super(factoryMethod.getReturnType(), contextEnricher); + String forcedId = AnnotationHelper.findName(factoryMethod.getAnnotations()); + if (forcedId != null) { + this.id = forcedId; } this.producingMethod = factoryMethod; + setScope(factoryMethod); handleCustomBeanAnnotations(); attributes.put("factory-ref", factoryBean.id); attributes.put("factory-method", producingMethod.getName()); } + private void setScope(Method factoryMethod) { + if (AnnotationHelper.findSingletons(factoryMethod.getAnnotations())) { + attributes.put("scope", "singleton"); + } + } + private void handleCustomBeanAnnotations() { for (BeanAnnotationHandler beanAnnotationHandler : Handlers.BEAN_ANNOTATION_HANDLERS) { Object annotation = AnnotationHelper.findAnnotation(producingMethod.getAnnotations(), beanAnnotationHandler.getAnnotation()); @@ -52,10 +56,6 @@ class BeanFromFactory extends Bean { } } - void setSingleton() { - attributes.put("scope", "singleton"); - } - @Override protected void resolveArguments(BlueprintRegistry matcher) { resolveArguments(matcher, producingMethod.getParameterTypes(), producingMethod.getParameterAnnotations()); Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Blueprint.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Blueprint.java?rev=1781955&r1=1781954&r2=1781955&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Blueprint.java (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Blueprint.java Mon Feb 6 21:18:56 2017 @@ -80,17 +80,7 @@ public class Blueprint implements Bluepr if (!isFactoryMethod(method)) { continue; } - String name = AnnotationHelper.findName(method.getAnnotations()); - Class beanClass = method.getReturnType(); - BeanFromFactory beanFromFactory; - if (name == null) { - beanFromFactory = new BeanFromFactory(beanClass, factoryBean, method, this); - } else { - beanFromFactory = new BeanFromFactory(beanClass, name, factoryBean, method, this); - } - if (AnnotationHelper.findSingletons(method.getAnnotations())) { - beanFromFactory.setSingleton(); - } + BeanFromFactory beanFromFactory = new BeanFromFactory(factoryBean, method, this); beanRefStore.addBean(beanFromFactory.toBeanRef()); generatedBeans.add(beanFromFactory); } Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Introspector.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Introspector.java?rev=1781955&r1=1781954&r2=1781955&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Introspector.java (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Introspector.java Mon Feb 6 21:18:56 2017 @@ -37,7 +37,7 @@ import java.util.Set; * Class to find uniquely-named fields declared in a class hierarchy with specified annotations. */ final class Introspector { - private Class originalClazz; + private final Class originalClazz; /** * @param clazz the class to introspect (including those defined in parent classes). @@ -112,14 +112,6 @@ final class Introspector { } return false; } - - public Method methodWith(Class annotationClass) { - List methods = methodsWith(annotationClass); - Preconditions.checkArgument(methods.size() <= 1, - "Found %d methods annotated with %s in class %s, but only 1 allowed", - methods.size(), annotationClass.getName(), originalClazz.getName()); - return Iterables.getOnlyElement(methods, null); - } @SafeVarargs final List methodsWith(Class... annotationClasses) { Copied: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/NamingHelper.java (from r1781793, aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/QualifierHelper.java) URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/NamingHelper.java?p2=aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/NamingHelper.java&p1=aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/QualifierHelper.java&r1=1781793&r2=1781955&rev=1781955&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/QualifierHelper.java (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/NamingHelper.java Mon Feb 6 21:18:56 2017 @@ -18,31 +18,23 @@ */ package org.apache.aries.blueprint.plugin.model; -import org.apache.aries.blueprint.plugin.handlers.Handlers; +import java.lang.reflect.AnnotatedElement; -import java.lang.annotation.Annotation; -import java.util.HashSet; -import java.util.Set; +class NamingHelper { + static String getBeanName(Class clazz) { + return getBeanName(clazz, clazz); + } -class QualifierHelper { - static Set getQualifiers(Annotation[] annotations) { - final Set qualifiers = new HashSet<>(); - for (Annotation ann : annotations) { - if (isQualifier(ann) != null) { - qualifiers.add(ann); - } + private static String getBeanName(Class clazz, AnnotatedElement annotatedElement) { + String name = AnnotationHelper.findName(annotatedElement.getAnnotations()); + if (name != null) { + return name; } - return qualifiers; + return getBeanNameFromSimpleName(clazz.getSimpleName()); } - private static Object isQualifier(Annotation ann) { - for (Class qualifingAnnotationClass : Handlers.QUALIFING_ANNOTATION_CLASSES) { - Object annotation = ann.annotationType().getAnnotation(qualifingAnnotationClass); - if (annotation != null) { - return annotation; - } - } - return null; + private static String getBeanNameFromSimpleName(String name) { + return name.substring(0, 1).toLowerCase() + name.substring(1, name.length()); } } Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Property.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Property.java?rev=1781955&r1=1781954&r2=1781955&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Property.java (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Property.java Mon Feb 6 21:18:56 2017 @@ -31,6 +31,7 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; import static org.apache.aries.blueprint.plugin.model.AnnotationHelper.findName; +import static org.apache.aries.blueprint.plugin.model.NamingHelper.getBeanName; class Property implements Comparable, XmlWriter { public final String name; @@ -120,7 +121,7 @@ class Property implements Comparable clazz, AnnotatedElement annotatedElement) { for (NamedLikeHandler namedLikeHandler : Handlers.NAMED_LIKE_HANDLERS) { - if (method.getAnnotation(namedLikeHandler.getAnnotation()) != null) { - String name = namedLikeHandler.getName(method.getParameterTypes()[0], method); + if (annotatedElement.getAnnotation(namedLikeHandler.getAnnotation()) != null) { + String name = namedLikeHandler.getName(clazz, annotatedElement); if (name != null) { return name; }