Author: alien11689 Date: Tue Aug 30 06:08:20 2016 New Revision: 1758328 URL: http://svn.apache.org/viewvc?rev=1758328&view=rev Log: [ARIES-1602] Use @Produces via spi handler
Added: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/ProducesHandler.java aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanFromFactory.java - copied, changed from r1758278, aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ProducedBean.java aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BlueprintRegister.java - copied, changed from r1758278, aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BlueprinRegister.java aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/FactoryMethodFinder.java - copied, changed from r1757990, aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BeanFinder.java aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.FactoryMethodFinder - copied, changed from r1757990, aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanFinder Removed: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BlueprinRegister.java aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ProducedBean.java Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Extensions.java aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Generator.java aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.java aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Property.java aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Extensions.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Extensions.java?rev=1758328&r1=1758327&r2=1758328&view=diff ============================================================================== --- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Extensions.java (original) +++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Extensions.java Tue Aug 30 06:08:20 2016 @@ -18,10 +18,11 @@ */ package org.apache.aries.blueprint.plugin; -import org.apache.aries.blueprint.plugin.spi.BeanFinder; import org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler; +import org.apache.aries.blueprint.plugin.spi.BeanFinder; import org.apache.aries.blueprint.plugin.spi.CustomDependencyAnnotationHandler; import org.apache.aries.blueprint.plugin.spi.CustomFactoryMethodAnnotationHandler; +import org.apache.aries.blueprint.plugin.spi.FactoryMethodFinder; import org.apache.aries.blueprint.plugin.spi.FieldAnnotationHandler; import org.apache.aries.blueprint.plugin.spi.InjectLikeHandler; import org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler; @@ -44,6 +45,7 @@ public class Extensions { public static final List<CustomDependencyAnnotationHandler<? extends Annotation>> customDependencyAnnotationHandlers = new ArrayList<>(); public static final List<MethodAnnotationHandler<? extends Annotation>> methodAnnotationHandlers = new ArrayList<>(); public static final List<FieldAnnotationHandler<? extends Annotation>> fieldAnnotationHandlers = new ArrayList<>(); + public static final List<Class<? extends Annotation>> factoryMethodAnnotationClasses = new ArrayList<>(); static { for (BeanFinder beanFinder : ServiceLoader.load(BeanFinder.class)) { @@ -84,5 +86,9 @@ public class Extensions { for (FieldAnnotationHandler<? extends Annotation> fieldAnnotationHandler : ServiceLoader.load(FieldAnnotationHandler.class)) { fieldAnnotationHandlers.add(fieldAnnotationHandler); } + + for (FactoryMethodFinder<? extends Annotation> factoryMethodFinder : ServiceLoader.load(FactoryMethodFinder.class)) { + factoryMethodAnnotationClasses.add((Class<? extends Annotation>) factoryMethodFinder.factoryMethodAnnotation()); + } } } Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Generator.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Generator.java?rev=1758328&r1=1758327&r2=1758328&view=diff ============================================================================== --- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Generator.java (original) +++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Generator.java Tue Aug 30 06:08:20 2016 @@ -22,7 +22,7 @@ import org.apache.aries.blueprint.plugin import org.apache.aries.blueprint.plugin.model.ArgumentWriter; import org.apache.aries.blueprint.plugin.model.Bean; import org.apache.aries.blueprint.plugin.model.Context; -import org.apache.aries.blueprint.plugin.model.ProducedBean; +import org.apache.aries.blueprint.plugin.model.BeanFromFactory; import org.apache.aries.blueprint.plugin.model.Property; import org.apache.aries.blueprint.plugin.model.PropertyWriter; import org.apache.aries.blueprint.plugin.spi.BlueprintConfiguration; @@ -103,8 +103,8 @@ public class Generator implements Proper for (Map.Entry<String, String> entry : attributes.entrySet()) { writer.writeAttribute(entry.getKey(), entry.getValue()); } - if (bean instanceof ProducedBean) { - writeFactory((ProducedBean) bean); + if (bean instanceof BeanFromFactory) { + writeFactory((BeanFromFactory) bean); } writer.writeCharacters("\n"); @@ -115,7 +115,7 @@ public class Generator implements Proper } } - private void writeFactory(ProducedBean bean) throws XMLStreamException { + private void writeFactory(BeanFromFactory bean) throws XMLStreamException { writer.writeAttribute("factory-ref", bean.factoryBean.id); writer.writeAttribute("factory-method", bean.factoryMethod); } Added: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/ProducesHandler.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/ProducesHandler.java?rev=1758328&view=auto ============================================================================== --- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/ProducesHandler.java (added) +++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/ProducesHandler.java Tue Aug 30 06:08:20 2016 @@ -0,0 +1,30 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.aries.blueprint.plugin.javax; + +import org.apache.aries.blueprint.plugin.spi.FactoryMethodFinder; + +import javax.enterprise.inject.Produces; + +public class ProducesHandler implements FactoryMethodFinder<Produces> { + @Override + public Class<Produces> factoryMethodAnnotation() { + return Produces.class; + } +} Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java?rev=1758328&r1=1758327&r2=1758328&view=diff ============================================================================== --- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java (original) +++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java Tue Aug 30 06:08:20 2016 @@ -70,10 +70,10 @@ public class Bean extends BeanRef implem handleMethodsAnnotation(introspector); } - public void resolve(BlueprinRegister blueprinRegister) { - resolveArguments(blueprinRegister); - resolveFields(blueprinRegister); - resolveMethods(blueprinRegister); + public void resolve(BlueprintRegister blueprintRegister) { + resolveArguments(blueprintRegister); + resolveFields(blueprintRegister); + resolveMethods(blueprintRegister); } private void handleMethodsAnnotation(Introspector introspector) { @@ -117,16 +117,16 @@ public class Bean extends BeanRef implem } - private void resolveMethods(BlueprinRegister blueprinRegister) { + private void resolveMethods(BlueprintRegister blueprintRegister) { for (Method method : new Introspector(clazz).methodsWith(AnnotationHelper.injectDependencyAnnotations)) { - Property prop = Property.create(blueprinRegister, method); + Property prop = Property.create(blueprintRegister, method); if (prop != null) { properties.add(prop); } } } - private void resolveFields(BlueprinRegister matcher) { + private void resolveFields(BlueprintRegister matcher) { for (Field field : new Introspector(clazz).fieldsWith(AnnotationHelper.injectDependencyAnnotations)) { Property prop = Property.create(matcher, field); if (prop != null) { @@ -135,7 +135,7 @@ public class Bean extends BeanRef implem } } - protected void resolveArguments(BlueprinRegister matcher) { + protected void resolveArguments(BlueprintRegister matcher) { Constructor<?>[] declaredConstructors = clazz.getDeclaredConstructors(); for (Constructor constructor : declaredConstructors) { if (declaredConstructors.length == 1 || shouldInject(constructor)) { @@ -154,7 +154,7 @@ public class Bean extends BeanRef implem return false; } - protected void resolveArguments(BlueprinRegister blueprinRegister, Class[] parameterTypes, Annotation[][] parameterAnnotations) { + protected void resolveArguments(BlueprintRegister blueprintRegister, Class[] parameterTypes, Annotation[][] parameterAnnotations) { for (int i = 0; i < parameterTypes.length; ++i) { Annotation[] annotations = parameterAnnotations[i]; String value = findValue(annotations); @@ -163,7 +163,7 @@ public class Bean extends BeanRef implem for (CustomDependencyAnnotationHandler customDependencyAnnotationHandler : Extensions.customDependencyAnnotationHandlers) { Annotation annotation = (Annotation) AnnotationHelper.findAnnotation(annotations, customDependencyAnnotationHandler.getAnnotation()); if (annotation != null) { - String generatedRef = customDependencyAnnotationHandler.handleDependencyAnnotation(parameterTypes[i], annotation, ref, blueprinRegister); + String generatedRef = customDependencyAnnotationHandler.handleDependencyAnnotation(parameterTypes[i], annotation, ref, blueprintRegister); if (generatedRef != null) { ref = generatedRef; break; @@ -174,7 +174,7 @@ public class Bean extends BeanRef implem if (ref == null && value == null) { BeanRef template = new BeanRef(parameterTypes[i]); template.setQualifiersFromAnnotations(annotations); - BeanRef bean = blueprinRegister.getMatching(template); + BeanRef bean = blueprintRegister.getMatching(template); if (bean != null) { ref = bean.id; } else { Copied: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanFromFactory.java (from r1758278, aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ProducedBean.java) URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanFromFactory.java?p2=aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanFromFactory.java&p1=aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ProducedBean.java&r1=1758278&r2=1758328&rev=1758328&view=diff ============================================================================== --- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ProducedBean.java (original) +++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanFromFactory.java Tue Aug 30 06:08:20 2016 @@ -25,16 +25,16 @@ import org.apache.aries.blueprint.plugin import java.lang.reflect.Method; -public class ProducedBean extends Bean { +public class BeanFromFactory extends Bean { public String factoryMethod; public BeanRef factoryBean; private Method producingMethod; - public ProducedBean(Class<?> clazz, BeanRef factoryBean, Method factoryMethod, ContextEnricher contextEnricher) { + public BeanFromFactory(Class<?> clazz, BeanRef factoryBean, Method factoryMethod, ContextEnricher contextEnricher) { this(clazz, null, factoryBean, factoryMethod, contextEnricher); } - public ProducedBean(Class<?> clazz, String id, BeanRef factoryBean, Method factoryMethod, ContextEnricher contextEnricher) { + public BeanFromFactory(Class<?> clazz, String id, BeanRef factoryBean, Method factoryMethod, ContextEnricher contextEnricher) { super(clazz, contextEnricher); if (id != null) { this.id = id; @@ -59,7 +59,7 @@ public class ProducedBean extends Bean { } @Override - protected void resolveArguments(BlueprinRegister matcher) { + protected void resolveArguments(BlueprintRegister matcher) { resolveArguments(matcher, producingMethod.getParameterTypes(), producingMethod.getParameterAnnotations()); } } Copied: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BlueprintRegister.java (from r1758278, aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BlueprinRegister.java) URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BlueprintRegister.java?p2=aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BlueprintRegister.java&p1=aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BlueprinRegister.java&r1=1758278&r2=1758328&rev=1758328&view=diff ============================================================================== --- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BlueprinRegister.java (original) +++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BlueprintRegister.java Tue Aug 30 06:08:20 2016 @@ -20,6 +20,6 @@ package org.apache.aries.blueprint.plugi import org.apache.aries.blueprint.plugin.spi.ContextEnricher; -public interface BlueprinRegister extends ContextEnricher { +public interface BlueprintRegister extends ContextEnricher { BeanRef getMatching(BeanRef template); } Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.java?rev=1758328&r1=1758327&r2=1758328&view=diff ============================================================================== --- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.java (original) +++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.java Tue Aug 30 06:08:20 2016 @@ -28,7 +28,7 @@ import org.osgi.framework.BundleContext; import org.osgi.service.blueprint.container.BlueprintContainer; import org.osgi.service.blueprint.container.Converter; -import javax.enterprise.inject.Produces; +import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.util.Arrays; import java.util.Collection; @@ -37,7 +37,7 @@ import java.util.Map; import java.util.SortedSet; import java.util.TreeSet; -public class Context implements BlueprinRegister, ContextEnricher { +public class Context implements BlueprintRegister, ContextEnricher { SortedSet<BeanRef> reg = new TreeSet<BeanRef>(); private final Map<String, XmlWriter> blueprintWriters = new HashMap<>(); @@ -70,34 +70,46 @@ public class Context implements Blueprin Bean bean = new Bean(clazz, this); reg.add(bean); reg.addAll(bean.refs); - addProducedBeans(bean); + addBeansFromFactories(bean); } - private void addProducedBeans(BeanRef factoryBean) { + private void addBeansFromFactories(BeanRef factoryBean) { for (Method method : factoryBean.clazz.getMethods()) { - Produces produces = method.getAnnotation(Produces.class); + if (!isFactoryMethod(method)) { + continue; + } String name = AnnotationHelper.findName(method.getAnnotations()); - if (produces != null) { - Class<?> producedClass = method.getReturnType(); - ProducedBean producedBean; - if (name != null) { - producedBean = new ProducedBean(producedClass, name, factoryBean, method, this); - } else { - producedBean = new ProducedBean(producedClass, factoryBean, method, this); - } - if (AnnotationHelper.findSingletons(method.getAnnotations())) { - producedBean.setSingleton(); - } - reg.add(producedBean); - for (CustomFactoryMethodAnnotationHandler customFactoryMethodAnnotationHandler : Extensions.customFactoryMethodAnnotationHandlers) { - if (AnnotationHelper.findAnnotation(method.getAnnotations(), customFactoryMethodAnnotationHandler.getAnnotation()) != null) { - customFactoryMethodAnnotationHandler.handleFactoryMethodAnnotation(method, producedBean.id, this); - } + Class<?> beanClass = method.getReturnType(); + BeanFromFactory beanFromFactory; + if (name != null) { + beanFromFactory = new BeanFromFactory(beanClass, name, factoryBean, method, this); + } else { + beanFromFactory = new BeanFromFactory(beanClass, factoryBean, method, this); + } + if (AnnotationHelper.findSingletons(method.getAnnotations())) { + beanFromFactory.setSingleton(); + } + reg.add(beanFromFactory); + for (CustomFactoryMethodAnnotationHandler customFactoryMethodAnnotationHandler : Extensions.customFactoryMethodAnnotationHandlers) { + if (AnnotationHelper.findAnnotation(method.getAnnotations(), customFactoryMethodAnnotationHandler.getAnnotation()) != null) { + customFactoryMethodAnnotationHandler.handleFactoryMethodAnnotation(method, beanFromFactory.id, this); } } } } + private boolean isFactoryMethod(Method method) { + boolean isFactoryMethod = false; + for (Class<? extends Annotation> factoryMethodAnnotationClass : Extensions.factoryMethodAnnotationClasses) { + Annotation annotation = AnnotationHelper.findAnnotation(method.getAnnotations(), factoryMethodAnnotationClass); + if (annotation != null) { + isFactoryMethod = true; + break; + } + } + return isFactoryMethod; + } + public void resolve() { for (Bean bean : getBeans()) { bean.resolve(this); Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Property.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Property.java?rev=1758328&r1=1758327&r2=1758328&view=diff ============================================================================== --- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Property.java (original) +++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Property.java Tue Aug 30 06:08:20 2016 @@ -40,7 +40,7 @@ public class Property implements Compara this.isField = isField; } - public static Property create(BlueprinRegister blueprinRegister, Field field) { + public static Property create(BlueprintRegister blueprintRegister, Field field) { if (needsInject(field)) { String value = AnnotationHelper.findValue(field.getAnnotations()); if (value != null) { @@ -50,7 +50,7 @@ public class Property implements Compara for (CustomDependencyAnnotationHandler customDependencyAnnotationHandler : Extensions.customDependencyAnnotationHandlers) { Annotation annotation = (Annotation) AnnotationHelper.findAnnotation(field.getAnnotations(), customDependencyAnnotationHandler.getAnnotation()); if (annotation != null) { - String generatedRef = customDependencyAnnotationHandler.handleDependencyAnnotation(field, ref, blueprinRegister); + String generatedRef = customDependencyAnnotationHandler.handleDependencyAnnotation(field, ref, blueprintRegister); if (generatedRef != null) { ref = generatedRef; break; @@ -60,7 +60,7 @@ public class Property implements Compara if (ref != null) { return new Property(field.getName(), ref, null, true); } - BeanRef matching = blueprinRegister.getMatching(new BeanRef(field)); + BeanRef matching = blueprintRegister.getMatching(new BeanRef(field)); ref = (matching == null) ? getDefaultRefName(field) : matching.id; return new Property(field.getName(), ref, null, true); } else { @@ -69,7 +69,7 @@ public class Property implements Compara } } - public static Property create(BlueprinRegister blueprinRegister, Method method) { + public static Property create(BlueprintRegister blueprintRegister, Method method) { String propertyName = resolveProperty(method); if (propertyName == null) { return null; @@ -88,7 +88,7 @@ public class Property implements Compara for (CustomDependencyAnnotationHandler customDependencyAnnotationHandler : Extensions.customDependencyAnnotationHandlers) { Annotation annotation = (Annotation) AnnotationHelper.findAnnotation(method.getAnnotations(), customDependencyAnnotationHandler.getAnnotation()); if (annotation != null) { - String generatedRef = customDependencyAnnotationHandler.handleDependencyAnnotation(method, ref, blueprinRegister); + String generatedRef = customDependencyAnnotationHandler.handleDependencyAnnotation(method, ref, blueprintRegister); if (generatedRef != null) { ref = generatedRef; break; @@ -102,7 +102,7 @@ public class Property implements Compara for (CustomDependencyAnnotationHandler customDependencyAnnotationHandler : Extensions.customDependencyAnnotationHandlers) { Annotation annotation = (Annotation) AnnotationHelper.findAnnotation(method.getParameterAnnotations()[0], customDependencyAnnotationHandler.getAnnotation()); if (annotation != null) { - String generatedRef = customDependencyAnnotationHandler.handleDependencyAnnotation(method.getParameterTypes()[0], annotation, ref, blueprinRegister); + String generatedRef = customDependencyAnnotationHandler.handleDependencyAnnotation(method.getParameterTypes()[0], annotation, ref, blueprintRegister); if (generatedRef != null) { ref = generatedRef; break; @@ -114,7 +114,7 @@ public class Property implements Compara } BeanRef beanRef = new BeanRef(method); - BeanRef matching = blueprinRegister.getMatching(beanRef); + BeanRef matching = blueprintRegister.getMatching(beanRef); ref = (matching == null) ? beanRef.id : matching.id; return new Property(propertyName, ref, null, false); } Copied: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/FactoryMethodFinder.java (from r1757990, aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BeanFinder.java) URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/FactoryMethodFinder.java?p2=aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/FactoryMethodFinder.java&p1=aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BeanFinder.java&r1=1757990&r2=1758328&rev=1758328&view=diff ============================================================================== --- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BeanFinder.java (original) +++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/FactoryMethodFinder.java Tue Aug 30 06:08:20 2016 @@ -6,9 +6,9 @@ * to you 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 - * + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> * 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 @@ -20,8 +20,6 @@ package org.apache.aries.blueprint.plugi import java.lang.annotation.Annotation; -public interface BeanFinder<A extends Annotation> { - Class<A> beanAnnotation(); - - boolean isSingleton(); +public interface FactoryMethodFinder<A extends Annotation> { + Class<A> factoryMethodAnnotation(); } Copied: aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.FactoryMethodFinder (from r1757990, aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanFinder) URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.FactoryMethodFinder?p2=aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.FactoryMethodFinder&p1=aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanFinder&r1=1757990&r2=1758328&rev=1758328&view=diff ============================================================================== --- aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanFinder (original) +++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.FactoryMethodFinder Tue Aug 30 06:08:20 2016 @@ -15,6 +15,4 @@ # limitations under the License. # -org.apache.aries.blueprint.plugin.spring.ComponentBeanFinder -org.apache.aries.blueprint.plugin.javax.SingletonBeanFinder -org.apache.aries.blueprint.plugin.javax.NamedBeanFinder \ No newline at end of file +org.apache.aries.blueprint.plugin.javax.ProducesHandler Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java?rev=1758328&r1=1758327&r2=1758328&view=diff ============================================================================== --- aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java (original) +++ aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java Tue Aug 30 06:08:20 2016 @@ -86,7 +86,7 @@ public class ContextTest { public void testProduced() throws NoSuchFieldException, SecurityException { Context context = new Context(blueprintConfiguration, MyFactoryBean.class); context.resolve(); - ProducedBean matching = (ProducedBean) context.getMatching(new BeanRef(MyProduced.class)); + BeanFromFactory matching = (BeanFromFactory) context.getMatching(new BeanRef(MyProduced.class)); Assert.assertEquals(MyProduced.class, matching.clazz); Assert.assertEquals("myFactoryBean", matching.factoryBean.id); Assert.assertEquals("create", matching.factoryMethod);