You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by al...@apache.org on 2017/09/28 17:19:01 UTC

svn commit: r1810013 - in /aries/trunk/blueprint/plugin: blueprint-maven-plugin-annotation/ blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/referencelistener/ blueprint-maven-plugin-annotation/src/main/java/org/apa...

Author: alien11689
Date: Thu Sep 28 17:19:00 2017
New Revision: 1810013

URL: http://svn.apache.org/viewvc?rev=1810013&view=rev
Log:
[ARIES-1742] Create @Reference annotation for reference element generation

Added:
    aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/service/
    aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/service/Availability.java
      - copied, changed from r1809640, aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/referencelistener/Availability.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/service/Reference.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/bean/
      - copied from r1810012, aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/bean/
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/collection/
      - copied from r1810012, aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/collection/
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/
      - copied from r1810012, aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/config/
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/init/
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/init/BlueprintInitialization.java
      - copied, changed from r1810012, aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/BlueprintInitialization.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/referencelistener/
      - copied from r1810012, aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/referencelistener/
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/service/
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/service/ReferenceHandler.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/BeanWithReferences.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref1.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref2.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref3.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref4.java
Removed:
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/bean/
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/BlueprintInitialization.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/collection/
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/config/
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/referencelistener/
Modified:
    aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/pom.xml
    aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/referencelistener/ReferenceListener.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/pom.xml
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/bean/BeanHandler.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/collection/CollectionInjectHandler.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigAnnotationHandler.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigPropertiesHandler.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigPropertyInjectionHandler.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigWriter.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/referencelistener/ReferenceListenerDefinition.java
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/referencelistener/ReferenceListenerHandler.java
    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/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanFinder
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.CollectionDependencyAnnotationHandler
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.ContextInitializationHandler
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.CustomDependencyAnnotationHandler
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.FactoryMethodFinder
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.NamedLikeHandler
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.ValueInjectionHandler
    aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/BlueprintFileWriterTest.java

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/pom.xml?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/pom.xml (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/pom.xml Thu Sep 28 17:19:00 2017
@@ -23,7 +23,7 @@
         <groupId>org.apache.aries</groupId>
         <artifactId>parent</artifactId>
         <version>2.0.1</version>
-        <relativePath />
+        <relativePath/>
     </parent>
     <groupId>org.apache.aries.blueprint</groupId>
     <artifactId>blueprint-maven-plugin-annotation</artifactId>
@@ -33,8 +33,7 @@
 
     <scm>
         <connection>scm:svn:http://svn.apache.org/repos/asf/aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation</connection>
-        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation
-        </developerConnection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation</developerConnection>
         <url>http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation</url>
     </scm>
 
@@ -43,10 +42,11 @@
             org.apache.aries.blueprint.annotation.bean,
             org.apache.aries.blueprint.annotation.collection,
             org.apache.aries.blueprint.annotation.config,
-            org.apache.aries.blueprint.annotation.referencelistener
+            org.apache.aries.blueprint.annotation.referencelistener,
+            org.apache.aries.blueprint.annotation.service
         </aries.osgi.export.pkg>
-        <aries.osgi.import.pkg />
-        <aries.osgi.private.pkg />
-        <lastReleaseVersion>1.1.0</lastReleaseVersion>
+        <aries.osgi.import.pkg/>
+        <aries.osgi.private.pkg/>
+        <lastReleaseVersion>1.2.0</lastReleaseVersion>
     </properties>
 </project>

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/referencelistener/ReferenceListener.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/referencelistener/ReferenceListener.java?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/referencelistener/ReferenceListener.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/referencelistener/ReferenceListener.java Thu Sep 28 17:19:00 2017
@@ -25,7 +25,7 @@ import java.lang.annotation.Target;
 
 /**
  * Annotating any class with this will create a
- * reference or referenclist element in blueprint
+ * reference or reference-list element in blueprint
  * with annotated bean as reference-listener.
  */
 @Target({ElementType.TYPE, ElementType.METHOD})

Copied: aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/service/Availability.java (from r1809640, aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/referencelistener/Availability.java)
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/service/Availability.java?p2=aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/service/Availability.java&p1=aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/referencelistener/Availability.java&r1=1809640&r2=1810013&rev=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/referencelistener/Availability.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/service/Availability.java Thu Sep 28 17:19:00 2017
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.aries.blueprint.annotation.referencelistener;
+package org.apache.aries.blueprint.annotation.service;
 
 public enum Availability {
     MANDATORY,

Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/service/Reference.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/service/Reference.java?rev=1810013&view=auto
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/service/Reference.java (added)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/src/main/java/org/apache/aries/blueprint/annotation/service/Reference.java Thu Sep 28 17:19:00 2017
@@ -0,0 +1,52 @@
+/**
+ * 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
+ * <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
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.aries.blueprint.annotation.service;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Annotate dependency to inject service.
+ * It will generate reference element.
+ */
+@Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Reference {
+    /**
+     * @return filter on reference
+     */
+    String filter() default "";
+
+    /**
+     * @return component-name on reference
+     */
+    String componentName() default "";
+
+    /**
+     * @return if existence of at least one service is necessary
+     */
+    Availability availability() default Availability.MANDATORY;
+
+    /**
+     * @return timeout on reference - negative value means blueprint default
+     */
+    long timeout() default Long.MIN_VALUE;
+}

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/pom.xml?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/pom.xml (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/pom.xml Thu Sep 28 17:19:00 2017
@@ -45,7 +45,8 @@
 
         <blueprint-maven-plugin-spi.version>1.1.0</blueprint-maven-plugin-spi.version>
         <blueprint-maven-plugin-spring-handlers.version>1.0.0</blueprint-maven-plugin-spring-handlers.version>
-        <blueprint-maven-plugin-annotation.version>1.2.0</blueprint-maven-plugin-annotation.version>
+        <blueprint-maven-plugin-annotation.version>1.2.1-SNAPSHOT</blueprint-maven-plugin-annotation.version>
+        <blueprint-maven-plugin-pax-cdi-handlers.version>1.0.0-SNAPSHOT</blueprint-maven-plugin-pax-cdi-handlers.version>
 
         <javax.inject.version>1</javax.inject.version>
         <javax.transaction-api.version>1.2</javax.transaction-api.version>
@@ -66,7 +67,6 @@
         <org.apache.aries.transaction.blueprint.version>1.1.1</org.apache.aries.transaction.blueprint.version>
         <org.apache.aries.jpa.blueprint.aries.version>1.0.2</org.apache.aries.jpa.blueprint.aries.version>
         <org.apache.aries.blueprint.cm.version>1.0.9</org.apache.aries.blueprint.cm.version>
-        <blueprint-maven-plugin-pax-cdi-handlers.version>1.0.0-SNAPSHOT</blueprint-maven-plugin-pax-cdi-handlers.version>
     </properties>
 
     <scm>

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/bean/BeanHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/bean/BeanHandler.java?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/bean/BeanHandler.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/bean/BeanHandler.java Thu Sep 28 17:19:00 2017
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.aries.blueprint.plugin.handlers.bean;
+package org.apache.aries.blueprint.plugin.handlers.blueprint.bean;
 
 import org.apache.aries.blueprint.annotation.bean.Activation;
 import org.apache.aries.blueprint.annotation.bean.Bean;

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/collection/CollectionInjectHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/collection/CollectionInjectHandler.java?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/collection/CollectionInjectHandler.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/collection/CollectionInjectHandler.java Thu Sep 28 17:19:00 2017
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.aries.blueprint.plugin.handlers.collection;
+package org.apache.aries.blueprint.plugin.handlers.blueprint.collection;
 
 import org.apache.aries.blueprint.annotation.collection.CollectionInject;
 import org.apache.aries.blueprint.plugin.spi.CollectionDependencyAnnotationHandler;

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigAnnotationHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigAnnotationHandler.java?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigAnnotationHandler.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigAnnotationHandler.java Thu Sep 28 17:19:00 2017
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.aries.blueprint.plugin.handlers.config;
+package org.apache.aries.blueprint.plugin.handlers.blueprint.config;
 
 import java.lang.reflect.AnnotatedElement;
 
@@ -24,7 +24,6 @@ import org.apache.aries.blueprint.annota
 import org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler;
 import org.apache.aries.blueprint.plugin.spi.BeanEnricher;
 import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
-import org.apache.aries.blueprint.plugin.spi.XmlWriter;
 
 public class ConfigAnnotationHandler implements BeanAnnotationHandler<Config>{
 

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigPropertiesHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigPropertiesHandler.java?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigPropertiesHandler.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigPropertiesHandler.java Thu Sep 28 17:19:00 2017
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.aries.blueprint.plugin.handlers.config;
+package org.apache.aries.blueprint.plugin.handlers.blueprint.config;
 
 import org.apache.aries.blueprint.annotation.config.ConfigProperties;
 import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
@@ -26,8 +26,6 @@ import org.apache.aries.blueprint.plugin
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
 import java.util.Properties;
 
 public class ConfigPropertiesHandler implements CustomDependencyAnnotationHandler<ConfigProperties> {

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigPropertyInjectionHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigPropertyInjectionHandler.java?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigPropertyInjectionHandler.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigPropertyInjectionHandler.java Thu Sep 28 17:19:00 2017
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.aries.blueprint.plugin.handlers.config;
+package org.apache.aries.blueprint.plugin.handlers.blueprint.config;
 
 import org.apache.aries.blueprint.annotation.config.ConfigProperty;
 

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigWriter.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigWriter.java?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigWriter.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/config/ConfigWriter.java Thu Sep 28 17:19:00 2017
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.aries.blueprint.plugin.handlers.config;
+package org.apache.aries.blueprint.plugin.handlers.blueprint.config;
 
 import org.apache.aries.blueprint.annotation.config.Config;
 import org.apache.aries.blueprint.annotation.config.DefaultProperty;

Copied: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/init/BlueprintInitialization.java (from r1810012, aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/BlueprintInitialization.java)
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/init/BlueprintInitialization.java?p2=aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/init/BlueprintInitialization.java&p1=aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/BlueprintInitialization.java&r1=1810012&r2=1810013&rev=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/BlueprintInitialization.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/init/BlueprintInitialization.java Thu Sep 28 17:19:00 2017
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.aries.blueprint.plugin.handlers.blueprint;
+package org.apache.aries.blueprint.plugin.handlers.blueprint.init;
 
 import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
 import org.apache.aries.blueprint.plugin.spi.ContextInitializationHandler;

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/referencelistener/ReferenceListenerDefinition.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/referencelistener/ReferenceListenerDefinition.java?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/referencelistener/ReferenceListenerDefinition.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/referencelistener/ReferenceListenerDefinition.java Thu Sep 28 17:19:00 2017
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.aries.blueprint.plugin.handlers.referencelistener;
+package org.apache.aries.blueprint.plugin.handlers.blueprint.referencelistener;
 
 class ReferenceListenerDefinition {
     final String ref;
     final String bind;
     final String unbind;
 
-    public ReferenceListenerDefinition(String ref, String bind, String unbind) {
+    ReferenceListenerDefinition(String ref, String bind, String unbind) {
         this.ref = ref;
         this.bind = getOrNull(bind);
         this.unbind = getOrNull(unbind);

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/referencelistener/ReferenceListenerHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/referencelistener/ReferenceListenerHandler.java?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/referencelistener/ReferenceListenerHandler.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/referencelistener/ReferenceListenerHandler.java Thu Sep 28 17:19:00 2017
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.aries.blueprint.plugin.handlers.referencelistener;
+package org.apache.aries.blueprint.plugin.handlers.blueprint.referencelistener;
 
 import org.apache.aries.blueprint.annotation.referencelistener.Bind;
 import org.apache.aries.blueprint.annotation.referencelistener.Cardinality;

Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/service/ReferenceHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/service/ReferenceHandler.java?rev=1810013&view=auto
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/service/ReferenceHandler.java (added)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/handlers/blueprint/service/ReferenceHandler.java Thu Sep 28 17:19:00 2017
@@ -0,0 +1,144 @@
+/**
+ * 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
+ * <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
+ * 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.handlers.blueprint.service;
+
+import org.apache.aries.blueprint.annotation.service.Reference;
+import org.apache.aries.blueprint.plugin.spi.Availability;
+import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
+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.reflect.AnnotatedElement;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+public class ReferenceHandler implements CustomDependencyAnnotationHandler<Reference> {
+    @Override
+    public Class<Reference> getAnnotation() {
+        return Reference.class;
+    }
+
+    @Override
+    public String handleDependencyAnnotation(AnnotatedElement annotatedElement, String name, ContextEnricher contextEnricher) {
+        Reference reference = annotatedElement.getAnnotation(Reference.class);
+        final Class<?> clazz = getClass(annotatedElement);
+        final String id = name != null ? name : generateReferenceId(clazz, reference, contextEnricher);
+        contextEnricher.addBean(id, clazz);
+        contextEnricher.addBlueprintContentWriter(getWriterId(id, clazz), getXmlWriter(id, clazz, reference, contextEnricher));
+        return id;
+    }
+
+    @Override
+    public String handleDependencyAnnotation(final Class<?> clazz, Reference reference, String name, ContextEnricher contextEnricher) {
+        final String id = name != null ? name : generateReferenceId(clazz, reference, contextEnricher);
+        contextEnricher.addBean(id, clazz);
+        contextEnricher.addBlueprintContentWriter(getWriterId(id, clazz), getXmlWriter(id, clazz, reference, contextEnricher));
+        return id;
+    }
+
+    private XmlWriter getXmlWriter(final String id, final Class<?> clazz, final Reference reference, final ContextEnricher contextEnricher) {
+        return new XmlWriter() {
+            @Override
+            public void write(XMLStreamWriter writer) throws XMLStreamException {
+                writer.writeEmptyElement("reference");
+                writer.writeAttribute("id", id);
+                writer.writeAttribute("interface", clazz.getName());
+                if (!"".equals(reference.filter())) {
+                    writer.writeAttribute("filter", reference.filter());
+                }
+                if (!"".equals(reference.componentName())) {
+                    writer.writeAttribute("component-name", reference.componentName());
+                }
+                if (needTimeout(reference)) {
+                    writer.writeAttribute("timeout", String.valueOf(reference.timeout()));
+                }
+                if (needAvailability(contextEnricher, reference)) {
+                    writer.writeAttribute("availability", reference.availability().name().toLowerCase());
+                }
+            }
+        };
+    }
+
+    private boolean needTimeout(Reference reference) {
+        return reference.timeout() >= 0;
+    }
+
+    private boolean needAvailability(ContextEnricher contextEnricher, Reference reference) {
+        org.apache.aries.blueprint.annotation.service.Availability availability = reference.availability();
+        Availability defaultAvailability = contextEnricher.getBlueprintConfiguration().getDefaultAvailability();
+        return defaultAvailability == null && availability.equals(org.apache.aries.blueprint.annotation.service.Availability.OPTIONAL) ||
+                defaultAvailability != null && !defaultAvailability.name().equals(reference.availability().name());
+    }
+
+    private String getWriterId(String id, Class<?> clazz) {
+        return "reference/" + clazz.getName() + "/" + id;
+    }
+
+    private Class<?> getClass(AnnotatedElement annotatedElement) {
+        if (annotatedElement instanceof Class<?>) {
+            return (Class<?>) annotatedElement;
+        }
+        if (annotatedElement instanceof Method) {
+            return ((Method) annotatedElement).getParameterTypes()[0];
+        }
+        if (annotatedElement instanceof Field) {
+            return ((Field) annotatedElement).getType();
+        }
+        throw new RuntimeException("Unknown annotated element");
+    }
+
+    private String generateReferenceId(Class clazz, Reference reference, ContextEnricher contextEnricher) {
+        StringBuilder sb = new StringBuilder();
+        writeBeanNameFromSimpleName(sb, clazz.getSimpleName());
+        sb.append("-");
+        if (!"".equals(reference.filter())) {
+            writeEscapedFilter(sb, reference.filter());
+        }
+        sb.append("-");
+        if (!"".equals(reference.componentName())) {
+            sb.append(reference.componentName());
+        }
+        sb.append("-");
+        if (needAvailability(contextEnricher, reference)) {
+            sb.append(reference.availability().name().toLowerCase());
+        }
+        sb.append("-");
+        if (needTimeout(reference)) {
+            sb.append(reference.timeout());
+        }
+        return sb.toString().replaceAll("-+$", "");
+    }
+
+    private static void writeBeanNameFromSimpleName(StringBuilder sb, String name) {
+        sb.append(name.substring(0, 1).toLowerCase());
+        sb.append(name.substring(1, name.length()));
+    }
+
+    private void writeEscapedFilter(StringBuilder sb, String filter) {
+        for (int c = 0; c < filter.length(); c++) {
+            char ch = filter.charAt(c);
+            if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z' || ch >= '0' && ch <= '9') {
+                sb.append(ch);
+            }
+        }
+    }
+
+}

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=1810013&r1=1810012&r2=1810013&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 Thu Sep 28 17:19:00 2017
@@ -19,7 +19,6 @@
 package org.apache.aries.blueprint.plugin.model;
 
 import org.apache.aries.blueprint.plugin.handlers.Handlers;
-import org.apache.aries.blueprint.plugin.handlers.collection.CollectionInjectHandler;
 import org.apache.aries.blueprint.plugin.spi.CollectionDependencyAnnotationHandler;
 import org.apache.aries.blueprint.plugin.spi.InjectLikeHandler;
 import org.apache.aries.blueprint.plugin.spi.NamedLikeHandler;

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler Thu Sep 28 17:19:00 2017
@@ -17,6 +17,6 @@
 
 org.apache.aries.blueprint.plugin.handlers.javax.JavaxTransactionFactory
 org.apache.aries.blueprint.plugin.handlers.javax.CdiTransactionFactory
-org.apache.aries.blueprint.plugin.handlers.config.ConfigAnnotationHandler
-org.apache.aries.blueprint.plugin.handlers.referencelistener.ReferenceListenerHandler
-org.apache.aries.blueprint.plugin.handlers.bean.BeanHandler
\ No newline at end of file
+org.apache.aries.blueprint.plugin.handlers.blueprint.config.ConfigAnnotationHandler
+org.apache.aries.blueprint.plugin.handlers.blueprint.referencelistener.ReferenceListenerHandler
+org.apache.aries.blueprint.plugin.handlers.blueprint.bean.BeanHandler
\ No newline at end of file

Modified: aries/trunk/blueprint/plugin/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/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanFinder?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanFinder (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanFinder Thu Sep 28 17:19:00 2017
@@ -17,4 +17,4 @@
 
 org.apache.aries.blueprint.plugin.handlers.javax.SingletonBeanFinder
 org.apache.aries.blueprint.plugin.handlers.javax.NamedBeanFinder
-org.apache.aries.blueprint.plugin.handlers.bean.BeanHandler
\ No newline at end of file
+org.apache.aries.blueprint.plugin.handlers.blueprint.bean.BeanHandler
\ No newline at end of file

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.CollectionDependencyAnnotationHandler
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.CollectionDependencyAnnotationHandler?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.CollectionDependencyAnnotationHandler (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.CollectionDependencyAnnotationHandler Thu Sep 28 17:19:00 2017
@@ -15,5 +15,5 @@
 # limitations under the License.
 #
 
-org.apache.aries.blueprint.plugin.handlers.collection.CollectionInjectHandler
+org.apache.aries.blueprint.plugin.handlers.blueprint.collection.CollectionInjectHandler
 

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.ContextInitializationHandler
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.ContextInitializationHandler?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.ContextInitializationHandler (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.ContextInitializationHandler Thu Sep 28 17:19:00 2017
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.aries.blueprint.plugin.handlers.blueprint.BlueprintInitialization
\ No newline at end of file
+org.apache.aries.blueprint.plugin.handlers.blueprint.init.BlueprintInitialization
\ No newline at end of file

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.CustomDependencyAnnotationHandler
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.CustomDependencyAnnotationHandler?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.CustomDependencyAnnotationHandler (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.CustomDependencyAnnotationHandler Thu Sep 28 17:19:00 2017
@@ -15,4 +15,5 @@
 # limitations under the License.
 #
 
-org.apache.aries.blueprint.plugin.handlers.config.ConfigPropertiesHandler
\ No newline at end of file
+org.apache.aries.blueprint.plugin.handlers.blueprint.config.ConfigPropertiesHandler
+org.apache.aries.blueprint.plugin.handlers.blueprint.service.ReferenceHandler
\ No newline at end of file

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.FactoryMethodFinder
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.FactoryMethodFinder?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.FactoryMethodFinder (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.FactoryMethodFinder Thu Sep 28 17:19:00 2017
@@ -16,4 +16,4 @@
 #
 
 org.apache.aries.blueprint.plugin.handlers.javax.ProducesHandler
-org.apache.aries.blueprint.plugin.handlers.bean.BeanHandler
\ No newline at end of file
+org.apache.aries.blueprint.plugin.handlers.blueprint.bean.BeanHandler
\ No newline at end of file

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.NamedLikeHandler
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.NamedLikeHandler?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.NamedLikeHandler (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.NamedLikeHandler Thu Sep 28 17:19:00 2017
@@ -16,4 +16,4 @@
 #
 
 org.apache.aries.blueprint.plugin.handlers.javax.NamedHandler
-org.apache.aries.blueprint.plugin.handlers.bean.BeanHandler
\ No newline at end of file
+org.apache.aries.blueprint.plugin.handlers.blueprint.bean.BeanHandler
\ No newline at end of file

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.ValueInjectionHandler
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.ValueInjectionHandler?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.ValueInjectionHandler (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.ValueInjectionHandler Thu Sep 28 17:19:00 2017
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.aries.blueprint.plugin.handlers.config.ConfigPropertyInjectionHandler
+org.apache.aries.blueprint.plugin.handlers.blueprint.config.ConfigPropertyInjectionHandler

Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/BlueprintFileWriterTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/BlueprintFileWriterTest.java?rev=1810013&r1=1810012&r2=1810013&view=diff
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/BlueprintFileWriterTest.java (original)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/BlueprintFileWriterTest.java Thu Sep 28 17:19:00 2017
@@ -30,6 +30,11 @@ import org.apache.aries.blueprint.plugin
 import org.apache.aries.blueprint.plugin.test.bean.BeanWithCallbackMethods;
 import org.apache.aries.blueprint.plugin.test.bean.NamedBean;
 import org.apache.aries.blueprint.plugin.test.bean.SimpleProducedBean;
+import org.apache.aries.blueprint.plugin.test.reference.BeanWithReferences;
+import org.apache.aries.blueprint.plugin.test.reference.Ref1;
+import org.apache.aries.blueprint.plugin.test.reference.Ref2;
+import org.apache.aries.blueprint.plugin.test.reference.Ref3;
+import org.apache.aries.blueprint.plugin.test.reference.Ref4;
 import org.apache.aries.blueprint.plugin.test.referencelistener.ReferenceListenerToProduceWithoutAnnotation;
 import org.apache.commons.io.output.ByteArrayOutputStream;
 import org.apache.xbean.finder.ClassFinder;
@@ -82,7 +87,8 @@ public class BlueprintFileWriterTest {
         long start = System.currentTimeMillis();
         Set<Class<?>> beanClasses = findClasses(classFinder, Arrays.asList(
                 MyBean1.class.getPackage().getName(),
-                ReferenceListenerToProduceWithoutAnnotation.class.getPackage().getName()
+                ReferenceListenerToProduceWithoutAnnotation.class.getPackage().getName(),
+                BeanWithReferences.class.getPackage().getName()
         ));
         Set<String> namespaces = new HashSet<>(Arrays.asList(NS_JPA, NS_TX1));
         Map<String, String> customParameters = new HashMap<>();
@@ -920,6 +926,135 @@ public class BlueprintFileWriterTest {
         assertXpathEquals(typeConverters, "ref[2]/@component-id", "converter2");
     }
 
+    @Test
+    public void shouldInjectReferenceViaField() throws Exception {
+        Node bean = getBeanById("beanWithReferences");
+        assertXpathEquals(bean, "property[@name='ref1Field']/@ref", "ref1");
+        assertXpathEquals(bean, "property[@name='myRef1Field']/@ref", "myRef1");
+        assertXpathEquals(bean, "property[@name='myRef1FieldAllProps']/@ref", "ref1-a453-r1-optional-2000");
+        assertXpathEquals(bean, "property[@name='myRef1FieldFilter']/@ref", "ref1-x1");
+    }
+
+    @Test
+    public void shouldGenerateReferenceFromBeanField() throws Exception {
+        Node ref1 = getReferenceById("ref1");
+        assertXpathEquals(ref1, "@interface", Ref1.class.getName());
+        Node myRef1 = getReferenceById("myRef1");
+        assertXpathEquals(myRef1, "@interface", Ref1.class.getName());
+        Node ref1a453r1 = getReferenceById("ref1-a453-r1-optional-2000");
+        assertXpathEquals(ref1a453r1, "@interface", Ref1.class.getName());
+        assertXpathEquals(ref1a453r1, "@component-name", "r1");
+        assertXpathEquals(ref1a453r1, "@filter", "(a=453)");
+        assertXpathEquals(ref1a453r1, "@timeout", "2000");
+        assertXpathEquals(ref1a453r1, "@availability", "optional");
+        Node ref1x1 = getReferenceById("ref1-x1");
+        assertXpathEquals(ref1x1, "@interface", Ref1.class.getName());
+        assertXpathEquals(ref1x1, "@filter", "(x=1)");
+        assertXpathEquals(ref1x1, "count(@component-name)", "0");
+    }
+
+    @Test
+    public void shouldInjectReferenceViaSetter() throws Exception {
+        Node bean = getBeanById("beanWithReferences");
+        assertXpathEquals(bean, "property[@name='ref2Setter']/@ref", "ref2");
+        assertXpathEquals(bean, "property[@name='ref2SetterNamed']/@ref", "myRef2");
+        assertXpathEquals(bean, "property[@name='ref2SetterFull']/@ref", "ref2-b453-r2-optional-1000");
+        assertXpathEquals(bean, "property[@name='ref2SetterComponent']/@ref", "ref2--blablabla");
+    }
+
+    @Test
+    public void shouldGenerateReferenceFromBeanSetter() throws Exception {
+        Node ref2 = getReferenceById("ref2");
+        assertXpathEquals(ref2, "@interface", Ref2.class.getName());
+        Node myRef2 = getReferenceById("myRef2");
+        assertXpathEquals(myRef2, "@interface", Ref2.class.getName());
+        Node ref1b453r2 = getReferenceById("ref2-b453-r2-optional-1000");
+        assertXpathEquals(ref1b453r2, "@interface", Ref2.class.getName());
+        assertXpathEquals(ref1b453r2, "@component-name", "r2");
+        assertXpathEquals(ref1b453r2, "@filter", "(b=453)");
+        assertXpathEquals(ref1b453r2, "@timeout", "1000");
+        assertXpathEquals(ref1b453r2, "@availability", "optional");
+        Node ref2blablabla = getReferenceById("ref2--blablabla");
+        assertXpathEquals(ref2blablabla, "@interface", Ref2.class.getName());
+        assertXpathEquals(ref2blablabla, "@component-name", "blablabla");
+        assertXpathEquals(ref2blablabla, "count(@filter)", "0");
+    }
+
+    @Test
+    public void shouldInjectReferenceViaConstructor() throws Exception {
+        Node bean = getBeanById("beanWithReferences");
+        assertXpathEquals(bean, "argument[1]/@ref", "ref1");
+        assertXpathEquals(bean, "argument[2]/@ref", "ref2---optional-20000");
+        assertXpathEquals(bean, "argument[3]/@ref", "ref1-y3");
+        assertXpathEquals(bean, "argument[4]/@ref", "ref1--compForConstr");
+        assertXpathEquals(bean, "argument[5]/@ref", "ref1-y3-compForConstr");
+        assertXpathEquals(bean, "argument[6]/@ref", "ref1ForCons");
+    }
+
+    @Test
+    public void shouldGenerateReferenceFromBeanConstructor() throws Exception {
+        Node ref1 = getReferenceById("ref1");
+        assertXpathEquals(ref1, "@interface", Ref1.class.getName());
+        Node ref2optional20000 = getReferenceById("ref2---optional-20000");
+        assertXpathEquals(ref2optional20000, "@interface", Ref2.class.getName());
+        assertXpathEquals(ref2optional20000, "@timeout", "20000");
+        assertXpathEquals(ref2optional20000, "@availability", "optional");
+        Node ref1y3 = getReferenceById("ref1-y3");
+        assertXpathEquals(ref1y3, "@interface", Ref1.class.getName());
+        assertXpathEquals(ref1y3, "count(@component-name)", "0");
+        assertXpathEquals(ref1y3, "@filter", "(y=3)");
+        Node ref1compForConstr = getReferenceById("ref1--compForConstr");
+        assertXpathEquals(ref1compForConstr, "@interface", Ref1.class.getName());
+        assertXpathEquals(ref1compForConstr, "@component-name", "compForConstr");
+        assertXpathEquals(ref1compForConstr, "count(@filter)", "0");
+        Node ref1y3compForConstr = getReferenceById("ref1-y3-compForConstr");
+        assertXpathEquals(ref1y3compForConstr, "@interface", Ref1.class.getName());
+        assertXpathEquals(ref1y3compForConstr, "@component-name", "compForConstr");
+        assertXpathEquals(ref1y3compForConstr, "@filter", "(y=3)");
+        Node ref1ForCons = getReferenceById("ref1ForCons");
+        assertXpathEquals(ref1ForCons, "@interface", Ref1.class.getName());
+        assertXpathEquals(ref1ForCons, "@availability", "optional");
+    }
+
+    @Test
+    public void shouldInjectReferenceToProducedBean() throws Exception {
+        Node bean = getBeanById("producedWithReferences");
+        assertXpathEquals(bean, "argument[1]/@ref", "ref3");
+        assertXpathEquals(bean, "argument[2]/@ref", "ref4----20000");
+        assertXpathEquals(bean, "argument[3]/@ref", "ref4---optional");
+        assertXpathEquals(bean, "argument[4]/@ref", "ref3-y3");
+        assertXpathEquals(bean, "argument[5]/@ref", "ref3--compForProduces");
+        assertXpathEquals(bean, "argument[6]/@ref", "ref3-y3-compForProduces");
+        assertXpathEquals(bean, "argument[7]/@ref", "ref3ForProduces");
+    }
+
+    @Test
+    public void shouldGenerateReferenceFromProducedBean() throws Exception {
+        Node ref3 = getReferenceById("ref3");
+        assertXpathEquals(ref3, "@interface", Ref3.class.getName());
+        Node ref420000 = getReferenceById("ref4----20000");
+        assertXpathEquals(ref420000, "@interface", Ref4.class.getName());
+        assertXpathEquals(ref420000, "@timeout", "20000");
+        Node ref4optional = getReferenceById("ref4---optional");
+        assertXpathEquals(ref4optional, "@interface", Ref4.class.getName());
+        assertXpathEquals(ref4optional, "@availability", "optional");
+        Node ref3y3 = getReferenceById("ref3-y3");
+        assertXpathEquals(ref3y3, "@interface", Ref3.class.getName());
+        assertXpathEquals(ref3y3, "count(@component-name)", "0");
+        assertXpathEquals(ref3y3, "@filter", "(y=3)");
+        Node ref3compForProduces = getReferenceById("ref3--compForProduces");
+        assertXpathEquals(ref3compForProduces, "@interface", Ref3.class.getName());
+        assertXpathEquals(ref3compForProduces, "@component-name", "compForProduces");
+        assertXpathEquals(ref3compForProduces, "count(@filter)", "0");
+        Node ref3y3compForProduces = getReferenceById("ref3-y3-compForProduces");
+        assertXpathEquals(ref3y3compForProduces, "@interface", Ref3.class.getName());
+        assertXpathEquals(ref3y3compForProduces, "@component-name", "compForProduces");
+        assertXpathEquals(ref3y3compForProduces, "@filter", "(y=3)");
+        Node ref1ForCons = getReferenceById("ref3ForProduces");
+        assertXpathEquals(ref1ForCons, "@interface", Ref3.class.getName());
+        assertXpathEquals(ref1ForCons, "@timeout", "1000");
+    }
+
     private void assertXpathDoesNotExist(Node node, String xpathExpression) throws XPathExpressionException {
         assertXpathEquals(node, "count(" + xpathExpression + ")", "0");
     }

Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/BeanWithReferences.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/BeanWithReferences.java?rev=1810013&view=auto
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/BeanWithReferences.java (added)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/BeanWithReferences.java Thu Sep 28 17:19:00 2017
@@ -0,0 +1,95 @@
+/**
+ * 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
+ * <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
+ * 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.test.reference;
+
+import org.apache.aries.blueprint.annotation.service.Availability;
+import org.apache.aries.blueprint.annotation.service.Reference;
+
+import javax.enterprise.inject.Produces;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+@Singleton
+public class BeanWithReferences {
+
+    @Inject
+    @Reference
+    Ref1 ref1Field;
+
+    @Inject
+    @Reference
+    @Named("myRef1")
+    Ref1 myRef1Field;
+
+    @Inject
+    @Reference(filter = "(a=453)", componentName = "r1", timeout = 2000, availability = Availability.OPTIONAL)
+    Ref1 myRef1FieldAllProps;
+
+    @Inject
+    @Reference(filter = "(x=1)")
+    Ref1 myRef1FieldFilter;
+
+    @Inject
+    @Reference
+    public void setRef2Setter(Ref2 ref) {
+    }
+
+    @Inject
+    @Reference
+    @Named("myRef2")
+    public void setRef2SetterNamed(Ref2 ref) {
+    }
+
+    @Inject
+    @Reference(filter = "(b=453)", componentName = "r2", timeout = 1000, availability = Availability.OPTIONAL)
+    public void setRef2SetterFull(Ref2 ref) {
+    }
+
+    @Inject
+    @Reference(componentName = "blablabla")
+    public void setRef2SetterComponent(Ref2 ref) {
+    }
+
+    public BeanWithReferences(
+            @Reference Ref1 ref1,
+            @Reference(availability = Availability.OPTIONAL, timeout = 20000) Ref2 ref2,
+            @Reference(filter = "(y=3)") Ref1 ref1x,
+            @Reference(componentName = "compForConstr") Ref1 ref1c,
+            @Reference(filter = "(y=3)", componentName = "compForConstr") Ref1 ref1fc,
+            @Reference(availability = Availability.OPTIONAL) @Named("ref1ForCons") Ref1 ref1Named
+    ) {
+    }
+
+    @Produces
+    @Named("producedWithReferences")
+    public String create(
+            @Reference Ref3 ref3,
+            @Reference(timeout = 20000) Ref4 ref4,
+            @Reference(availability = Availability.OPTIONAL) Ref4 ref4a,
+            @Reference(filter = "(y=3)") Ref3 ref3f,
+            @Reference(componentName = "compForProduces") Ref3 ref3c,
+            @Reference(filter = "(y=3)", componentName = "compForProduces") Ref3 ref3fc,
+            @Reference(timeout = 1000) @Named("ref3ForProduces") Ref3 ref3Named
+    ) {
+        return null;
+    }
+
+
+}

Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref1.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref1.java?rev=1810013&view=auto
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref1.java (added)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref1.java Thu Sep 28 17:19:00 2017
@@ -0,0 +1,22 @@
+/**
+ * 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
+ * <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
+ * 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.test.reference;
+
+public interface Ref1 {
+}

Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref2.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref2.java?rev=1810013&view=auto
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref2.java (added)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref2.java Thu Sep 28 17:19:00 2017
@@ -0,0 +1,22 @@
+/**
+ * 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
+ * <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
+ * 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.test.reference;
+
+public interface Ref2 {
+}

Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref3.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref3.java?rev=1810013&view=auto
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref3.java (added)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref3.java Thu Sep 28 17:19:00 2017
@@ -0,0 +1,22 @@
+/**
+ * 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
+ * <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
+ * 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.test.reference;
+
+public interface Ref3 {
+}

Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref4.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref4.java?rev=1810013&view=auto
==============================================================================
--- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref4.java (added)
+++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/reference/Ref4.java Thu Sep 28 17:19:00 2017
@@ -0,0 +1,22 @@
+/**
+ * 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
+ * <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
+ * 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.test.reference;
+
+public interface Ref4 {
+}