FELIX-1229 : Cache parameter map for annotations and fix activation methods if annotations are used.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@784750 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/AbstractTag.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/AbstractTag.java
index 02f483c..bdefa23 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/AbstractTag.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/AbstractTag.java
@@ -31,6 +31,8 @@
protected final JavaField field;
+ protected Map<String, String> parameters;
+
/**
* @param desc Description
* @param field Field
@@ -101,8 +103,19 @@
public abstract String getName();
/**
+ * @see org.apache.felix.scrplugin.tags.JavaTag#getNamedParameterMap()
+ */
+ public Map<String, String> getNamedParameterMap() {
+ if ( this.parameters == null ) {
+ this.parameters = this.createNamedParameterMap();
+ }
+ return this.parameters;
+ }
+
+ /**
+ * Create the parameter map.
* @see JavaTag#getNamedParameterMap()
*/
- public abstract Map<String, String> getNamedParameterMap();
+ protected abstract Map<String, String> createNamedParameterMap();
}
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ComponentTag.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ComponentTag.java
index e31cd37..3421536 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ComponentTag.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ComponentTag.java
@@ -106,7 +106,7 @@
}
@Override
- public Map<String, String> getNamedParameterMap() {
+ public Map<String, String> createNamedParameterMap() {
final Map<String, String> map = new HashMap<String, String>();
map.put(Constants.COMPONENT_NAME, emptyToNull(this.annotation.name()));
@@ -133,11 +133,11 @@
for(final JavaMethod jm : jms) {
final Annotation[] annotations = jm.getAnnotations();
for(final Annotation a : annotations) {
- if ( a.getType().getJavaClass().getName().equals(Activate.class) ) {
+ if ( a.getType().getJavaClass().getFullyQualifiedName().equals(Activate.class.getName()) ) {
map.put(Constants.COMPONENT_ACTIVATE, jm.getName());
}
- if ( a.getType().getJavaClass().getName().equals(Deactivate.class) ) {
- map.put(Constants.COMPONENT_ACTIVATE, jm.getName());
+ if ( a.getType().getJavaClass().getFullyQualifiedName().equals(Deactivate.class.getName()) ) {
+ map.put(Constants.COMPONENT_DEACTIVATE, jm.getName());
}
}
}
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/PropertyTag.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/PropertyTag.java
index 8e3737f..6067a5b 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/PropertyTag.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/PropertyTag.java
@@ -125,7 +125,7 @@
}
@Override
- public Map<String, String> getNamedParameterMap() {
+ public Map<String, String> createNamedParameterMap() {
final Map<String, String> map = new LinkedHashMap<String, String>();
map.put(Constants.PROPERTY_NAME, emptyToNull(this.annotation.name()));
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ReferenceTag.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ReferenceTag.java
index c59e74f..ffc4c1c 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ReferenceTag.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ReferenceTag.java
@@ -92,7 +92,7 @@
}
@Override
- public Map<String, String> getNamedParameterMap() {
+ public Map<String, String> createNamedParameterMap() {
final Map<String, String> map = new HashMap<String, String>();
map.put(Constants.REFERENCE_NAME, emptyToNull(this.annotation.name()));
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ServiceTag.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ServiceTag.java
index 2bc0c3d..6654377 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ServiceTag.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ServiceTag.java
@@ -63,7 +63,7 @@
}
@Override
- public Map<String, String> getNamedParameterMap() {
+ public Map<String, String> createNamedParameterMap() {
final Map<String, String> map = new HashMap<String, String>();
String serviceInterface = null;
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/sling/SlingServletComponentTag.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/sling/SlingServletComponentTag.java
index e002f0c..c10771d 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/sling/SlingServletComponentTag.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/sling/SlingServletComponentTag.java
@@ -43,7 +43,7 @@
}
@Override
- public Map<String, String> getNamedParameterMap() {
+ public Map<String, String> createNamedParameterMap() {
final Map<String, String> map = new HashMap<String, String>();
map.put(Constants.COMPONENT_IMMEDIATE, String.valueOf(true));
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/sling/SlingServletPropertyTag.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/sling/SlingServletPropertyTag.java
index ea97083..58a9d87 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/sling/SlingServletPropertyTag.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/sling/SlingServletPropertyTag.java
@@ -18,9 +18,7 @@
*/
package org.apache.felix.scrplugin.tags.annotation.sling;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.TreeMap;
+import java.util.*;
import org.apache.felix.scrplugin.Constants;
import org.apache.felix.scrplugin.tags.JavaClassDescription;
@@ -52,7 +50,7 @@
}
@Override
- public Map<String, String> getNamedParameterMap() {
+ public Map<String, String> createNamedParameterMap() {
final SortedMap<String, String> map = new TreeMap<String, String>();
map.put(Constants.PROPERTY_NAME, this.name);
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/sling/SlingServletServiceTag.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/sling/SlingServletServiceTag.java
index bf71dc4..63e8277 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/sling/SlingServletServiceTag.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/sling/SlingServletServiceTag.java
@@ -45,7 +45,7 @@
}
@Override
- public Map<String, String> getNamedParameterMap() {
+ public Map<String, String> createNamedParameterMap() {
final Map<String, String> map = new HashMap<String, String>();
map.put(Constants.SERVICE_INTERFACE, Servlet.class.getName());