diff options
author | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-07-07 21:37:19 +0000 |
---|---|---|
committer | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-07-07 21:37:19 +0000 |
commit | b0de81edb24b9247af5120bef1a06ed0e250957c (patch) | |
tree | bf3609e1f483b9041c9a5ea8c123fe148e7ab1b7 /java/sca/modules/interface-java/src/main | |
parent | 29826fcbbbe819fdb05b45e45f9e93f90fe47cfd (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/interface-java/src/main')
-rw-r--r-- | java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/PolicyJavaInterfaceVisitor.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/PolicyJavaInterfaceVisitor.java b/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/PolicyJavaInterfaceVisitor.java index bf80bef175..b41c0b318d 100644 --- a/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/PolicyJavaInterfaceVisitor.java +++ b/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/PolicyJavaInterfaceVisitor.java @@ -18,6 +18,7 @@ */ package org.apache.tuscany.sca.interfacedef.java.impl; +import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.util.List; @@ -82,6 +83,8 @@ public class PolicyJavaInterfaceVisitor implements JavaInterfaceVisitor { } } + readSpecificIntents(clazz.getAnnotations(), requiredIntents); + PolicySets policySetAnnotation = clazz.getAnnotation(PolicySets.class); if (policySetAnnotation != null) { String[] policySetNames = policySetAnnotation.value(); @@ -156,4 +159,25 @@ public class PolicyJavaInterfaceVisitor implements JavaInterfaceVisitor { } } + 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); + } + } + } |