summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-07-07 21:37:19 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-07-07 21:37:19 +0000
commitb0de81edb24b9247af5120bef1a06ed0e250957c (patch)
treebf3609e1f483b9041c9a5ea8c123fe148e7ab1b7 /java/sca/modules/implementation-java/src/main/java/org/apache/tuscany
parent29826fcbbbe819fdb05b45e45f9e93f90fe47cfd (diff)
Add support to introspect intents from specific annotations such as @Authentication
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@791984 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules/implementation-java/src/main/java/org/apache/tuscany')
-rw-r--r--java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PolicyProcessor.java26
1 files changed, 26 insertions, 0 deletions
diff --git a/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PolicyProcessor.java b/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PolicyProcessor.java
index f48358eddf..ca644168ef 100644
--- a/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PolicyProcessor.java
+++ b/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PolicyProcessor.java
@@ -18,6 +18,7 @@
*/
package org.apache.tuscany.sca.implementation.java.introspect.impl;
+import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.List;
@@ -72,6 +73,7 @@ public class PolicyProcessor extends BaseJavaClassVisitor {
Reference reference = null;
if ( (reference = getReferenceByName(name, type)) != null ) {
readIntents(field.getAnnotation(Requires.class), reference.getRequiredIntents());
+ readSpecificIntents(field.getAnnotations(), reference.getRequiredIntents());
readPolicySets(field.getAnnotation(PolicySets.class), reference.getPolicySets());
}
}
@@ -81,6 +83,7 @@ public class PolicyProcessor extends BaseJavaClassVisitor {
Reference reference = null;
if ( (reference = getReference(method, type)) != null ) {
readIntents(method.getAnnotation(Requires.class), reference.getRequiredIntents());
+ readSpecificIntents(method.getAnnotations(), reference.getRequiredIntents());
readPolicySets(method.getAnnotation(PolicySets.class), reference.getPolicySets());
} else {
/*
@@ -178,6 +181,27 @@ public class PolicyProcessor extends BaseJavaClassVisitor {
}
}
}
+
+ private void readSpecificIntents(Annotation[] annotations, List<Intent> requiredIntents) {
+ for (Annotation a : annotations) {
+ org.oasisopen.sca.annotation.Intent intentAnnotation =
+ a.annotationType().getAnnotation(org.oasisopen.sca.annotation.Intent.class);
+ if (intentAnnotation == null) {
+ continue;
+ }
+ QName qname = null;
+ String value = intentAnnotation.value();
+ if (!value.equals("")) {
+ qname = getQName(value);
+ } else {
+ qname = new QName(intentAnnotation.targetNamespace(), intentAnnotation.localPart());
+ }
+ Intent intent = policyFactory.createIntent();
+ intent.setUnresolved(true);
+ intent.setName(qname);
+ requiredIntents.add(intent);
+ }
+ }
/**
* Read policy intents on the given interface or class
@@ -201,6 +225,8 @@ public class PolicyProcessor extends BaseJavaClassVisitor {
}
}
+ readSpecificIntents(clazz.getAnnotations(), requiredIntents);
+
PolicySets policySetAnnotation = clazz.getAnnotation(PolicySets.class);
if (policySetAnnotation != null) {
String[] policySetNames = policySetAnnotation.value();