Author: slaws
Date: Wed Sep 24 01:13:02 2008
New Revision: 698457

URL: http://svn.apache.org/viewvc?rev=698457&view=rev
Log:
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. 

Added:
    
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderPolicyUtil.java
   (with props)
Modified:
    tuscany/java/sca/demos/bigbank-account/pom.xml
    
tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java
    
tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java
    tuscany/java/sca/distribution/features/all/   (props changed)
    tuscany/java/sca/distribution/features/core/   (props changed)
    tuscany/java/sca/distribution/features/ejava/   (props changed)
    tuscany/java/sca/distribution/features/manager/   (props changed)
    tuscany/java/sca/distribution/features/process/   (props changed)
    tuscany/java/sca/distribution/features/repository/   (props changed)
    tuscany/java/sca/distribution/features/web20/   (props changed)
    tuscany/java/sca/distribution/features/webservice/   (props changed)
    
tuscany/java/sca/itest/builder/src/test/java/org/apache/tuscany/sca/itest/builder/CustomCompositeBuilder.java
    tuscany/java/sca/itest/jms/src/main/resources/policyHeaders/definitions.xml
    
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java
    
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java
    
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java
    
tuscany/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml
    
tuscany/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java
    
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingInvoker.java
    
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java
    
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationReferencePolicyInterceptor.java
    
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationServicePolicyInterceptor.java
    
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderReferencePolicyInterceptor.java
    
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderServicePolicyInterceptor.java
    
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2SOAPHeaderString.java
    
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
    
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingBasicAuthenticationConfigurator.java
    
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingHeaderConfigurator.java
    
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Message.java
    
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java
    
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/MessageImpl.java
    
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java
    
tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/ImmutableMessage.java
    
tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/SecurityUtil.java
    
tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java
    
tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java

Modified: tuscany/java/sca/demos/bigbank-account/pom.xml
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/demos/bigbank-account/pom.xml?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- tuscany/java/sca/demos/bigbank-account/pom.xml (original)
+++ tuscany/java/sca/demos/bigbank-account/pom.xml Wed Sep 24 01:13:02 2008
@@ -43,7 +43,12 @@
             <version>1.4-SNAPSHOT</version>
         </dependency>
 
-
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-policy-security</artifactId>
+            <version>1.4-SNAPSHOT</version>
+        </dependency>
+        
         <dependency>
             <groupId>org.apache.ws.security</groupId>
             <artifactId>wss4j</artifactId>

Modified: 
tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java
 (original)
+++ 
tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java
 Wed Sep 24 01:13:02 2008
@@ -13,6 +13,7 @@
 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;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -52,10 +53,11 @@
         Object msgBody = msg.getBody();
         if (msgBody instanceof Object[]) {
                Object args[] = (Object[])msg.getBody();
-            if ( msg.getQoSContext().get(Message.QOS_CTX_SECURITY_PRINCIPAL) 
!= null ) {
-                    
BigbankCheckingsAcl.authorize((Principal)msg.getQoSContext().get(Message.QOS_CTX_SECURITY_PRINCIPAL),
-                                                  (String)args[0]);
-            }
+               Principal principal = SecurityUtil.getPrincipal(msg);
+               if (principal != null){
+                BigbankCheckingsAcl.authorize(principal,
+                                             (String)args[0]);
+               }
         } 
         
         Message responseMsg = null;

Modified: 
tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java
 (original)
+++ 
tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java
 Wed Sep 24 01:13:02 2008
@@ -23,6 +23,7 @@
 
 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.util.PolicyHandler;
 
 /**
@@ -39,10 +40,11 @@
             if ( context[count] instanceof Message ) {
                 Message msg = (Message)context[count];
                 Object args[] = (Object[])msg.getBody();
-                if ( 
msg.getQoSContext().get(Message.QOS_CTX_SECURITY_PRINCIPAL) != null ) {
-                        
BigbankCheckingsAcl.authorize((Principal)msg.getQoSContext().get(Message.QOS_CTX_SECURITY_PRINCIPAL),
-                                                      (String)args[0]);
-                }
+                Principal principal = SecurityUtil.getPrincipal(msg);
+                if (principal != null){
+                    BigbankCheckingsAcl.authorize(principal,
+                                                 (String)args[0]);
+                }                
             }
         }
     }

Propchange: tuscany/java/sca/distribution/features/all/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Sep 24 01:13:02 2008
@@ -0,0 +1 @@
+target

Propchange: tuscany/java/sca/distribution/features/core/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Sep 24 01:13:02 2008
@@ -0,0 +1 @@
+target

Propchange: tuscany/java/sca/distribution/features/ejava/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Sep 24 01:13:02 2008
@@ -0,0 +1 @@
+target

Propchange: tuscany/java/sca/distribution/features/manager/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Sep 24 01:13:02 2008
@@ -0,0 +1 @@
+target

Propchange: tuscany/java/sca/distribution/features/process/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Sep 24 01:13:02 2008
@@ -0,0 +1 @@
+target

Propchange: tuscany/java/sca/distribution/features/repository/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Sep 24 01:13:02 2008
@@ -0,0 +1 @@
+target

Propchange: tuscany/java/sca/distribution/features/web20/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Sep 24 01:13:02 2008
@@ -0,0 +1 @@
+target

Propchange: tuscany/java/sca/distribution/features/webservice/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Sep 24 01:13:02 2008
@@ -0,0 +1 @@
+target

Modified: 
tuscany/java/sca/itest/builder/src/test/java/org/apache/tuscany/sca/itest/builder/CustomCompositeBuilder.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/itest/builder/src/test/java/org/apache/tuscany/sca/itest/builder/CustomCompositeBuilder.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/itest/builder/src/test/java/org/apache/tuscany/sca/itest/builder/CustomCompositeBuilder.java
 (original)
+++ 
tuscany/java/sca/itest/builder/src/test/java/org/apache/tuscany/sca/itest/builder/CustomCompositeBuilder.java
 Wed Sep 24 01:13:02 2008
@@ -78,7 +78,7 @@
     private Composite domainComposite;
     private boolean nonWiring;
 
-    protected CustomCompositeBuilder(boolean nonWiring) {
+    public CustomCompositeBuilder(boolean nonWiring) {
         this.nonWiring = nonWiring;
     }
 

Modified: 
tuscany/java/sca/itest/jms/src/main/resources/policyHeaders/definitions.xml
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/itest/jms/src/main/resources/policyHeaders/definitions.xml?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- tuscany/java/sca/itest/jms/src/main/resources/policyHeaders/definitions.xml 
(original)
+++ tuscany/java/sca/itest/jms/src/main/resources/policyHeaders/definitions.xml 
Wed Sep 24 01:13:02 2008
@@ -22,7 +22,7 @@
              xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0";
                         xmlns:sca="http://www.osoa.org/xmlns/sca/1.0";>
 
-    <policySet name="JMSPolicySet"
+    <policySet name="JMSPolicySet1"
                provides="priority"
                appliesTo="sca:binding.jms">
         <intentMap provides="priority" default="medium">
@@ -37,5 +37,18 @@
             </qualifier>
         </intentMap>
     </policySet>
+    
+    <policySet name="JMSPolicySet2"
+               provides="deliveryMode"
+               appliesTo="sca:binding.jms">
+        <intentMap provides="deliveryMode" default="nonPersistent">
+            <qualifier name="persistent">
+                <tuscany:jmsHeader JMSDeliveryMode="PERSISTENT"/>
+            </qualifier>
+            <qualifier name="nonPersistent">
+                <tuscany:jmsHeader JMSDeliveryMode="NON_PERSISTENT"/>
+            </qualifier>
+        </intentMap>
+    </policySet>    
 
 </definitions>
\ No newline at end of file

Modified: 
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java
 (original)
+++ 
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java
 Wed Sep 24 01:13:02 2008
@@ -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 @@
         
         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);

Modified: 
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java
 (original)
+++ 
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java
 Wed Sep 24 01:13:02 2008
@@ -66,18 +66,14 @@
     }
 
     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);

Modified: 
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java
 (original)
+++ 
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java
 Wed Sep 24 01:13:02 2008
@@ -35,7 +35,7 @@
 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";

Modified: 
tuscany/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml
 (original)
+++ 
tuscany/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml
 Wed Sep 24 01:13:02 2008
@@ -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

Modified: 
tuscany/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java
 (original)
+++ 
tuscany/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java
 Wed Sep 24 01:13:02 2008
@@ -49,7 +49,7 @@
  */
 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

Modified: 
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingInvoker.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingInvoker.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingInvoker.java
 (original)
+++ 
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingInvoker.java
 Wed Sep 24 01:13:02 2008
@@ -30,6 +30,7 @@
 import javax.jms.MessageProducer;
 import javax.jms.Session;
 import javax.naming.NamingException;
+import javax.security.auth.Subject;
 
 import org.apache.tuscany.sca.binding.jms.impl.JMSBinding;
 import org.apache.tuscany.sca.binding.jms.impl.JMSBindingConstants;
@@ -42,6 +43,8 @@
 import org.apache.tuscany.sca.invocation.Invoker;
 import org.apache.tuscany.sca.policy.PolicySet;
 import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
+import org.apache.tuscany.sca.policy.SecurityUtil;
+import org.apache.tuscany.sca.policy.authentication.token.TokenPrincipal;
 import org.apache.tuscany.sca.runtime.ReferenceParameters;
 import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
 import org.apache.tuscany.sca.runtime.RuntimeComponentService;
@@ -401,8 +404,11 @@
         }
         
         if (jmsTokenAuthenticationPolicy != null) {
-            String token = 
(String)tuscanyMsg.getHeaders().get(jmsTokenAuthenticationPolicy.getTokenName().toString());
-            
jmsMsg.setStringProperty(jmsTokenAuthenticationPolicy.getTokenName().toString(),
 token);
+            Subject subject = SecurityUtil.getSubject(tuscanyMsg);
+            TokenPrincipal principal = SecurityUtil.getPrincipal(subject, 
TokenPrincipal.class);
+            if (principal != null){
+                
jmsMsg.setStringProperty(jmsTokenAuthenticationPolicy.getTokenName().toString(),
 principal.getName());
+            }
         }
     }
 

Modified: 
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java
 (original)
+++ 
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java
 Wed Sep 24 01:13:02 2008
@@ -32,6 +32,7 @@
 import javax.jms.Session;
 import javax.jms.Topic;
 import javax.naming.NamingException;
+import javax.security.auth.Subject;
 
 import org.apache.tuscany.sca.assembly.Binding;
 import org.apache.tuscany.sca.binding.jms.impl.JMSBinding;
@@ -43,6 +44,8 @@
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.policy.PolicySet;
 import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
+import org.apache.tuscany.sca.policy.SecurityUtil;
+import org.apache.tuscany.sca.policy.authentication.token.TokenPrincipal;
 import org.apache.tuscany.sca.runtime.EndpointReference;
 import org.apache.tuscany.sca.runtime.ReferenceParameters;
 import org.apache.tuscany.sca.runtime.RuntimeComponentService;
@@ -205,8 +208,15 @@
         
         if (jmsTokenAuthenticationPolicy != null) {
             String token = 
requestJMSMsg.getStringProperty(jmsTokenAuthenticationPolicy.getTokenName().toString());
-            
tuscanyMsg.getHeaders().put(jmsTokenAuthenticationPolicy.getTokenName().toString(),
-                                        token);
+            
+            Subject subject = SecurityUtil.getSubject(tuscanyMsg);
+            TokenPrincipal principal = SecurityUtil.getPrincipal(subject, 
TokenPrincipal.class);
+            
+            if (principal == null){
+                principal = new TokenPrincipal(token);
+                subject.getPrincipals().add(principal);
+            }
+
         }
     }
 

Modified: 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationReferencePolicyInterceptor.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationReferencePolicyInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationReferencePolicyInterceptor.java
 (original)
+++ 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationReferencePolicyInterceptor.java
 Wed Sep 24 01:13:02 2008
@@ -84,8 +84,7 @@
             header.setHeaderString("SomeWSAuthorizationToken");
     
             // add header to Tuscany message
-            msg.getHeaders().put(policy.getTokenName().toString(),
-                                 header);  
+            msg.getHeaders().add(header);  
         }
         
         return getNext().invoke(msg);

Modified: 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationServicePolicyInterceptor.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationServicePolicyInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationServicePolicyInterceptor.java
 (original)
+++ 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationServicePolicyInterceptor.java
 Wed Sep 24 01:13:02 2008
@@ -23,6 +23,8 @@
 
 import javax.security.auth.Subject;
 
+import 
org.apache.tuscany.sca.binding.ws.axis2.policy.header.Axis2HeaderPolicyUtil;
+import org.apache.tuscany.sca.binding.ws.axis2.policy.header.Axis2SOAPHeader;
 import 
org.apache.tuscany.sca.binding.ws.axis2.policy.header.Axis2SOAPHeaderString;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.invocation.Interceptor;
@@ -66,7 +68,7 @@
 
     public Message invoke(Message msg) {
         
-        Axis2SOAPHeaderString header = 
(Axis2SOAPHeaderString)msg.getHeaders().get(policy.getTokenName().toString());
+        Axis2SOAPHeaderString header = 
(Axis2SOAPHeaderString)Axis2HeaderPolicyUtil.getHeader(msg, 
policy.getTokenName());
         
         if (header != null) {
             System.out.println("Token: " + header.getHeaderString());

Added: 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderPolicyUtil.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderPolicyUtil.java?rev=698457&view=auto
==============================================================================
--- 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderPolicyUtil.java
 (added)
+++ 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderPolicyUtil.java
 Wed Sep 24 01:13:02 2008
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.tuscany.sca.binding.ws.axis2.policy.header;
+
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.sca.invocation.Message;
+
+
+/**
+ *
+ * @version $Rev$ $Date$
+ */
+public class Axis2HeaderPolicyUtil {
+    
+    public static Axis2SOAPHeader getHeader(Message msg, QName headerName){
+        
+        Axis2SOAPHeader axis2Header = null;
+        
+        for (Object header : msg.getHeaders()){
+            if (header instanceof Axis2SOAPHeader){
+                Axis2SOAPHeader tmpHeader = (Axis2SOAPHeader)header;
+                
+                if (tmpHeader.getHeaderName().equals(headerName)){
+                    axis2Header = tmpHeader;
+                    break;
+                }
+            }
+        }
+        
+        return axis2Header;
+    }
+}

Propchange: 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderPolicyUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderPolicyUtil.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderReferencePolicyInterceptor.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderReferencePolicyInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderReferencePolicyInterceptor.java
 (original)
+++ 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderReferencePolicyInterceptor.java
 Wed Sep 24 01:13:02 2008
@@ -73,23 +73,7 @@
     }
 
     public Message invoke(Message msg) {
-        // could call out here to some 3rd party system to get credentials
-        
-        if ( policy.getHeaderName() != null){
-            // create Axis representation of header
-            //OMElement header = SOAPFactory
-            
-            OMFactory factory = OMAbstractFactory.getOMFactory();
-            OMNamespace ns1 = 
factory.createOMNamespace(policy.getHeaderName().getNamespaceURI(),
-                                                        
policy.getHeaderName().getPrefix());
-            OMElement header = 
factory.createOMElement(policy.getHeaderName().getLocalPart(),ns1);
-            OMText headerText = 
factory.createOMText(header,"SomeAuthTokenText");
-            header.addChild(headerText);
-    
-            // add header to Tuscany message
-            msg.getHeaders().put(policy.getHeaderName().toString(),
-                                 policy);  
-        }
+        // TODO - not yet implemented  
         
         return getNext().invoke(msg);
     }

Modified: 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderServicePolicyInterceptor.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderServicePolicyInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderServicePolicyInterceptor.java
 (original)
+++ 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderServicePolicyInterceptor.java
 Wed Sep 24 01:13:02 2008
@@ -62,17 +62,7 @@
     }
 
     public Message invoke(Message msg) {
-        
-        OMElement header = 
(OMElement)msg.getHeaders().get(policy.getHeaderName().toString());
-        
-        if (header != null) {
-            
-            System.out.println("Token: " + header.getText());
-            // could call out here to some 3rd part system to do whatever you 
-            // need to turn credentials into a principal            
-            
-            msg.getQoSContext().put(Message.QOS_CTX_SECURITY_PRINCIPAL, 
header.getText());             
-        }
+        // TODO - not yet implemented       
     
         return getNext().invoke(msg);
     }

Modified: 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2SOAPHeaderString.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2SOAPHeaderString.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2SOAPHeaderString.java
 (original)
+++ 
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2SOAPHeaderString.java
 Wed Sep 24 01:13:02 2008
@@ -54,6 +54,7 @@
     }
 
     public void setAsSOAPHeaderBlock(OMElement header) {
+        super.setAsSOAPHeaderBlock(header);
         headerString = header.getText();
     }
 }

Modified: 
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
 (original)
+++ 
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
 Wed Sep 24 01:13:02 2008
@@ -808,7 +808,7 @@
                             WSSecurityEngineResult securityResult = 
                                 
(WSSecurityEngineResult)wshr.getResults().elementAt(count2);
                             if ( securityResult.get("principal") != null ) {
-                                
message.getQoSContext().put(Message.QOS_CTX_SECURITY_PRINCIPAL, 
securityResult.get("principal"));
+                                
message.getHeaders().add(securityResult.get("principal"));
                             }
                         }
                     }

Modified: 
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingBasicAuthenticationConfigurator.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingBasicAuthenticationConfigurator.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingBasicAuthenticationConfigurator.java
 (original)
+++ 
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingBasicAuthenticationConfigurator.java
 Wed Sep 24 01:13:02 2008
@@ -114,15 +114,5 @@
         BasicAuthenticationPrincipal principal =  new 
BasicAuthenticationPrincipal(username,
                                                                                
    password);
         subject.getPrincipals().add(principal);
-
-        // Set the http headers
-        // This is just an experiment, looking at the alternatives to 
extracting
-        // username and password in the binding. With HTTP headers in the 
message it
-        // could be deferred to the interceptor. Asymetric though when 
compared with the
-        // reference support. 
-        // how to defined the scheme for message headers?
-        msg.getHeaders().put("httpheaders", httpHeaderProperties); 
     }    
-        
-
 }

Modified: 
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingHeaderConfigurator.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingHeaderConfigurator.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingHeaderConfigurator.java
 (original)
+++ 
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingHeaderConfigurator.java
 Wed Sep 24 01:13:02 2008
@@ -27,6 +27,7 @@
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axis2.context.MessageContext;
+import 
org.apache.tuscany.sca.binding.ws.axis2.policy.header.Axis2HeaderPolicyUtil;
 import org.apache.tuscany.sca.binding.ws.axis2.policy.header.Axis2SOAPHeader;
 import org.apache.tuscany.sca.invocation.Message;
 
@@ -46,9 +47,11 @@
             OMFactory factory = envelope.getOMFactory();
             SOAPHeader soapHeader = envelope.getHeader();
             
-            Axis2SOAPHeader header = 
(Axis2SOAPHeader)msg.getHeaders().get(headerQName.toString());
+            Axis2SOAPHeader header = Axis2HeaderPolicyUtil.getHeader(msg, 
headerQName) ;
             
-            soapHeader.addChild(header.getAsSOAPHeaderBlock(factory));
+            if (header != null){
+                soapHeader.addChild(header.getAsSOAPHeaderBlock(factory));
+            } 
         }
     }
     
@@ -60,7 +63,7 @@
         
         header.setAsSOAPHeaderBlock(omHeader);
         
-        msg.getHeaders().put(headerQName.toString(), header); 
+        msg.getHeaders().add(header); 
     }  
 
 }

Modified: 
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Message.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Message.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Message.java
 (original)
+++ 
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Message.java
 Wed Sep 24 01:13:02 2008
@@ -18,6 +18,7 @@
  */
 package org.apache.tuscany.sca.invocation;
 
+import java.util.List;
 import java.util.Map;
 
 import org.apache.tuscany.sca.interfacedef.Operation;
@@ -29,8 +30,6 @@
  * @version $Rev $Date$
  */
 public interface Message {
-    String QOS_CTX_SECURITY_PRINCIPAL = "PRINCIPAL";
-    String QOS_CTX_SECURITY_SUBJECT = "SUBJECT";
 
     /**
      * Returns the body of the message, which will be the payload or 
parameters associated with the wire
@@ -109,17 +108,9 @@
     void setOperation(Operation op);
     
     /** 
-     * Returns a map of objects that represents the QoS context that wraps 
this message such as 
-     * invoking authenticated principal and so on.
-     * 
-     * @return
-     */
-    Map<String, Object> getQoSContext();
-    
-    /** 
      * Returns a map of objects that are contained in the message header
      * 
      * @return
      */
-    Map<String, Object> getHeaders();
+    List<Object> getHeaders();
 }

Modified: 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java
 (original)
+++ 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java
 Wed Sep 24 01:13:02 2008
@@ -48,7 +48,15 @@
     }
 
     public Subject getSecuritySubject() {
-        return 
(Subject)ThreadMessageContext.getMessageContext().getQoSContext().get(Message.QOS_CTX_SECURITY_SUBJECT);
+        Subject subject = null;
+        
+        for (Object header : 
ThreadMessageContext.getMessageContext().getHeaders()){
+            if (header instanceof Subject){
+                subject  = (Subject)header;
+                break;
+            }
+        }
+        return subject;
     }
 
     public String getServiceName() {

Modified: 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/MessageImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/MessageImpl.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/MessageImpl.java
 (original)
+++ 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/MessageImpl.java
 Wed Sep 24 01:13:02 2008
@@ -18,7 +18,9 @@
  */
 package org.apache.tuscany.sca.core.invocation;
 
+import java.util.ArrayList;
 import java.util.Hashtable;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.tuscany.sca.core.assembly.EndpointReferenceImpl;
@@ -32,12 +34,11 @@
  * @version $Rev $Date$
  */
 public class MessageImpl implements Message { 
-    private Map<String, Object> headers = new Hashtable<String, Object>();
+    private List<Object> headers = new ArrayList<Object>();
     private Object body;
     private Object messageID;
     private boolean isFault;
     private Operation operation;
-    private Map<String, Object> qosContext = new Hashtable<String, Object>();
 
     private EndpointReference from;
     private EndpointReference to;
@@ -97,12 +98,8 @@
     public void setOperation(Operation op) {
         this.operation = op;
     }
-
-    public Map<String, Object> getQoSContext() {
-        return qosContext;
-    }
     
-    public Map<String, Object> getHeaders() {
+    public List<Object> getHeaders() {
         return headers;
     }    
 

Modified: 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java
 (original)
+++ 
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java
 Wed Sep 24 01:13:02 2008
@@ -19,6 +19,7 @@
 package org.apache.tuscany.sca.core.invocation;
 
 import java.util.LinkedList;
+import java.util.List;
 import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -186,7 +187,7 @@
             return null;
         }
         
-        public Map<String, Object> getHeaders() {
+        public List<Object> getHeaders() {
             return null;
         }        
     }

Modified: 
tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/ImmutableMessage.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/ImmutableMessage.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/ImmutableMessage.java
 (original)
+++ 
tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/ImmutableMessage.java
 Wed Sep 24 01:13:02 2008
@@ -18,6 +18,7 @@
  */
 package org.apache.tuscany.sca.implementation.notification;
 
+import java.util.List;
 import java.util.Map;
 
 import org.apache.tuscany.sca.interfacedef.Operation;
@@ -89,11 +90,8 @@
         return null;
     }
 
-    public Map<String, Object> getQoSContext() {
-        return null;
-    }
     
-    public Map<String, Object> getHeaders() {
+    public List<Object> getHeaders() {
         return null;
     }
 

Modified: 
tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/SecurityUtil.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/SecurityUtil.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/SecurityUtil.java
 (original)
+++ 
tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/SecurityUtil.java
 Wed Sep 24 01:13:02 2008
@@ -33,11 +33,19 @@
 public class SecurityUtil {
     
     public static Subject getSubject(Message msg){
-        Subject subject = 
(Subject)msg.getQoSContext().get(Message.QOS_CTX_SECURITY_SUBJECT);
+        
+        Subject subject = null;
+        
+        for (Object header : msg.getHeaders()){
+            if (header instanceof Subject){
+                subject  = (Subject)header;
+                break;
+            }
+        }
         
         if (subject == null){
             subject = new Subject(); 
-            msg.getQoSContext().put(Message.QOS_CTX_SECURITY_SUBJECT, 
subject); 
+            msg.getHeaders().add(subject); 
         }
         
         return subject;
@@ -52,4 +60,18 @@
         
         return null;
     }
+    
+    public static Principal getPrincipal(Message msg){
+        
+        Principal principal = null;
+        
+        for (Object header : msg.getHeaders()){
+            if (header instanceof Principal){
+                principal  = (Principal)header;
+                break;
+            }
+        }
+        
+        return principal;
+    }    
 }

Modified: 
tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java
 (original)
+++ 
tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java
 Wed Sep 24 01:13:02 2008
@@ -7,6 +7,7 @@
 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;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -46,10 +47,11 @@
         Object msgBody = msg.getBody();
         if (msgBody instanceof Object[]) {
                Object args[] = (Object[])msg.getBody();
-            if ( msg.getQoSContext().get(Message.QOS_CTX_SECURITY_PRINCIPAL) 
!= null ) {
-                    
BigbankCheckingsAcl.authorize((Principal)msg.getQoSContext().get(Message.QOS_CTX_SECURITY_PRINCIPAL),
-                                                  (String)args[0]);
-            }
+            Principal principal = SecurityUtil.getPrincipal(msg);
+            if (principal != null){
+                BigbankCheckingsAcl.authorize(principal,
+                                             (String)args[0]);
+            }          
         } 
         
         Message responseMsg = null;

Modified: 
tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- 
tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java
 (original)
+++ 
tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java
 Wed Sep 24 01:13:02 2008
@@ -23,6 +23,7 @@
 
 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.util.PolicyHandler;
 
 /**
@@ -39,10 +40,11 @@
             if ( context[count] instanceof Message ) {
                 Message msg = (Message)context[count];
                 Object args[] = (Object[])msg.getBody();
-                if ( 
msg.getQoSContext().get(Message.QOS_CTX_SECURITY_PRINCIPAL) != null ) {
-                        
BigbankCheckingsAcl.authorize((Principal)msg.getQoSContext().get(Message.QOS_CTX_SECURITY_PRINCIPAL),
-                                                      (String)args[0]);
-                }
+                Principal principal = SecurityUtil.getPrincipal(msg);
+                if (principal != null){
+                    BigbankCheckingsAcl.authorize(principal,
+                                                 (String)args[0]);
+                }                
             }
         }
     }


Reply via email to