You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by ch...@apache.org on 2007/02/04 18:47:19 UTC

svn commit: r503447 - in /webservices/sandesha/trunk/java: config/ samples/conf/userguide/ src/org/apache/sandesha2/ src/org/apache/sandesha2/i18n/ src/org/apache/sandesha2/policy/ src/org/apache/sandesha2/policy/builders/ src/org/apache/sandesha2/util...

Author: chamikara
Date: Sun Feb  4 09:47:18 2007
New Revision: 503447

URL: http://svn.apache.org/viewvc?view=rev&rev=503447
Log:
A new policy to enforce RM at the server side.
Corrected the policy handling logic to load service/operation level policies.
Removed some commented code.

Modified:
    webservices/sandesha/trunk/java/config/module.xml
    webservices/sandesha/trunk/java/samples/conf/userguide/services.xml
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/MessageValidator.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/SandeshaModule.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/SandeshaPolicyBean.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/PropertyManager.java
    webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/PropertyLoaderTest.java

Modified: webservices/sandesha/trunk/java/config/module.xml
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/config/module.xml?view=diff&rev=503447&r1=503446&r2=503447
==============================================================================
--- webservices/sandesha/trunk/java/config/module.xml (original)
+++ webservices/sandesha/trunk/java/config/module.xml Sun Feb  4 09:47:18 2007
@@ -117,6 +117,8 @@
 				</sandesha2:MakeConnection>
 				
 				<!-- <sandesha2:UseMessageSerialization>true</sandesha2:UseMessageSerialization> -->
+				
+				<sandesha2:EnforceRM>false</sandesha2:EnforceRM>
 			</wsp:Policy>
 		</sandesha2:RMAssertion>
 	</wsp:Policy>

Modified: webservices/sandesha/trunk/java/samples/conf/userguide/services.xml
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/samples/conf/userguide/services.xml?view=diff&rev=503447&r1=503446&r2=503447
==============================================================================
--- webservices/sandesha/trunk/java/samples/conf/userguide/services.xml (original)
+++ webservices/sandesha/trunk/java/samples/conf/userguide/services.xml Sun Feb  4 09:47:18 2007
@@ -23,17 +23,23 @@
         <actionMapping>urn:wsrm:EchoString</actionMapping>
         <outputActionMapping>urn:wsrm:EchoStringResponse</outputActionMapping>
     </operation>
-       
-<!--    <supported-policy-namespaces namespaces="http://ws.apache.org/sandesha2/policy" />-->
-
-<!--	<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
-		xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
-	    xmlns:wsrm="http://ws.apache.org/sandesha2/policy" wsu:Id="RMPolicy">
-	        
-	    <!-#- Following policy value has been overrided from the default values.-#->> 
-	    <wsrm:AcknowledgementInterval>3500</wsrm:AcknowledgementInterval>
-	   
-	</wsp:Policy>-->
+       
+   <!--     
+   <supported-policy-namespaces namespaces="http://ws.apache.org/sandesha2/policy" />
+
+	<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
+			xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
+			xmlns:sandesha2="http://ws.apache.org/sandesha2/policy" wsu:Id="RMPolicy">
+			
+		<sandesha2:RMAssertion>
+			<wsp:Policy>
+				<sandesha2:AcknowledgementInterval>4000</sandesha2:AcknowledgementInterval>
+				<sandesha2:EnforceRM>true</sandesha2:EnforceRM>
+			</wsp:Policy>
+		</sandesha2:RMAssertion>
+		
+	</wsp:Policy>
+	 -->
     
     
 </service>

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/MessageValidator.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/MessageValidator.java?view=diff&rev=503447&r1=503446&r2=503447
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/MessageValidator.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/MessageValidator.java Sun Feb  4 09:47:18 2007
@@ -19,6 +19,7 @@
 
 import org.apache.sandesha2.i18n.SandeshaMessageHelper;
 import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+import org.apache.sandesha2.policy.SandeshaPolicyBean;
 import org.apache.sandesha2.storage.StorageManager;
 import org.apache.sandesha2.storage.beans.RMDBean;
 import org.apache.sandesha2.storage.beans.RMSBean;
@@ -31,21 +32,24 @@
  */
 public class MessageValidator {
 
-	public static void validateMessage(RMMsgContext rmMsg, StorageManager storageManager) throws SandeshaException {
+	public static void validateMessage(RMMsgContext rmMsg,
+			StorageManager storageManager) throws SandeshaException {
 
-		if (rmMsg.getMessageType() != Sandesha2Constants.MessageTypes.CREATE_SEQ
-				&& rmMsg.getMessageType() != Sandesha2Constants.MessageTypes.UNKNOWN) {
+		int type = rmMsg.getMessageType();
+		if (type != Sandesha2Constants.MessageTypes.CREATE_SEQ	&& type != Sandesha2Constants.MessageTypes.UNKNOWN) {
 
 			String sequenceID = SandeshaUtil.getSequenceIDFromRMMessage(rmMsg);
 
 			if (sequenceID != null) {
 				String rmVersionOfSequence = null;
-				
-				RMSBean rmsBean = SandeshaUtil.getRMSBeanFromSequenceId(storageManager, sequenceID);
+
+				RMSBean rmsBean = SandeshaUtil.getRMSBeanFromSequenceId(
+						storageManager, sequenceID);
 				if (rmsBean != null)
 					rmVersionOfSequence = rmsBean.getRMVersion();
 				else {
-					RMDBean rmdBean = SandeshaUtil.getRMDBeanFromSequenceId(storageManager, sequenceID);
+					RMDBean rmdBean = SandeshaUtil.getRMDBeanFromSequenceId(
+							storageManager, sequenceID);
 					if (rmdBean != null)
 						rmVersionOfSequence = rmdBean.getRMVersion();
 				}
@@ -53,16 +57,38 @@
 				String rmNamespaceOfMsg = rmMsg.getRMNamespaceValue();
 				String rmNamespaceOfSequence = null;
 				if (rmVersionOfSequence != null)
-					rmNamespaceOfSequence = SpecSpecificConstants.getRMNamespaceValue(rmVersionOfSequence);
+					rmNamespaceOfSequence = SpecSpecificConstants
+							.getRMNamespaceValue(rmVersionOfSequence);
 
-				if (rmNamespaceOfSequence != null && !rmNamespaceOfSequence.equals(rmNamespaceOfMsg)) {
-					String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.rmNamespaceNotMatchSequence,
-							rmNamespaceOfMsg, rmNamespaceOfSequence, sequenceID);
+				if (rmNamespaceOfSequence != null
+						&& !rmNamespaceOfSequence.equals(rmNamespaceOfMsg)) {
+					String message = SandeshaMessageHelper
+							.getMessage(
+									SandeshaMessageKeys.rmNamespaceNotMatchSequence,
+									rmNamespaceOfMsg, rmNamespaceOfSequence,
+									sequenceID);
 					throw new SandeshaException(message);
 				}
 
-				// TODO do validation based on states
+			}
+		} else if (type == Sandesha2Constants.MessageTypes.UNKNOWN) {
+
+			// checking if policies hv been set to enforceRM.
+			// If this is set and this message is not an RM message, validation
+			// will fail here.
+
+			SandeshaPolicyBean propertyBean = SandeshaUtil
+					.getPropertyBean(rmMsg.getMessageContext()
+							.getAxisOperation());
+			if (propertyBean.isEnforceRM()) {
+				String message = SandeshaMessageHelper.getMessage(
+						SandeshaMessageKeys.rmEnforceFailure, rmMsg
+								.getMessageId());
+				throw new SandeshaException(message);
 			}
 		}
+
+		// TODO do validation based on states
+		
 	}
 }

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java?view=diff&rev=503447&r1=503446&r2=503447
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java Sun Feb  4 09:47:18 2007
@@ -390,6 +390,8 @@
 			boolean EnableRMAnonURI = true;
 			
 			boolean UseMessageSerialization = false;
+			
+			boolean enforceRM = false;
 		}
 	}
 	
@@ -533,6 +535,7 @@
         public static final String ELEM_ENABLED = "Enabled";
         public static final String ELEM_USE_RM_ANON_URI = "UseRMAnonURI";
         public static final String ELEM_USE_SERIALIZATION = "UseMessageSerialization";
+        public static final String ELEM_ENFORCE_RM = "EnforceRM";
         
         public static final QName Q_ELEM_POLICY = new QName(URI_POLICY_NS, ELEM_POLICY, ATTR_WSP);
         public static final QName Q_ELEM_RMASSERTION = new QName(URI_RM_POLICY_NS, ELEM_RMASSERTION, ATTR_WSRM);
@@ -553,5 +556,7 @@
         public static final QName Q_ELEM_ENABLED = new QName(URI_RM_POLICY_NS, ELEM_ENABLED, ATTR_WSRM);
         public static final QName Q_ELEM_USE_RM_ANON_URI = new QName(URI_RM_POLICY_NS, ELEM_USE_RM_ANON_URI, ATTR_WSRM);
         public static final QName Q_ELEM_USE_SERIALIZATION = new QName(URI_RM_POLICY_NS, ELEM_USE_SERIALIZATION, ATTR_WSRM);
+        public static final QName Q_ELEM_ENFORCE_RM = new QName(URI_RM_POLICY_NS, ELEM_ENFORCE_RM, ATTR_WSRM);
+        
     }
 }

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/SandeshaModule.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/SandeshaModule.java?view=diff&rev=503447&r1=503446&r2=503447
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/SandeshaModule.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/SandeshaModule.java Sun Feb  4 09:47:18 2007
@@ -135,7 +135,7 @@
 	public void engageNotify(AxisDescription axisDescription) throws AxisFault {
 		if(log.isDebugEnabled()) log.debug("Entry: SandeshaModule::engageNotify, " + axisDescription);
 		
-		SandeshaPolicyBean parentPropertyBean = SandeshaUtil.getPropertyBean(axisDescription);
+		SandeshaPolicyBean parentPropertyBean = SandeshaUtil.getPropertyBean(axisDescription.getParent());
 		if (parentPropertyBean==null) 
 			throw new AxisFault (SandeshaMessageHelper.getMessage(
 					SandeshaMessageKeys.defaultPropertyBeanNotSet));

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java?view=diff&rev=503447&r1=503446&r2=503447
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java Sun Feb  4 09:47:18 2007
@@ -298,5 +298,6 @@
 	public final static String cloneDoesNotMatchToOriginal = "cloneDoesNotMatchToOriginal";
 	public final static String exceptionInFlowCompletion = "exceptionInFlowCompletion";
 	public final static String rmdBeanNotFound = "rmdBeanNotFound";
-
+	public final static String rmEnforceFailure = "rmEnforceFailure";
+	public final static String policyHasNotBeenSet = "policyHasNotBeenSet";
 }

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties?view=diff&rev=503447&r1=503446&r2=503447
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties Sun Feb  4 09:47:18 2007
@@ -100,6 +100,9 @@
 cloneDoesNotMatchToOriginal=The elements of the original and cloned SOAP Envelopes do not match
 exceptionInFlowCompletion=Got exception in flowCompletion of SandeshaInHandler
 rmdBeanNotFound=RMDBean not available for the sequence:{0}
+policyHasNotBeenSet="WSRM Policy ''{0}'' has not been set for this endpoint
+rmEnforceFailure=The message with MessageID ''{0}'' is not WSRM enabled but the service enforces WSRM
+
 #-------------------------------------
 #
 #	Protocol Oriented Messages
@@ -305,4 +308,4 @@
 
 createSequenceRefused=The Create Sequence request has been refused by the RM Destination
 referencedMessageNotFound = Reference message is not present for the sequence with property key {0}
-messageNumberRollover=The maximum value for wsrm:MessageNumber has been exceeded.
+messageNumberRollover=The maximum value for wsrm:MessageNumber has been exceeded.
\ No newline at end of file

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/SandeshaPolicyBean.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/SandeshaPolicyBean.java?view=diff&rev=503447&r1=503446&r2=503447
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/SandeshaPolicyBean.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/SandeshaPolicyBean.java Sun Feb  4 09:47:18 2007
@@ -27,6 +27,9 @@
 import org.apache.neethi.Constants;
 import org.apache.neethi.PolicyComponent;
 import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.i18n.SandeshaMessageHelper;
+import org.apache.sandesha2.i18n.SandeshaMessageKeys;
 
 /**
  * Used to hold peoperties loaded from sandesha2.properties file or
@@ -35,9 +38,12 @@
 
 public class SandeshaPolicyBean implements Assertion {
 
+	private SandeshaPolicyBean parent = null;
+	
     // String storageManagerClass = null;
     boolean inOrder = true;
-
+    private boolean inOrderSet = false;
+    
     ArrayList msgTypesToDrop = null;
 
     private String inMemoryStorageManagerClass = null;
@@ -47,26 +53,38 @@
     private String securityManagerClass = null;
 
     private long inactiveTimeoutValue;
-
+    private boolean inactiveTimeoutValueSet = false;
+    
     private String inactivityTimeoutMeasure;
 
     private long inactivityTimeoutInterval = -1;
-
+    private boolean inactivityTimeoutIntervalSet = false;
+    
     private long acknowledgementInterval;
-
+    private boolean acknowledgementIntervalSet = false;
+    
     private long retransmissionInterval;
-
+    private boolean retransmissionIntervalSet = false;
+    
     private boolean exponentialBackoff;
-
+    private boolean exponentialBackoffSet = false;
+    
     private int maximumRetransmissionCount;
+    private boolean maximumRetransmissionCountSet = false;
     
     private boolean enableMakeConnection;
+    private boolean enableMakeConnectionSet = false;
     
     private boolean enableRMAnonURI;
+    private boolean enableRMAnonURISet = false;
     
     private boolean useMessageSerialization;
-
-    public void setInactiveTimeoutInterval(long value, String measure) {
+    private boolean useMessageSerializationSet = false;
+    
+    private boolean enforceRM;
+    private boolean enforceRMSet = false;
+    
+	public void setInactiveTimeoutInterval(long value, String measure) {
         long timeOut = -1;
 
         if (measure == null) {
@@ -87,6 +105,7 @@
 
     public void setAcknowledgementInterval(long acknowledgementInterval) {
         this.acknowledgementInterval = acknowledgementInterval;
+        setAcknowledgementIntervalSet(true);
     }
 
     public String getInMemoryStorageManagerClass() {
@@ -113,6 +132,7 @@
 
     public void setInOrder(boolean inOrder) {
         this.inOrder = inOrder;
+        setInOrderSet(true);
     }
 
     public ArrayList getMsgTypesToDrop() {
@@ -133,12 +153,22 @@
         }
     }
 
-    public int getMaximumRetransmissionCount() {
-        return maximumRetransmissionCount;
+    public int getMaximumRetransmissionCount() throws SandeshaException {
+    	
+    	if (isMaximumRetransmissionCountSet()) {
+    		return maximumRetransmissionCount;
+    	} else if (parent!=null) {
+    		return parent.getMaximumRetransmissionCount();
+    	} else {
+    		String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.policyHasNotBeenSet, Sandesha2Constants.Assertions.ELEM_MAX_RETRANS_COUNT);
+    		throw new SandeshaException (message);
+    	}
+    	
     }
 
     public void setMaximumRetransmissionCount(int maximumRetransmissionCount) {
         this.maximumRetransmissionCount = maximumRetransmissionCount;
+        setMaximumRetransmissionCountSet(true);
     }
 
     public String getSecurityManagerClass() {
@@ -162,126 +192,133 @@
     }
 
     public void serialize(XMLStreamWriter writer) throws XMLStreamException {
-        String localName = Sandesha2Constants.Assertions.Q_ELEM_RMASSERTION
-                .getLocalPart();
-        String namespaceURI = Sandesha2Constants.Assertions.Q_ELEM_RMASSERTION
-                .getNamespaceURI();
-
-        String prefix = writer.getPrefix(namespaceURI);
-        if (prefix == null) {
-            prefix = Sandesha2Constants.Assertions.Q_ELEM_RMASSERTION
-                    .getPrefix();
-            writer.setPrefix(prefix, namespaceURI);
-        }
-
-        // <wsrm:RMAssertion>
-        writer.writeStartElement(prefix, localName, namespaceURI);
-        // xmlns:wsrm=".."
-        writer.writeNamespace(prefix, namespaceURI);
-
-        String policyLocalName = Sandesha2Constants.Assertions.Q_ELEM_POLICY
-                .getLocalPart();
-        String policyNamespaceURI = Sandesha2Constants.Assertions.Q_ELEM_POLICY
-                .getNamespaceURI();
-        String wspPrefix = writer.getPrefix(policyNamespaceURI);
-
-        if (wspPrefix == null) {
-            wspPrefix = Sandesha2Constants.Assertions.Q_ELEM_POLICY.getPrefix();
-            writer.writeNamespace(wspPrefix, policyNamespaceURI);
-        }
-
-        // <wsp:Policy>
-        writer
-                .writeStartElement(wspPrefix, policyLocalName,
-                        policyNamespaceURI);
-
-        // <wsrm:AcknowledgementInterval />
-        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_ACK_INTERVAL.getLocalPart(), namespaceURI);
-        writer.writeCharacters(Long.toString(getAcknowledgementInterval()));
-        writer.writeEndElement();
-        
-        // <wsrm:RetransmissionInterval />
-        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_RETRANS_INTERVAL.getLocalPart(), namespaceURI);
-        writer.writeCharacters(Long.toString(getRetransmissionInterval()));
-        writer.writeEndElement();
-
-        // <wsrm:MaximumRetransmissionCount />
-        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_MAX_RETRANS_COUNT.getLocalPart(), namespaceURI);
-        writer.writeCharacters(Long.toString(getMaximumRetransmissionCount()));
-        writer.writeEndElement();
-        
-        // <wsrm:ExponentialBackoff />
-        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_EXP_BACKOFF.getLocalPart(), namespaceURI);
-        writer.writeCharacters(Boolean.toString(isExponentialBackoff()));
-        writer.writeEndElement();
-        
-        // <wsrm:InactivityTimeout />
-        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_INACTIVITY_TIMEOUT.getLocalPart(), namespaceURI);
-        writer.writeCharacters(Long.toString(getInactivityTimeoutInterval()));
-        writer.writeEndElement();
-        
-        // <wsrm:InactivityTimeoutMeasure />
-        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_INACTIVITY_TIMEOUT_MEASURES.getLocalPart(), namespaceURI);
-        writer.writeCharacters(inactivityTimeoutMeasure);
-        writer.writeEndElement();
-        
-        // <wsrm:InvokeInOrder />
-        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_INVOKE_INORDER.getLocalPart(), namespaceURI);
-        writer.writeCharacters(Boolean.toString(isInOrder()));
-        writer.writeEndElement();
-        
-        // <wsrm:MessageTypesToDrop />
-        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_MSG_TYPES_TO_DROP.getLocalPart(), namespaceURI);
-        writer.writeCharacters("none"); // FIXME
-        writer.writeEndElement();
-        
-        // <wsrm:StorageManagers>
-        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_STORAGE_MGR.getLocalPart(), namespaceURI);
-        
-        // <wsrm:InMemoryStorageManager />
-        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_INMEMORY_STORAGE_MGR.getLocalPart(), namespaceURI);
-        writer.writeCharacters(getInMemoryStorageManagerClass());
-        writer.writeEndElement();
-        
-        // <wsrm:PermanentStorageManager />
-        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_PERMANENT_STORAGE_MGR.getLocalPart(), namespaceURI);
-        writer.writeCharacters(getPermanentStorageManagerClass());
-        writer.writeEndElement();        
-        
-        // </wsrm:StorageManager>
-        writer.writeEndElement();
-        
-        // <wsrm:SecurityManager />
-        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_SEC_MGR.getLocalPart(), namespaceURI);
-        writer.writeCharacters(getSecurityManagerClass());
-        writer.writeEndElement();
-        
-        // <wsrm:MakeConnection>
-        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_MAKE_CONNECTION.getLocalPart(), namespaceURI);
-        
-        // <wsrm:Enabled />
-        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_ENABLED.getLocalPart(), namespaceURI);
-        writer.writeCharacters(Boolean.toString(isEnableMakeConnection()));
-        writer.writeEndElement();
-        
-        // <wsrm:UseRMAnonURI />
-        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_USE_RM_ANON_URI.getLocalPart(), namespaceURI);
-        writer.writeCharacters(Boolean.toString(isEnableRMAnonURI()));
-        writer.writeEndElement();
-        
-        // </wsrm:MakeConnection>
-        writer.writeEndElement();
-        
-        // <wsrm:UseMessageSerialization />
-        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_USE_SERIALIZATION.getLocalPart(), namespaceURI);
-        writer.writeCharacters(Boolean.toString(isUseMessageSerialization()));
-        writer.writeEndElement();
-
-        // </wsp:Policy>
-        writer.writeEndElement();
-
-        // </wsrm:RMAssertion>
-        writer.writeEndElement();
+        try {
+			String localName = Sandesha2Constants.Assertions.Q_ELEM_RMASSERTION
+			        .getLocalPart();
+			String namespaceURI = Sandesha2Constants.Assertions.Q_ELEM_RMASSERTION
+			        .getNamespaceURI();
+
+			String prefix = writer.getPrefix(namespaceURI);
+			if (prefix == null) {
+			    prefix = Sandesha2Constants.Assertions.Q_ELEM_RMASSERTION
+			            .getPrefix();
+			    writer.setPrefix(prefix, namespaceURI);
+			}
+
+			// <wsrm:RMAssertion>
+			writer.writeStartElement(prefix, localName, namespaceURI);
+			// xmlns:wsrm=".."
+			writer.writeNamespace(prefix, namespaceURI);
+
+			String policyLocalName = Sandesha2Constants.Assertions.Q_ELEM_POLICY
+			        .getLocalPart();
+			String policyNamespaceURI = Sandesha2Constants.Assertions.Q_ELEM_POLICY
+			        .getNamespaceURI();
+			String wspPrefix = writer.getPrefix(policyNamespaceURI);
+
+			if (wspPrefix == null) {
+			    wspPrefix = Sandesha2Constants.Assertions.Q_ELEM_POLICY.getPrefix();
+			    writer.writeNamespace(wspPrefix, policyNamespaceURI);
+			}
+
+			// <wsp:Policy>
+			writer.writeStartElement(wspPrefix, policyLocalName, policyNamespaceURI);
+
+			// <wsrm:AcknowledgementInterval />
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_ACK_INTERVAL.getLocalPart(), namespaceURI);
+			writer.writeCharacters(Long.toString(getAcknowledgementInterval()));
+			writer.writeEndElement();
+			
+			// <wsrm:RetransmissionInterval />
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_RETRANS_INTERVAL.getLocalPart(), namespaceURI);
+			writer.writeCharacters(Long.toString(getRetransmissionInterval()));
+			writer.writeEndElement();
+
+			// <wsrm:MaximumRetransmissionCount />
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_MAX_RETRANS_COUNT.getLocalPart(), namespaceURI);
+			writer.writeCharacters(Long.toString(getMaximumRetransmissionCount()));
+			writer.writeEndElement();
+			
+			// <wsrm:ExponentialBackoff />
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_EXP_BACKOFF.getLocalPart(), namespaceURI);
+			writer.writeCharacters(Boolean.toString(isExponentialBackoff()));
+			writer.writeEndElement();
+			
+			// <wsrm:InactivityTimeout />
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_INACTIVITY_TIMEOUT.getLocalPart(), namespaceURI);
+			writer.writeCharacters(Long.toString(getInactivityTimeoutInterval()));
+			writer.writeEndElement();
+			
+			// <wsrm:InactivityTimeoutMeasure />
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_INACTIVITY_TIMEOUT_MEASURES.getLocalPart(), namespaceURI);
+			writer.writeCharacters(inactivityTimeoutMeasure);
+			writer.writeEndElement();
+			
+			// <wsrm:InvokeInOrder />
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_INVOKE_INORDER.getLocalPart(), namespaceURI);
+			writer.writeCharacters(Boolean.toString(isInOrder()));
+			writer.writeEndElement();
+			
+			// <wsrm:MessageTypesToDrop />
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_MSG_TYPES_TO_DROP.getLocalPart(), namespaceURI);
+			writer.writeCharacters("none"); // FIXME
+			writer.writeEndElement();
+			
+			// <wsrm:StorageManagers>
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_STORAGE_MGR.getLocalPart(), namespaceURI);
+			
+			// <wsrm:InMemoryStorageManager />
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_INMEMORY_STORAGE_MGR.getLocalPart(), namespaceURI);
+			writer.writeCharacters(getInMemoryStorageManagerClass());
+			writer.writeEndElement();
+			
+			// <wsrm:PermanentStorageManager />
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_PERMANENT_STORAGE_MGR.getLocalPart(), namespaceURI);
+			writer.writeCharacters(getPermanentStorageManagerClass());
+			writer.writeEndElement();        
+			
+			// </wsrm:StorageManager>
+			writer.writeEndElement();
+			
+			// <wsrm:SecurityManager />
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_SEC_MGR.getLocalPart(), namespaceURI);
+			writer.writeCharacters(getSecurityManagerClass());
+			writer.writeEndElement();
+			
+			// <wsrm:MakeConnection>
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_MAKE_CONNECTION.getLocalPart(), namespaceURI);
+			
+			// <wsrm:Enabled />
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_ENABLED.getLocalPart(), namespaceURI);
+			writer.writeCharacters(Boolean.toString(isEnableMakeConnection()));
+			writer.writeEndElement();
+			
+			// <wsrm:UseRMAnonURI />
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_USE_RM_ANON_URI.getLocalPart(), namespaceURI);
+			writer.writeCharacters(Boolean.toString(isEnableRMAnonURI()));
+			writer.writeEndElement();
+			
+			// </wsrm:MakeConnection>
+			writer.writeEndElement();
+			
+			// <wsrm:UseMessageSerialization />
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_USE_SERIALIZATION.getLocalPart(), namespaceURI);
+			writer.writeCharacters(Boolean.toString(isUseMessageSerialization()));
+			writer.writeEndElement();
+
+			// <wsrm:EnforceRM />
+			writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_ENFORCE_RM.getLocalPart(), namespaceURI);
+			writer.writeCharacters(Boolean.toString(isEnforceRM()));
+			writer.writeEndElement();
+			
+			// </wsp:Policy>
+			writer.writeEndElement();
+
+			// </wsrm:RMAssertion>
+			writer.writeEndElement();
+		} catch (SandeshaException e) {
+			throw new XMLStreamException (e);
+		}
 
     }
 
@@ -289,24 +326,47 @@
         return Constants.TYPE_ASSERTION;
     }
 
-    public boolean isExponentialBackoff() {
-        return exponentialBackoff;
+    public boolean isExponentialBackoff() throws SandeshaException {
+    	if (isExponentialBackoffSet()) {
+    		return exponentialBackoff;
+    	} else if (parent!=null) {
+    		return parent.isExponentialBackoff ();
+    	} else {
+    		String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.policyHasNotBeenSet, Sandesha2Constants.Assertions.ELEM_EXP_BACKOFF);
+    		throw new SandeshaException (message);
+    	}
     }
 
     public void setExponentialBackoff(boolean exponentialBackoff) {
         this.exponentialBackoff = exponentialBackoff;
+        setExponentialBackoffSet(true);
     }
 
-    public long getRetransmissionInterval() {
-        return retransmissionInterval;
+    public long getRetransmissionInterval() throws SandeshaException {
+    	if (isRetransmissionIntervalSet()) {
+    		return retransmissionInterval;
+    	} else if (parent!=null) {
+    		return parent.getRetransmissionInterval();
+    	} else {
+    		String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.policyHasNotBeenSet, Sandesha2Constants.Assertions.ELEM_RETRANS_INTERVAL);
+    		throw new SandeshaException (message);
+    	}
     }
 
     public void setRetransmissionInterval(long retransmissionInterval) {
         this.retransmissionInterval = retransmissionInterval;
+        setRetransmissionIntervalSet(true);
     }
 
-    public long getAcknowledgementInterval() {
-        return acknowledgementInterval;
+    public long getAcknowledgementInterval() throws SandeshaException {
+    	if (isAcknowledgementIntervalSet()) {
+    		return acknowledgementInterval;
+    	} else if (parent!=null) {
+    		return parent.getAcknowledgementInterval();
+    	} else {
+    		String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.policyHasNotBeenSet, Sandesha2Constants.Assertions.ELEM_ACK_INTERVAL);
+    		throw new SandeshaException (message);
+    	}
     }
 
     public long getInactivityTimeoutInterval() {
@@ -319,6 +379,7 @@
 
     public void setInactiveTimeoutValue(long inactiveTimeoutValue) {
         this.inactiveTimeoutValue = inactiveTimeoutValue;
+        setInactiveTimeoutValueSet(true);
     }
 
     public void setInactivityTimeoutMeasure(String inactivityTimeoutMeasure) {
@@ -331,6 +392,7 @@
 
 	public void setEnableMakeConnection(boolean enableMakeConnection) {
 		this.enableMakeConnection = enableMakeConnection;
+		setEnableMakeConnectionSet(true);
 	}
 
 	public boolean isEnableRMAnonURI() {
@@ -339,14 +401,23 @@
 
 	public void setEnableRMAnonURI(boolean enableRMAnonURI) {
 		this.enableRMAnonURI = enableRMAnonURI;
+		setEnableRMAnonURISet(true);
 	}
 
-	public boolean isUseMessageSerialization() {
-		return useMessageSerialization;
+	public boolean isUseMessageSerialization() throws SandeshaException {
+    	if (isUseMessageSerializationSet ()) {
+    		return useMessageSerialization;
+    	} else if (parent!=null) {
+    		return parent.isUseMessageSerialization();
+    	} else {
+    		String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.policyHasNotBeenSet, Sandesha2Constants.Assertions.ELEM_USE_SERIALIZATION);
+    		throw new SandeshaException (message);
+    	}
 	}
 
 	public void setUseMessageSerialization(boolean useMessageSerialization) {
 		this.useMessageSerialization = useMessageSerialization;
+		setUseMessageSerializationSet(true);
 	}    
 
 	public boolean equal(PolicyComponent policyComponent) {
@@ -354,4 +425,118 @@
         return false;
     }
 
+    public boolean isEnforceRM() throws SandeshaException {
+    	if (isEnforceRMSet ()) {
+    		return enforceRM;
+    	} else if (parent!=null) {
+    		return parent.isEnforceRM();
+    	} else {
+    		String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.policyHasNotBeenSet, Sandesha2Constants.Assertions.ELEM_ENFORCE_RM);
+    		throw new SandeshaException (message);
+    	}
+	}
+
+	public void setEnforceRM(boolean enforceRM) {
+		this.enforceRM = enforceRM;
+		setEnforceRMSet(true);
+	}
+
+	protected boolean isAcknowledgementIntervalSet() {
+		return acknowledgementIntervalSet;
+	}
+
+	protected void setAcknowledgementIntervalSet(boolean acknowledgementIntervalSet) {
+		this.acknowledgementIntervalSet = acknowledgementIntervalSet;
+	}
+
+	protected boolean isEnableMakeConnectionSet() {
+		return enableMakeConnectionSet;
+	}
+
+	protected void setEnableMakeConnectionSet(boolean enableMakeConnectionSet) {
+		this.enableMakeConnectionSet = enableMakeConnectionSet;
+	}
+
+	protected boolean isEnableRMAnonURISet() {
+		return enableRMAnonURISet;
+	}
+
+	protected void setEnableRMAnonURISet(boolean enableRMAnonURISet) {
+		this.enableRMAnonURISet = enableRMAnonURISet;
+	}
+
+	protected boolean isEnforceRMSet() {
+		return enforceRMSet;
+	}
+
+	protected void setEnforceRMSet(boolean enforceRMSet) {
+		this.enforceRMSet = enforceRMSet;
+	}
+
+	protected boolean isExponentialBackoffSet() {
+		return exponentialBackoffSet;
+	}
+
+	protected void setExponentialBackoffSet(boolean exponentialBackoffSet) {
+		this.exponentialBackoffSet = exponentialBackoffSet;
+	}
+
+	protected boolean isInactiveTimeoutValueSet() {
+		return inactiveTimeoutValueSet;
+	}
+
+	protected void setInactiveTimeoutValueSet(boolean inactiveTimeoutValueSet) {
+		this.inactiveTimeoutValueSet = inactiveTimeoutValueSet;
+	}
+
+	protected boolean isInactivityTimeoutIntervalSet() {
+		return inactivityTimeoutIntervalSet;
+	}
+
+	protected void setInactivityTimeoutIntervalSet(
+			boolean inactivityTimeoutIntervalSet) {
+		this.inactivityTimeoutIntervalSet = inactivityTimeoutIntervalSet;
+	}
+
+	protected boolean isInOrderSet() {
+		return inOrderSet;
+	}
+
+	protected void setInOrderSet(boolean inOrderSet) {
+		this.inOrderSet = inOrderSet;
+	}
+
+	protected boolean isMaximumRetransmissionCountSet() {
+		return maximumRetransmissionCountSet;
+	}
+
+	protected void setMaximumRetransmissionCountSet(
+			boolean maximumRetransmissionCountSet) {
+		this.maximumRetransmissionCountSet = maximumRetransmissionCountSet;
+	}
+
+	protected boolean isRetransmissionIntervalSet() {
+		return retransmissionIntervalSet;
+	}
+
+	protected void setRetransmissionIntervalSet(boolean retransmissionIntervalSet) {
+		this.retransmissionIntervalSet = retransmissionIntervalSet;
+	}
+
+	protected boolean isUseMessageSerializationSet() {
+		return useMessageSerializationSet;
+	}
+
+	protected void setUseMessageSerializationSet(boolean useMessageSerializationSet) {
+		this.useMessageSerializationSet = useMessageSerializationSet;
+	}
+
+	public SandeshaPolicyBean getParent() {
+		return parent;
+	}
+
+	public void setParent(SandeshaPolicyBean parent) {
+		this.parent = parent;
+	}
+	
 }

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java?view=diff&rev=503447&r1=503446&r2=503447
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java Sun Feb  4 09:47:18 2007
@@ -151,6 +151,9 @@
             } else if (Sandesha2Constants.Assertions.ELEM_USE_SERIALIZATION.equals(name)) {
             	String value = element.getText().trim();
             	propertyBean.setUseMessageSerialization(Boolean.valueOf(value).booleanValue());
+            } else if (Sandesha2Constants.Assertions.ELEM_ENFORCE_RM.equals(name)) {
+            	String value = element.getText().trim();
+            	propertyBean.setEnforceRM (Boolean.valueOf(value).booleanValue());
             }
         }
     }

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java?view=diff&rev=503447&r1=503446&r2=503447
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java Sun Feb  4 09:47:18 2007
@@ -104,7 +104,7 @@
 	 * @param policyBean
 	 * @return
 	 */
-	private static SenderBean adjustNextRetransmissionTime(SenderBean retransmitterBean, SandeshaPolicyBean propertyBean) {
+	private static SenderBean adjustNextRetransmissionTime(SenderBean retransmitterBean, SandeshaPolicyBean propertyBean) throws SandeshaException {
 
 		// long lastSentTime = retransmitterBean.getTimeToSend();
 

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/PropertyManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/PropertyManager.java?view=diff&rev=503447&r1=503446&r2=503447
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/PropertyManager.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/PropertyManager.java Sun Feb  4 09:47:18 2007
@@ -67,6 +67,8 @@
 		propertyBean.setEnableMakeConnection(Sandesha2Constants.Properties.DefaultValues.EnableMakeConnection);
 		propertyBean.setEnableRMAnonURI(Sandesha2Constants.Properties.DefaultValues.EnableRMAnonURI);
 		propertyBean.setUseMessageSerialization(Sandesha2Constants.Properties.DefaultValues.UseMessageSerialization);
+		propertyBean.setEnforceRM(Sandesha2Constants.Properties.DefaultValues.enforceRM);
+		
 		return propertyBean;
 	}
 
@@ -227,69 +229,7 @@
         }
         
         propertyBean = (SandeshaPolicyBean) assertion;
-        
-//		RMPolicyProcessor processor = new RMPolicyProcessor();
-//
-//		try {
-//			processor.setup();
-//		} catch (NoSuchMethodException e) {
-//			throw new SandeshaException(e);
-//		}
-//
-//		processor.processPolicy(policy);
-//
-//		RMProcessorContext ctx = processor.getContext();
-//		PolicyEngineData data = ctx.readCurrentPolicyEngineData();
-//
-//		if (data.isAcknowledgementIntervalSet())
-//			propertyBean.setAcknowledgementInterval(data.getAcknowledgementInterval());
-//		else
-//			propertyBean.setAcknowledgementInterval(parentPropertyBean.getAcknowledgementInterval());
-//
-//		if (data.isExponentialBackoffSet())
-//			propertyBean.setExponentialBackoff(data.isExponentialBackoff());
-//		else
-//			propertyBean.setExponentialBackoff(parentPropertyBean.isExponentialBackoff());
-//
-//		// Inactivity timeout given in the policy will affect only if it gives
-//		// both the measure and the value.
-//		// Otherwise value will be taken from the parent.
-//		if (data.isInactivityTimeoutSet() && data.isInactivityTimeoutMeassureSet())
-//			propertyBean.setInactiveTimeoutInterval(data.getInactivityTimeout(), data.getInactivityTimeoutMeassure());
-//		else
-//			propertyBean.setInactiveTimeoutInterval(parentPropertyBean.getInactiveTimeoutInterval());
-//
-//		if (data.isInvokeInOrderSet())
-//			propertyBean.setInOrder(data.isInvokeInOrder());
-//		else
-//			propertyBean.setInOrder(parentPropertyBean.isInOrder());
-//
-//		if (data.isMaximumRetransmissionCountSet())
-//			propertyBean.setMaximumRetransmissionCount(data.getMaximumRetransmissionCount());
-//		else
-//			propertyBean.setMaximumRetransmissionCount(parentPropertyBean.getMaximumRetransmissionCount());
-//
-//		if (data.isRetransmissionIntervalSet())
-//			propertyBean.setRetransmissionInterval(data.getRetransmissionInterval());
-//		else
-//			propertyBean.setRetransmissionInterval(parentPropertyBean.getRetransmissionInterval());
-//
-//		if (data.isInMemoryStorageManagerSet())
-//			propertyBean.setInMemoryStorageManagerClass(data.getInMemoryStorageManager());
-//		else
-//			propertyBean.setInMemoryStorageManagerClass(data.getInMemoryStorageManager());
-//
-//		if (data.isPermanentStorageManagerSet())
-//			propertyBean.setPermanentStorageManagerClass(data.getPermanentStorageManager());
-//		else
-//			propertyBean.setPermanentStorageManagerClass(data.getPermanentStorageManager());
-//
-//		if (data.isMessageTypesToDropSet())
-//			loadMessageTypesToDrop(data.getMessageTypesToDrop(), propertyBean);
-//		else
-//			propertyBean.setMsgTypesToDrop(parentPropertyBean.getMsgTypesToDrop());
-//
-//		propertyBean.setSecurityManagerClass(data.getSecurityManager());
+        propertyBean.setParent(parentPropertyBean);
 
 		return propertyBean;
 	}
@@ -315,7 +255,7 @@
         
         boolean found = false;
         
-        for (Iterator assertions = assertionList.iterator(); iterator.hasNext();) {
+        for (Iterator assertions = assertionList.iterator(); assertions.hasNext();) {
             assertion = (Assertion) assertions.next();
             
             if (assertion instanceof SandeshaPolicyBean) {
@@ -330,76 +270,16 @@
         }
         
         propertyBean = (SandeshaPolicyBean) assertion;
-//
-//		RMPolicyProcessor processor = new RMPolicyProcessor();
-//
-//		try {
-//			processor.setup();
-//		} catch (NoSuchMethodException e) {
-//			throw new SandeshaException(e.getMessage());
-//		}
-//
-//		processor.processPolicy(policy);
-//
-//		RMProcessorContext ctx = processor.getContext();
-//		PolicyEngineData data = ctx.readCurrentPolicyEngineData();
-//
-//		if (data.isAcknowledgementIntervalSet())
-//			propertyBean.setAcknowledgementInterval(data.getAcknowledgementInterval());
-//		else
-//			propertyBean.setAcknowledgementInterval(parentPropertyBean.getAcknowledgementInterval());
-//
-//		if (data.isExponentialBackoffSet())
-//			propertyBean.setExponentialBackoff(data.isExponentialBackoff());
-//		else
-//			propertyBean.setExponentialBackoff(parentPropertyBean.isExponentialBackoff());
-//
-//		// Inactivity timeout given in the policy will affect only if it gives
-//		// both the measure and the value.
-//		// Otherwise value will be taken from the parent.
-//		if (data.isInactivityTimeoutSet() && data.isInactivityTimeoutMeassureSet())
-//			propertyBean.setInactiveTimeoutInterval(data.getInactivityTimeout(), data.getInactivityTimeoutMeassure());
-//		else
-//			propertyBean.setInactiveTimeoutInterval(parentPropertyBean.getInactiveTimeoutInterval());
-//
-//		if (data.isInvokeInOrderSet())
-//			propertyBean.setInOrder(data.isInvokeInOrder());
-//		else
-//			propertyBean.setInOrder(parentPropertyBean.isInOrder());
-//
-//		if (data.isMaximumRetransmissionCountSet())
-//			propertyBean.setMaximumRetransmissionCount(data.getMaximumRetransmissionCount());
-//		else
-//			propertyBean.setMaximumRetransmissionCount(parentPropertyBean.getMaximumRetransmissionCount());
-//
-//		if (data.isRetransmissionIntervalSet())
-//			propertyBean.setRetransmissionInterval(data.getRetransmissionInterval());
-//		else
-//			propertyBean.setRetransmissionInterval(parentPropertyBean.getRetransmissionInterval());
-//
-//		// if (data.isStorageManagerSet())
-//		// propertyBean.setStorageManagerClass(data.getStorageManager());
-//		// else
-//		// propertyBean.setStorageManagerClass(data.getStorageManager());
-//
-//		if (data.isInMemoryStorageManagerSet())
-//			propertyBean.setInMemoryStorageManagerClass(data.getInMemoryStorageManager());
-//		else
-//			propertyBean.setInMemoryStorageManagerClass(data.getInMemoryStorageManager());
-//
-//		if (data.isPermanentStorageManagerSet())
-//			propertyBean.setPermanentStorageManagerClass(data.getPermanentStorageManager());
-//		else
-//			propertyBean.setPermanentStorageManagerClass(data.getPermanentStorageManager());
-//
-//		if (data.isMessageTypesToDropSet())
-//			loadMessageTypesToDrop(data.getMessageTypesToDrop(), propertyBean);
-//		else
-//			propertyBean.setMsgTypesToDrop(parentPropertyBean.getMsgTypesToDrop());
-//
-//		propertyBean.setSecurityManagerClass(data.getSecurityManager());
-		
-		return propertyBean;
+        
+        if (propertyBean!=parentPropertyBean) {
+        	propertyBean.setParent(parentPropertyBean);
+        	return propertyBean;
+        } else {
+        	//propertyBean and parent being the same object means that there is no policy in this level, this is simply the reflection of 
+        	//the parent.
+        	return null;
+        }
+        
 	}
 
 	public static void reloadFromPropertyFile(InputStream stream) throws SandeshaException {
@@ -492,19 +372,6 @@
 		}
 	}
 
-	// /**
-	// * Loads the StorageManager class name.
-	// *
-	// * @param properties
-	// */
-	// private static void loadStoragemanagerClass(String storageMgrClassStr,
-	// SandeshaPropertyBean propertyBean) throws SandeshaException {
-	// if (storageMgrClassStr != null) {
-	// storageMgrClassStr = storageMgrClassStr.trim();
-	// propertyBean.setStorageManagerClass(storageMgrClassStr);
-	// }
-	// }
-
 	/**
 	 * Loads the InMemoryStorageManager class name.
 	 * 
@@ -604,5 +471,5 @@
 			propertyBean.setSecurityManagerClass(securityManagerClassStr);
 		}
 	}
-
+	
 }

Modified: webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/PropertyLoaderTest.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/PropertyLoaderTest.java?view=diff&rev=503447&r1=503446&r2=503447
==============================================================================
--- webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/PropertyLoaderTest.java (original)
+++ webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/PropertyLoaderTest.java Sun Feb  4 09:47:18 2007
@@ -46,17 +46,17 @@
 		
 	}
 	
-	public void testRetransmissionInterval () {
+	public void testRetransmissionInterval () throws SandeshaException {
 		long value = propertyBean.getRetransmissionInterval();
 		assertEquals(value,20000);
 	}
 	
-	public void testExponentialBackOff () {
+	public void testExponentialBackOff () throws SandeshaException {
 		boolean value = propertyBean.isExponentialBackoff();
 		assertEquals(value,false);
 	}
 	
-	public void testAcknowledgementInterval () {
+	public void testAcknowledgementInterval () throws SandeshaException {
 		long value = propertyBean.getAcknowledgementInterval();
 		assertEquals(value,8000);
 	}



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