[CDI] solve issue with BeanPropertyType PREFIX_ handling

Signed-off-by: Raymond Auge <rotty3000@apache.org>

git-svn-id: https://svn.apache.org/repos/asf/aries/trunk@1849578 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/cdi-extender/pom.xml b/cdi-extender/pom.xml
index 26ab226..3758261 100644
--- a/cdi-extender/pom.xml
+++ b/cdi-extender/pom.xml
@@ -42,6 +42,10 @@
 	<dependencies>
 		<dependency>
 			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.converter</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.utils</artifactId>
 		</dependency>
 		<dependency>
@@ -94,10 +98,6 @@
 		</dependency>
 		<dependency>
 			<groupId>org.osgi</groupId>
-			<artifactId>org.osgi.util.converter</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.osgi</groupId>
 			<artifactId>org.osgi.util.function</artifactId>
 		</dependency>
 		<dependency>
diff --git a/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/util/Maps.java b/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/util/Maps.java
index 0ecfa7b..5b1e46f 100644
--- a/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/util/Maps.java
+++ b/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/util/Maps.java
@@ -15,8 +15,6 @@
 package org.apache.aries.cdi.container.internal.util;
 
 import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -43,8 +41,6 @@
 
 public class Maps {
 
-	private static final String PREFIX_CONSTANT = "PREFIX_";
-
 	private Maps() {
 		// no instances
 	}
@@ -153,28 +149,6 @@
 		);
 	}
 
-	static String getPrefix(Annotation ann) {
-		try {
-			Class<?> clazz = ann.annotationType();
-			final Field f = clazz.getField(PREFIX_CONSTANT);
-			if (Modifier.isStatic(f.getModifiers()) &&
-				Modifier.isPublic(f.getModifiers()) &&
-				Modifier.isFinal(f.getModifiers()) &&
-				String.class.isAssignableFrom(f.getType())) {
-
-				final Object value = f.get(null);
-
-				if ( value != null ) {
-					return value.toString();
-				}
-			}
-		}
-		catch ( final Exception ignore) {
-			// ignore
-		}
-		return null;
-	}
-
 	@SuppressWarnings({ "rawtypes", "unchecked" })
 	public static List<?> merge(Object a, Object b) {
 		List<?> aList = Conversions.convert(a).to(new TypeReference<List<?>>() {});
diff --git a/cdi-itests/itest.bndrun b/cdi-itests/itest.bndrun
index d9c4958..6b6d29d 100644
--- a/cdi-itests/itest.bndrun
+++ b/cdi-itests/itest.bndrun
@@ -18,6 +18,7 @@
 -runrequires: \
 	osgi.identity;filter:='(osgi.identity=javax.ejb-api)',\
 	osgi.identity;filter:='(osgi.identity=javax.transaction-api)',\
+	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.extra)',\
 	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.itests)',\
 	osgi.identity;filter:='(osgi.identity=org.apache.aries.jndi.core)',\
 	osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.command)',\
@@ -68,7 +69,8 @@
 	org.jboss.weld.osgi-bundle;version='[3.0.5,3.0.6)',\
 	org.osgi.service.cdi;version='[1.0.0,1.0.1)',\
 	org.osgi.util.function;version='[1.1.0,1.1.1)',\
-	org.osgi.util.promise;version='[1.1.0,1.1.1)'
+	org.osgi.util.promise;version='[1.1.0,1.1.1)',\
+	org.apache.aries.cdi.extra;version='[0.0.2,0.0.3)'
 
 -resolve.effective: resolve, active
 -runee: JavaSE-1.8
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BarServlet.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BarServlet.java
index 4f56af8..c3fe1f5 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BarServlet.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/BarServlet.java
@@ -14,13 +14,8 @@
 
 package org.apache.aries.cdi.test.tb6;
 
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
-
 import java.io.IOException;
 import java.io.PrintWriter;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
 
 import javax.inject.Inject;
 import javax.servlet.Servlet;
@@ -29,31 +24,24 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.aries.cdi.extra.propertytypes.HttpWhiteboardServletName;
+import org.apache.aries.cdi.extra.propertytypes.HttpWhiteboardServletPattern;
 import org.osgi.annotation.bundle.Requirement;
 import org.osgi.service.cdi.CDIConstants;
-import org.osgi.service.cdi.annotations.BeanPropertyType;
 import org.osgi.service.cdi.annotations.Service;
 import org.osgi.service.cdi.annotations.SingleComponent;
 
+@HttpWhiteboardServletName("bar")
+@HttpWhiteboardServletPattern("/bar")
 @Requirement(
 	namespace = CDIConstants.CDI_EXTENSION_PROPERTY,
 	name = "aries.cdi.http"
 )
-@SingleComponent
 @Service(Servlet.class)
-@BarServlet.Props
+@SingleComponent
+@SuppressWarnings("serial")
 public class BarServlet extends HttpServlet {
 
-	@Retention(RUNTIME) @Target(TYPE )
-	@BeanPropertyType
-	public @interface Props {
-		String osgi_http_whiteboard_servlet_name() default "bar";
-		String osgi_http_whiteboard_servlet_pattern() default "/bar";
-
-	}
-
-	private static final long serialVersionUID = 1L;
-
 	@Override
 	protected void service(
 			HttpServletRequest request, HttpServletResponse response)
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/FooServlet.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/FooServlet.java
index 37e3bfe..c7d0c59 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/FooServlet.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/tb6/FooServlet.java
@@ -14,13 +14,8 @@
 
 package org.apache.aries.cdi.test.tb6;
 
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
-
 import java.io.IOException;
 import java.io.PrintWriter;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
 
 import javax.inject.Inject;
 import javax.servlet.Servlet;
@@ -29,25 +24,18 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.osgi.service.cdi.annotations.BeanPropertyType;
+import org.apache.aries.cdi.extra.propertytypes.HttpWhiteboardServletName;
+import org.apache.aries.cdi.extra.propertytypes.HttpWhiteboardServletPattern;
 import org.osgi.service.cdi.annotations.Service;
 import org.osgi.service.cdi.annotations.SingleComponent;
 
+@HttpWhiteboardServletName("foo")
+@HttpWhiteboardServletPattern("/foo")
 @SingleComponent
 @Service(Servlet.class)
-@FooServlet.Props
+@SuppressWarnings("serial")
 public class FooServlet extends HttpServlet {
 
-	@Retention(RUNTIME) @Target(TYPE )
-	@BeanPropertyType
-	public @interface Props {
-		String osgi_http_whiteboard_servlet_name() default "foo";
-		String osgi_http_whiteboard_servlet_pattern() default "/foo";
-
-	}
-
-	private static final long serialVersionUID = 1L;
-
 	@Override
 	protected void service(
 			HttpServletRequest request, HttpServletResponse response)
diff --git a/pom.xml b/pom.xml
index 4afa7fd..09ebced 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,6 +61,12 @@
 		<dependencies>
 			<dependency>
 				<groupId>org.apache.felix</groupId>
+				<artifactId>org.apache.felix.converter</artifactId>
+				<version>1.0.2</version>
+				<scope>provided</scope>
+			</dependency>
+			<dependency>
+				<groupId>org.apache.felix</groupId>
 				<artifactId>org.apache.felix.http.servlet-api</artifactId>
 				<version>1.1.2</version>
 			</dependency>
@@ -187,12 +193,6 @@
 			</dependency>
 			<dependency>
 				<groupId>org.osgi</groupId>
-				<artifactId>org.osgi.util.converter</artifactId>
-				<version>1.0.0</version>
-				<scope>provided</scope>
-			</dependency>
-			<dependency>
-				<groupId>org.osgi</groupId>
 				<artifactId>org.osgi.util.function</artifactId>
 				<version>1.1.0</version>
 			</dependency>