Author: mckierna
Date: Thu Sep  6 05:34:04 2007
New Revision: 573243

URL: http://svn.apache.org/viewvc?rev=573243&view=rev
Log:
SANDESHA2-120 : plugin to decorate replyTo EPRs

Modified:
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/policy/SandeshaPolicyBean.java
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/PropertyManager.java
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RMMsgCreator.java
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/SenderWorker.java
    
webservices/sandesha/trunk/java/modules/core/src/main/resources/org/apache/sandesha2/i18n/resource.properties
    webservices/sandesha/trunk/java/modules/mar/module.xml

Modified: 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java?rev=573243&r1=573242&r2=573243&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java
 Thu Sep  6 05:34:04 2007
@@ -420,6 +420,8 @@
                
                public static final String RetransmissionCount = 
"RetransmissionCount";
 
+               public static final String EPRDecorator = "EPRDecorator";
+               
                public static final String SecurityManager = "SecurityManager";
 
                public static final String ContextManager = "ContextManager";
@@ -460,6 +462,8 @@
                        
                        public static final int MaximumRetransmissionCount = 10;
                        
+                       public static final String EPRDecorator = 
"org.apache.sandesha2.addressing.EPRDecoratorImpl";
+                       
                        public static final String SecurityManager = 
"org.apache.sandesha2.security.dummy.DummySecurityManager";
 
                        public static final String ContextManager = 
"org.apache.sandesha2.context.DummyContextManager";
@@ -544,6 +548,8 @@
        
        static final String SECURITY_MANAGER = "Sandesha2SecurityManager";
        
+       static final String EPR_DECORATOR = "Sandesha2EPRDecorator";    
+       
        static final String CONTEXT_MANAGER = "Sandesha2ContextManager";
        
        static final String RETRANSMITTABLE_PHASES = "RMRetransmittablePhases";
@@ -608,6 +614,7 @@
         public static final String ELEM_MSG_TYPES_TO_DROP = 
"MessageTypesToDrop";
         public static final String ELEM_STORAGE_MGR = "StorageManagers";
         public static final String ELEM_SEC_MGR = "SecurityManager";
+        public static final String ELEM_EPR_DECORATOR = "EPRDecorator";
         public static final String ELEM_CONTEXT_MGR = "ContextManager";
         public static final String ELEM_INMEMORY_STORAGE_MGR = 
"InMemoryStorageManager";
         public static final String ELEM_PERMANENT_STORAGE_MGR = 
"PermanentStorageManager";
@@ -632,6 +639,7 @@
         public static final QName Q_ELEM_MSG_TYPES_TO_DROP = new 
QName(URI_RM_POLICY_NS, ELEM_MSG_TYPES_TO_DROP, ATTR_WSRM);
         public static final QName Q_ELEM_STORAGE_MGR =new 
QName(URI_RM_POLICY_NS, ELEM_STORAGE_MGR, ATTR_WSRM);
         public static final QName Q_ELEM_SEC_MGR = new QName(URI_RM_POLICY_NS, 
ELEM_SEC_MGR, ATTR_WSRM);
+        public static final QName Q_ELEM_EPR_DECORATOR = new 
QName(URI_RM_POLICY_NS, ELEM_EPR_DECORATOR, ATTR_WSRM);
         public static final QName Q_ELEM_CONTEXT_MGR = new 
QName(URI_RM_POLICY_NS, ELEM_CONTEXT_MGR, ATTR_WSRM);
         public static final QName Q_ELEM_INMEMORY_STORAGE_MGR =new 
QName(URI_RM_POLICY_NS, ELEM_INMEMORY_STORAGE_MGR, ATTR_WSRM);
         public static final QName Q_ELEM_PERMANENT_STORAGE_MGR =new 
QName(URI_RM_POLICY_NS, ELEM_PERMANENT_STORAGE_MGR, ATTR_WSRM);

Modified: 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java?rev=573243&r1=573242&r2=573243&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
 Thu Sep  6 05:34:04 2007
@@ -27,7 +27,9 @@
        public static final String 
cannotGetStorageManager="cannotGetStorageManager";
        public static final String 
storageManagerMustImplement="storageManagerMustImplement";
        public static final String 
cannotInitSecurityManager="cannotInitSecurityManager";
+       public static final String 
cannotInitEPRDecorator="cannotInitEPRDecorator";
        public static final String 
securityManagerMustImplement="securityManagerMustImplement";
+       public static final String 
eprDecoratorMustImplement="eprDecoratorMustImplement";
        public static final String 
cannotInitContextManager="cannotInitContextManager";
        public static final String 
contextManagerMustImplement="contextManagerMustImplement";
        public static final String 
cannotFindModulePolicies="cannotFindModulePolicies";

Modified: 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/policy/SandeshaPolicyBean.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/policy/SandeshaPolicyBean.java?rev=573243&r1=573242&r2=573243&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/policy/SandeshaPolicyBean.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/policy/SandeshaPolicyBean.java
 Thu Sep  6 05:34:04 2007
@@ -52,6 +52,8 @@
     private String permanentStorageManagerClass = null;
 
     private String securityManagerClass = null;
+
+    private String eprDecoratorClass = null;
     
     private String contextManagerClass = null;
 
@@ -214,6 +216,14 @@
         this.securityManagerClass = className;
     }
     
+    public String getEPRDecoratorClass(){
+       return eprDecoratorClass;
+    }
+    
+    public void setEPRDecoratorClass(String className) {
+      this.eprDecoratorClass = className;
+    }
+    
     public String getContextManagerClass() {
        return contextManagerClass;
     }
@@ -343,6 +353,11 @@
                        // <wsrm:SecurityManager />
                        writer.writeStartElement(prefix, 
Sandesha2Constants.Assertions.Q_ELEM_SEC_MGR.getLocalPart(), namespaceURI);
                        writer.writeCharacters(getSecurityManagerClass());
+                       writer.writeEndElement();
+                       
+                       //<wsrm:EPRDecorator />
+                       writer.writeStartElement(prefix, 
Sandesha2Constants.Assertions.Q_ELEM_EPR_DECORATOR.getLocalPart(), 
namespaceURI);
+                       writer.writeCharacters(getEPRDecoratorClass());
                        writer.writeEndElement();
                        
                        //<wsrm:ContextManager />

Modified: 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java?rev=573243&r1=573242&r2=573243&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java
 Thu Sep  6 05:34:04 2007
@@ -124,9 +124,11 @@
             }  else if (Sandesha2Constants.Assertions.ELEM_SEC_MGR
                     .equals(name)) {
                 propertyBean.setSecurityManagerClass 
(element.getText().trim());
-            }  else if (Sandesha2Constants.Assertions.ELEM_STORAGE_MGR
+            }
+            else if 
(Sandesha2Constants.Assertions.ELEM_EPR_DECORATOR.equals(name)) {
+               propertyBean.setEPRDecoratorClass(element.getText().trim());
+            } else if (Sandesha2Constants.Assertions.ELEM_STORAGE_MGR
                     .equals(name)) {
-               
                 if (element!=null) {
                     //finding out storage managers.
                        

Modified: 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/PropertyManager.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/PropertyManager.java?rev=573243&r1=573242&r2=573243&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/PropertyManager.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/PropertyManager.java
 Thu Sep  6 05:34:04 2007
@@ -65,6 +65,7 @@
                loadMessageTypesToDrop(msgTypesToDrop, propertyBean);
 
                
propertyBean.setSecurityManagerClass(Sandesha2Constants.Properties.DefaultValues.SecurityManager);
+               
propertyBean.setEPRDecoratorClass(Sandesha2Constants.Properties.DefaultValues.EPRDecorator);
                
propertyBean.setContextManagerClass(Sandesha2Constants.Properties.DefaultValues.ContextManager);
                
propertyBean.setEnableMakeConnection(Sandesha2Constants.Properties.DefaultValues.EnableMakeConnection);
                
propertyBean.setEnableRMAnonURI(Sandesha2Constants.Properties.DefaultValues.EnableRMAnonURI);
@@ -133,6 +134,9 @@
                            
.getProperty(Sandesha2Constants.Properties.SecurityManager);
                        
loadSecurityManagerClass(securityManagerClassStr,propertyBean);
                        
+                       String eprDecoratorParam = 
properties.getProperty(Sandesha2Constants.Properties.EPRDecorator);
+                       loadEPRDecoratorClass(eprDecoratorParam,propertyBean);
+                       
                        String contextManagerClassStr = 
properties.getProperty(Sandesha2Constants.Properties.ContextManager);
                        
loadContextManagerClass(contextManagerClassStr,propertyBean);
 
@@ -206,6 +210,10 @@
                Parameter securityManagerClassParam = 
desc.getParameter(Sandesha2Constants.Properties.SecurityManager);
                String securityManagerClassStr = (String) 
securityManagerClassParam.getValue();
                loadSecurityManagerClass(securityManagerClassStr,propertyBean);
+               
+               Parameter eprDecoratorClassParam = 
desc.getParameter(Sandesha2Constants.Properties.EPRDecorator);
+               String eprDecoratorClassString = (String) 
eprDecoratorClassParam.getValue();
+               loadEPRDecoratorClass(eprDecoratorClassString,propertyBean);
 
                return propertyBean;
        }
@@ -492,6 +500,18 @@
 
        }
 
+       /**
+        * Loads the EPR decorator class name.
+        * 
+        * @param properties
+        */
+       private static void loadEPRDecoratorClass(String eprDecoratorClassStr, 
SandeshaPolicyBean propertyBean) {
+               if (eprDecoratorClassStr != null) {
+                       eprDecoratorClassStr = eprDecoratorClassStr.trim();
+                       propertyBean.setEPRDecoratorClass(eprDecoratorClassStr);
+               }
+       }
+       
        /**
         * Loads the SecurityManager class name.
         * 

Modified: 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RMMsgCreator.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RMMsgCreator.java?rev=573243&r1=573242&r2=573243&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RMMsgCreator.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RMMsgCreator.java
 Thu Sep  6 05:34:04 2007
@@ -208,6 +208,7 @@
 
                if(replyTo != null) {
                        EndpointReference replyToEPR = new 
EndpointReference(replyTo);
+                       replyToEPR = 
SandeshaUtil.getEPRDecorator(createSeqRMMsg.getConfigurationContext()).decorateEndpointReference(replyToEPR);
                        createSeqRMMsg.setReplyTo(replyToEPR);
                }
 

Modified: 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java?rev=573243&r1=573242&r2=573243&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java
 Thu Sep  6 05:34:04 2007
@@ -17,18 +17,14 @@
 
 package org.apache.sandesha2.util;
 
-import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Constructor;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Map;
 
 import javax.xml.namespace.QName;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
 import org.apache.axiom.om.OMElement;
@@ -66,6 +62,7 @@
 import org.apache.sandesha2.RMMsgContext;
 import org.apache.sandesha2.Sandesha2Constants;
 import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.addressing.EPRDecorator;
 import org.apache.sandesha2.client.SandeshaClientConstants;
 import org.apache.sandesha2.context.ContextManager;
 import org.apache.sandesha2.i18n.SandeshaMessageHelper;
@@ -758,6 +755,52 @@
                return util;
        }
 
+       public static EPRDecorator getEPRDecorator(ConfigurationContext 
context) throws SandeshaException {
+               EPRDecorator decorator = null;
+               AxisConfiguration config = context.getAxisConfiguration();
+               Parameter p = 
config.getParameter(Sandesha2Constants.EPR_DECORATOR);
+               if(p != null) decorator = (EPRDecorator) p.getValue();
+               if (decorator != null) return decorator;
+
+               try {
+                       //Currently module policies are used to find the 
decorator impl. These cant be overriden
+                       String decoratorClassStr = 
getDefaultPropertyBean(context.getAxisConfiguration()).getEPRDecoratorClass();
+                       decorator = 
getEPRDecoratorInstance(decoratorClassStr,context);
+                       p = new 
Parameter(Sandesha2Constants.EPR_DECORATOR,decorator);
+                       config.addParameter(p);
+               } catch(AxisFault e) {
+                       String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.cannotInitEPRDecorator, 
e.toString());
+                       throw new SandeshaException(message,e);
+               }
+               return decorator;
+}
+       
+       private static EPRDecorator getEPRDecoratorInstance (String 
className,ConfigurationContext context) throws SandeshaException {
+               try {
+                       ClassLoader classLoader = null;
+                       AxisConfiguration config = 
context.getAxisConfiguration();
+                       Parameter classLoaderParam = 
config.getParameter(Sandesha2Constants.MODULE_CLASS_LOADER);
+                       if(classLoaderParam != null) classLoader = 
(ClassLoader) classLoaderParam.getValue(); 
+                                 if (classLoader==null)
+               throw new SandeshaException 
(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.classLoaderNotFound));
+                   
+                 Class c = classLoader.loadClass(className);
+                       Class configContextClass = context.getClass();
+                       
+                       Constructor constructor = c.getConstructor(new Class[] 
{ configContextClass });
+                       Object obj = constructor.newInstance(new Object[] 
{context});
+                                       if (!(obj instanceof EPRDecorator)) {
+                               String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.eprDecoratorMustImplement, 
className);
+                               throw new SandeshaException(message);
+                       }
+                       return (EPRDecorator) obj;
+                       
+               } catch (Exception e) {
+                       String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.cannotInitEPRDecorator, 
e.toString());
+                       throw new SandeshaException(message,e);
+               }
+       }
+       
        private static SecurityManager getSecurityManagerInstance (String 
className,ConfigurationContext context) throws SandeshaException {
                try {
                        ClassLoader classLoader = null;

Modified: 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/SenderWorker.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/SenderWorker.java?rev=573243&r1=573242&r2=573243&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/SenderWorker.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/workers/SenderWorker.java
 Thu Sep  6 05:34:04 2007
@@ -231,6 +231,15 @@
                                }
                        }
                        
+                       //try to redecorate the EPR if necessary
+                       if (log.isDebugEnabled())
+                               log.debug("Redecorate EPR : " + 
msgCtx.getEnvelope().getHeader());
+                       EndpointReference replyToEPR = msgCtx.getReplyTo();
+                       if(replyToEPR!=null){
+                               replyToEPR = 
SandeshaUtil.getEPRDecorator(msgCtx.getConfigurationContext()).decorateEndpointReference(replyToEPR);
+                               msgCtx.setReplyTo(replyToEPR); 
+                       }
+                       
                        // have to commit the transaction before sending. This 
may
                        // get changed when WS-AT is available.
                        if(transaction != null) {

Modified: 
webservices/sandesha/trunk/java/modules/core/src/main/resources/org/apache/sandesha2/i18n/resource.properties
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/resources/org/apache/sandesha2/i18n/resource.properties?rev=573243&r1=573242&r2=573243&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/resources/org/apache/sandesha2/i18n/resource.properties
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/resources/org/apache/sandesha2/i18n/resource.properties
 Thu Sep  6 05:34:04 2007
@@ -28,6 +28,8 @@
 storageManagerMustImplement=StorageManager {0} must implement the 
org.apache.sandesha2.storage.StorageManager interface.
 cannotInitSecurityManager=Cannot initialize the given security manager due to 
exception {0}.
 securityManagerMustImplement=SecurityManager {0} must implement the 
org.apache.sandesha2.storage.StorageManager interface.
+cannotInitEPRDecorator=Cannot initialize the given epr decorator due to 
exception {0}.
+eprDecoratorMustImplement=EPRDecorator {0} must implement the 
org.apache.sandesha2.addressing.EPRDecorator interface.
 cannotInitContextManager=Cannot initialize the given context manager due to 
exception {0}.
 contextManagerMustImplement=ContextManager {0} must implement the 
org.apache.sandesha2.context.ContextManager interface.
 cannotFindModulePolicies=No policies were found in the module.xml at the 
module initiation time.

Modified: webservices/sandesha/trunk/java/modules/mar/module.xml
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/mar/module.xml?rev=573243&r1=573242&r2=573243&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/mar/module.xml (original)
+++ webservices/sandesha/trunk/java/modules/mar/module.xml Thu Sep  6 05:34:04 
2007
@@ -135,6 +135,7 @@
              <!-- This will not be overriden by service level policies -->
                                
<sandesha2:SecurityManager>org.apache.sandesha2.security.dummy.DummySecurityManager</sandesha2:SecurityManager>
                                
<sandesha2:ContextManager>org.apache.sandesha2.context.DummyContextManager</sandesha2:ContextManager>
+                               
<sandesha2:EPRDecorator>org.apache.sandesha2.addressing.EPRDecoratorImpl</sandesha2:EPRDecorator>
                                
                                <sandesha2:MakeConnection>
                                  <sandesha2:Enabled>true</sandesha2:Enabled>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to