summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/binding-jms-policy
diff options
context:
space:
mode:
authorslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2008-09-24 08:13:02 +0000
committerslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2008-09-24 08:13:02 +0000
commit8d6c3f989bb2f359091468534730080425afa8c4 (patch)
tree986a29d3ef78d0b960ddb4dc98e15adc831ffe84 /java/sca/modules/binding-jms-policy
parent9f462538f3ac1e5522a87206a0668ecdecc9e3c4 (diff)
Change message getHeaders() operation to return a list, remove the QoS context and change various tests to take account of this assuming that the security information is now passed in the header. This pass the security context is not consolidated into a single subject. The tests that used to pass just a principal still do. Also add a delivery mode JMS policy test. Add some ignores.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@698457 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
-rw-r--r--java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java14
-rw-r--r--java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java14
-rw-r--r--java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java2
-rw-r--r--java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml25
-rw-r--r--java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java2
5 files changed, 42 insertions, 15 deletions
diff --git a/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java b/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java
index 98a164c612..17b5da42be 100644
--- a/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java
+++ b/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java
@@ -19,11 +19,15 @@
package org.apache.tuscany.sca.binding.jms.policy.authentication.token;
+import javax.security.auth.Subject;
+
import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.invocation.Interceptor;
import org.apache.tuscany.sca.invocation.Invoker;
import org.apache.tuscany.sca.invocation.Message;
import org.apache.tuscany.sca.policy.PolicySet;
+import org.apache.tuscany.sca.policy.SecurityUtil;
+import org.apache.tuscany.sca.policy.authentication.token.TokenPrincipal;
/**
* Policy handler to handle PolicySet related to Logging with the QName
@@ -63,9 +67,13 @@ public class JMSTokenAuthenticationReferencePolicyInterceptor implements Interce
if ( policy.getTokenName() != null){
- // add header to Tuscany message
- msg.getHeaders().put(policy.getTokenName().toString(),
- "SomeJMSAuthorizationToken");
+ Subject subject = SecurityUtil.getSubject(msg);
+ TokenPrincipal principal = SecurityUtil.getPrincipal(subject, TokenPrincipal.class);
+
+ if (principal == null){
+ principal = new TokenPrincipal("SomeJMSAuthorizationToken");
+ subject.getPrincipals().add(principal);
+ }
}
return getNext().invoke(msg);
diff --git a/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java b/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java
index 1280abc3e0..ec3be6e165 100644
--- a/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java
+++ b/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java
@@ -66,18 +66,14 @@ public class JMSTokenAuthenticationServicePolicyInterceptor implements Intercept
}
public Message invoke(Message msg) {
+ Subject subject = SecurityUtil.getSubject(msg);
+ TokenPrincipal principal = SecurityUtil.getPrincipal(subject, TokenPrincipal.class);
- String token = (String)msg.getHeaders().get(policy.getTokenName().toString());
-
- if (token != null) {
- System.out.println("Token: " + token);
+ if (principal != null) {
+ System.out.println("Token: " + principal.getName());
// call out here to some 3rd party system to do whatever you
- // need to turn header credentials into an authenticated principal
-
- Subject subject = SecurityUtil.getSubject(msg);
- Principal principal = new TokenPrincipal(token);
- subject.getPrincipals().add(principal);
+ // need to authenticate the principal
}
return getNext().invoke(msg);
diff --git a/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java b/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java
index e109c52fba..1c16e3fa1b 100644
--- a/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java
+++ b/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java
@@ -35,7 +35,7 @@ import org.apache.tuscany.sca.policy.Policy;
public class JMSHeaderPolicy implements Policy {
public static final QName JMS_HEADER_POLICY_QNAME = new QName(Constants.SCA10_TUSCANY_NS, "jmsHeader");
public static final String JMS_HEADER_JMS_TYPE = "JMSType";
- public static final String JMS_HEADER_JMS_CORRELATION_ID = "JMSDeliveryMode";
+ public static final String JMS_HEADER_JMS_CORRELATION_ID = "JMSCorrelationID";
public static final String JMS_HEADER_JMS_DELIVERY_MODE = "JMSDeliveryMode";
public static final String JMS_HEADER_JMS_TIME_TO_LIVE = "JMSTimeToLive";
public static final String JMS_HEADER_JMS_PRIORITY = "JMSPriority";
diff --git a/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml b/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml
index 044ed834e6..66ec011844 100644
--- a/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml
+++ b/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml
@@ -27,14 +27,37 @@
mayProvide="atLeastOnce atMostOnce ordered conversation" /-->
<!-- PolicyIntents defined by the SCA Runtime Extension for JMS Binding -->
+
<sca:intent name="JMS" constrains="sca:binding.jms">
<sca:description>
Communication through this binding requires JMS
</sca:description>
</sca:intent>
+ <!-- delivery mode -->
+ <intent name="deliveryMode"
+ constrains="sca:binding.jms">
+ <description>
+ This intent is used to indicate the deliver mode
+ of the sent message
+ </description>
+ </intent>
+
+ <intent name="deliveryMode.persistent">
+ <description>
+ Message are sent persistently
+ </description>
+ </intent>
+
+ <intent name="deliveryMode.nonPersistent">
+ <description>
+ Message are sent persistently
+ </description>
+ </intent>
+
+ <!-- priority -->
<intent name="priority"
- constrains="sca:binding">
+ constrains="sca:binding.jms">
<description>
This intent is used to indicate the priority of the
sent message
diff --git a/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java b/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java
index 4c0e3d2e11..a9da07ca7d 100644
--- a/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java
+++ b/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java
@@ -49,7 +49,7 @@ import org.junit.Test;
*/
public class PolicyProcessorTestCase {
private final static List<String> SEQ =
- Arrays.asList("<tuscany:jmsHeader xmlns:tuscany=\"http://tuscany.apache.org/xmlns/sca/1.0\" JMSType=\"ABC\" JMSDeliveryMode=\"PERSISTENT\" JMSDeliveryMode=\"PERSISTENT\" JMSTimeToLive=\"123\" JMSPriority=\"4\"><tuscany:property name=\"aProperty\">property value</tuscany:property></tuscany:jmsHeader>",
+ Arrays.asList("<tuscany:jmsHeader xmlns:tuscany=\"http://tuscany.apache.org/xmlns/sca/1.0\" JMSType=\"ABC\" JMSDeliveryMode=\"PERSISTENT\" JMSTimeToLive=\"123\" JMSPriority=\"4\"><tuscany:property name=\"aProperty\">property value</tuscany:property></tuscany:jmsHeader>",
"<tuscany:jmsTokenAuthentication xmlns:tuscany=\"http://tuscany.apache.org/xmlns/sca/1.0\" tuscany:tokenName=\"{http://tuscany.apache.org/foo}myname\" />");
@Test