You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sv...@apache.org on 2007/12/28 12:28:36 UTC

svn commit: r607209 - in /incubator/tuscany/java/sca/modules: binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/ core-spi/src/main/java/org/apache/tuscany/sca/invocation/ core/src/main/java/org/apache/tuscany/sca/core/invocation/ i...

Author: svkrish
Date: Fri Dec 28 03:28:34 2007
New Revision: 607209

URL: http://svn.apache.org/viewvc?rev=607209&view=rev
Log:
changes to flow authenticated principal from ws binding to invoked implementations

Modified:
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
    incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Message.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/MessageImpl.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java
    incubator/tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/ImmutableMessage.java

Modified: incubator/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/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java?rev=607209&r1=607208&r2=607209&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java Fri Dec 28 03:28:34 2007
@@ -26,13 +26,16 @@
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
+import java.security.Principal;
 import java.security.PrivilegedAction;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Vector;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import javax.security.auth.Subject;
 import javax.wsdl.Definition;
 import javax.wsdl.Port;
 import javax.wsdl.extensions.soap.SOAPAddress;
@@ -98,6 +101,9 @@
 import org.apache.tuscany.sca.runtime.RuntimeComponent;
 import org.apache.tuscany.sca.runtime.RuntimeComponentService;
 import org.apache.tuscany.sca.runtime.RuntimeWire;
+import org.apache.ws.security.WSSecurityEngineResult;
+import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.handler.WSHandlerResult;
 
 public class Axis2ServiceProvider {
     
@@ -517,7 +523,6 @@
     // methods for Axis2 message receivers
 
     public Object invokeTarget(Operation op, Object[] args, MessageContext inMC) throws InvocationTargetException {
-
         String callbackAddress = null;
         String callbackID = null;
         Object conversationID = null;
@@ -559,6 +564,9 @@
         msg.setBody(args);
         msg.setOperation( op );
         
+        //fill message with QoS context info 
+        fillQoSContext(msg, inMC);
+        
         // if reference parameters are needed, create a new "To" EPR to hold them
         EndpointReference to = null;
         if (callbackAddress != null ||
@@ -683,6 +691,29 @@
             moduleBuilder.populateModule();
         } catch (IOException e) {
             throw new DeploymentException(e);
+        }
+    }
+    
+    private void fillQoSContext(Message message, MessageContext axis2MsgCtx) {
+        if ( axis2MsgCtx.getProperty(WSHandlerConstants.RECV_RESULTS) != null &&
+            axis2MsgCtx.getProperty(WSHandlerConstants.RECV_RESULTS) instanceof Vector ) {
+            Vector recvResults = (Vector)axis2MsgCtx.getProperty(WSHandlerConstants.RECV_RESULTS);
+            for ( int count1 = 0 ; count1 < recvResults.size() ; ++count1 ) {
+                if ( recvResults.elementAt(count1) instanceof WSHandlerResult ) {
+                    WSHandlerResult wshr = (WSHandlerResult)recvResults.elementAt(count1);
+                    Vector results = wshr.getResults();
+                    for ( int count2 = 0 ; count2 < results.size() ; ++count2 ) {
+                        if ( results.elementAt(count2) instanceof WSSecurityEngineResult ) {
+                            WSSecurityEngineResult securityResult = 
+                                (WSSecurityEngineResult)wshr.getResults().elementAt(count2);
+                            if ( securityResult.get("principal") != null ) {
+                                message.getQoSContext().put(Message.QOS_CTX_SECURITY_PRINCIPAL, securityResult.get("principal"));
+                            }
+                        }
+                    }
+                }
+            }
+            
         }
     }
 }

Modified: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Message.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Message.java?rev=607209&r1=607208&r2=607209&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Message.java (original)
+++ incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Message.java Fri Dec 28 03:28:34 2007
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.sca.invocation;
 
+import java.util.Map;
+
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.runtime.EndpointReference;
 
@@ -27,6 +29,7 @@
  * @version $Rev $Date
  */
 public interface Message {
+    public static final String QOS_CTX_SECURITY_PRINCIPAL = "PRINCIPAL";
 
     /**
      * Returns the body of the message, which will be the payload or parameters associated with the wire
@@ -103,5 +106,12 @@
      * @param op The operation that created the message
      */
     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();
 }

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/MessageImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/MessageImpl.java?rev=607209&r1=607208&r2=607209&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/MessageImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/MessageImpl.java Fri Dec 28 03:28:34 2007
@@ -18,6 +18,9 @@
  */
 package org.apache.tuscany.sca.core.invocation;
 
+import java.util.Hashtable;
+import java.util.Map;
+
 import org.apache.tuscany.sca.core.assembly.EndpointReferenceImpl;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.invocation.Message;
@@ -28,11 +31,12 @@
  *
  * @version $Rev $Date
  */
-public class MessageImpl implements Message {
+public class MessageImpl implements Message { 
     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;
@@ -91,6 +95,10 @@
 
     public void setOperation(Operation op) {
         this.operation = op;
+    }
+
+    public Map<String, Object> getQoSContext() {
+        return qosContext;
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java?rev=607209&r1=607208&r2=607209&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java Fri Dec 28 03:28:34 2007
@@ -19,6 +19,7 @@
 package org.apache.tuscany.sca.core.invocation;
 
 import java.util.LinkedList;
+import java.util.Map;
 
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.invocation.Interceptor;
@@ -154,6 +155,9 @@
             return null;
         }
 
+        public Map<String, Object> getQoSContext() {
+            return null;
+        }
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java?rev=607209&r1=607208&r2=607209&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java Fri Dec 28 03:28:34 2007
@@ -28,6 +28,7 @@
 import org.apache.tuscany.sca.assembly.OperationsConfigurator;
 import org.apache.tuscany.sca.implementation.java.JavaImplementation;
 import org.apache.tuscany.sca.invocation.InvocationChain;
+import org.apache.tuscany.sca.invocation.Invoker;
 import org.apache.tuscany.sca.policy.Intent;
 import org.apache.tuscany.sca.policy.PolicySet;
 import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
@@ -47,10 +48,10 @@
     }
 
     public void process(RuntimeWire wire) {
-        Contract contract = wire.getSource().getContract();
+        /*Contract contract = wire.getSource().getContract();
         if (!(contract instanceof RuntimeComponentReference)) {
             return;
-        }
+        }*/
         
         RuntimeComponent component = wire.getTarget().getComponent();
         if ( component != null && component.getImplementation() instanceof JavaImplementation ) {
@@ -100,7 +101,7 @@
                         }
                         
                         if ( !applicablePolicyHandlers.isEmpty() ) {
-                            chain.addInterceptor(0, new PolicyHandlingInterceptor(chain.getTargetOperation(),
+                            chain.addInterceptor(1, new PolicyHandlingInterceptor(chain.getTargetOperation(),
                                                                                   applicablePolicyHandlers));
                         }
                     }

Modified: incubator/tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/ImmutableMessage.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/ImmutableMessage.java?rev=607209&r1=607208&r2=607209&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/ImmutableMessage.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/ImmutableMessage.java Fri Dec 28 03:28:34 2007
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.sca.implementation.notification;
 
+import java.util.Map;
+
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.invocation.Message;
 import org.apache.tuscany.sca.runtime.EndpointReference;
@@ -84,6 +86,11 @@
      * @see org.apache.tuscany.sca.invocation.Message#getReplyTo()
      */
     public EndpointReference getReplyTo() {
+        return null;
+    }
+
+    public Map<String, Object> getQoSContext() {
+        // TODO Auto-generated method stub
         return null;
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org