Author: nandana
Date: Thu Apr 17 22:26:07 2008
New Revision: 649372

URL: http://svn.apache.org/viewvc?rev=649372&view=rev
Log:
RAMPART-152 Applied Alexandre's patch with some changes 
* Changed the behavior to apply timestamp precision in milliseconds 
configuration only to relevant message (not globally)
* Included check for possible null pointer values

thanks Alexandre

Modified:
    
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java
    
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/builders/RampartConfigBuilder.java
    
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/model/RampartConfig.java
    
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/MessageOptimizer.java
    
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java

Modified: 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java?rev=649372&r1=649371&r2=649372&view=diff
==============================================================================
--- 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java
 (original)
+++ 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java
 Thu Apr 17 22:26:07 2008
@@ -278,8 +278,28 @@
                 }
             }
             
-            this.config = WSSConfig.getDefaultWSConfig();
+           // Check whether RampartConfig is present 
+           if (this.policyData != null && this.policyData.getRampartConfig() 
!= null) {
+               
+               boolean timestampPrecisionInMilliseconds = 
Boolean.valueOf(this.policyData
+                       
.getRampartConfig().getTimestampPrecisionInMilliseconds()).booleanValue();
+               
+               // This is not the default behavior, we clone the default 
WSSConfig to prevent this 
+               // affecting globally 
+               if (timestampPrecisionInMilliseconds == 
WSSConfig.getDefaultWSConfig()
+                                                           
.isPrecisionInMilliSeconds()) {
+                   this.config = WSSConfig.getDefaultWSConfig();               
 
+               } else {
+                   this.config = RampartUtil.getWSSConfigInstance();
+                   
this.config.setPrecisionInMilliSeconds(timestampPrecisionInMilliseconds);       
        
+               }
+           } else {
+               this.config = WSSConfig.getDefaultWSConfig();
+           }
+            
 
+                    
+            
             this.customClassLoader = msgCtx.getAxisService().getClassLoader();
             
             if(this.sender && this.policyData != null) {

Modified: 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/builders/RampartConfigBuilder.java
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/builders/RampartConfigBuilder.java?rev=649372&r1=649371&r2=649372&view=diff
==============================================================================
--- 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/builders/RampartConfigBuilder.java
 (original)
+++ 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/builders/RampartConfigBuilder.java
 Thu Apr 17 22:26:07 2008
@@ -104,6 +104,12 @@
         }
 
         childElement = element.getFirstChildWithName(new QName(
+                RampartConfig.NS, RampartConfig.TS_PRECISION_IN_MS_LN));
+        if (childElement != null) {
+            
rampartConfig.setTimestampPrecisionInMilliseconds(childElement.getText().trim());
+        }
+        
+        childElement = element.getFirstChildWithName(new QName(
                 RampartConfig.NS, RampartConfig.TS_TTL_LN));
         if (childElement != null) {
             rampartConfig.setTimestampTTL(childElement.getText().trim());

Modified: 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/model/RampartConfig.java
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/model/RampartConfig.java?rev=649372&r1=649371&r2=649372&view=diff
==============================================================================
--- 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/model/RampartConfig.java
 (original)
+++ 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/model/RampartConfig.java
 Thu Apr 17 22:26:07 2008
@@ -35,6 +35,7 @@
  *  <ramp:encryptionUser>bob</ramp:encryptionUser>
  *  
<ramp:passwordCallbackClass>org.apache.axis2.security.PWCallback</ramp:passwordCallbackClass>
  *  
<ramp:policyValidatorCbClass>org.apache.axis2.security.ramp:PolicyValidatorCallbackHandler</ramp:policyValidatorCbClass>
+ *  
<ramp:timestampPrecisionInMilliseconds>true</timestampPrecisionInMilliseconds>
  *  <ramp:timestampTTL>300</ramp:timestampTTL>
  *  <ramp:timestampMaxSkew>0</ramp:timestampMaxSkew>
  *  
<ramp:tokenStoreClass>org.apache.rahas.StorageImpl</ramp:tokenStoreClass>
@@ -59,7 +60,9 @@
  * 
  */
 public class RampartConfig implements Assertion {
-
+    
+    public static final boolean DEFAULT_TIMESTAMP_PRECISION_IN_MS = true;
+       
     public static final int DEFAULT_TIMESTAMP_TTL = 300;
 
     public static final int DEFAULT_TIMESTAMP_MAX_SKEW = 300;
@@ -90,6 +93,8 @@
     
     public final static String STS_CRYPTO_LN = "stsCrypto";
 
+    public final static String TS_PRECISION_IN_MS_LN = 
"timestampPrecisionInMilliseconds";
+    
     public final static String TS_TTL_LN = "timestampTTL";
 
     public final static String TS_MAX_SKEW_LN = "timestampMaxSkew";
@@ -120,6 +125,8 @@
     
     private CryptoConfig stsCryptoConfig;
 
+    private String timestampPrecisionInMilliseconds = 
Boolean.toString(DEFAULT_TIMESTAMP_PRECISION_IN_MS);
+    
     private String timestampTTL = Integer.toString(DEFAULT_TIMESTAMP_TTL);
     
     private String timestampMaxSkew = 
Integer.toString(DEFAULT_TIMESTAMP_MAX_SKEW);
@@ -279,6 +286,12 @@
             writer.writeEndElement();
         }
         
+        if (getTimestampPrecisionInMilliseconds() != null) {
+            writer.writeStartElement(NS, TS_PRECISION_IN_MS_LN);
+            writer.writeCharacters(getTimestampPrecisionInMilliseconds());
+            writer.writeEndElement();
+        }
+        
         if (getTimestampTTL() != null) {
             writer.writeStartElement(NS, TS_TTL_LN);
             writer.writeCharacters(getTimestampTTL());
@@ -334,6 +347,14 @@
         return Constants.TYPE_ASSERTION;
     }
 
+    public String getTimestampPrecisionInMilliseconds() {
+       return timestampPrecisionInMilliseconds;
+    }
+    
+    public void setTimestampPrecisionInMilliseconds(String 
timestampPrecisionInMilliseconds) {
+        this.timestampPrecisionInMilliseconds = 
timestampPrecisionInMilliseconds;
+    }
+    
     /**
      * @return Returns the timestampTTL.
      */

Modified: 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/MessageOptimizer.java
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/MessageOptimizer.java?rev=649372&r1=649371&r2=649372&view=diff
==============================================================================
--- 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/MessageOptimizer.java
 (original)
+++ 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/MessageOptimizer.java
 Thu Apr 17 22:26:07 2008
@@ -98,7 +98,6 @@
                        while (cipherValueElements.hasNext()) {
                                OMElement element = (OMElement) 
cipherValueElements.next();
                                OMText text = (OMText)element.getFirstOMChild();
-                               System.out.println(text.getText().length());
                                text.setOptimize(true);
                        }
                }

Modified: 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java?rev=649372&r1=649371&r2=649372&view=diff
==============================================================================
--- 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
 (original)
+++ 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
 Thu Apr 17 22:26:07 2008
@@ -64,6 +64,7 @@
 import org.apache.ws.security.WSConstants;
 import org.apache.ws.security.WSEncryptionPart;
 import org.apache.ws.security.WSPasswordCallback;
+import org.apache.ws.security.WSSConfig;
 import org.apache.ws.security.WSSecurityEngineResult;
 import org.apache.ws.security.WSSecurityException;
 import org.apache.ws.security.WSUsernameTokenPrincipal;
@@ -1454,6 +1455,25 @@
         }
         
         return null;
+    }
+    
+    /**
+     * We use this method to prevent the singleton behavior of WSSConfig
+     * @return WSSConfig object with the latest settings.    
+     */
+    
+    public static WSSConfig getWSSConfigInstance() {
+        
+        WSSConfig defaultWssConfig = WSSConfig.getDefaultWSConfig();
+        WSSConfig wssConfig = WSSConfig.getNewInstance();
+        
+        
wssConfig.setEnableSignatureConfirmation(defaultWssConfig.isEnableSignatureConfirmation());
+        wssConfig.setTimeStampStrict(defaultWssConfig.isTimeStampStrict());
+        wssConfig.setWsiBSPCompliant(defaultWssConfig.isWsiBSPCompliant());
+        
wssConfig.setPrecisionInMilliSeconds(defaultWssConfig.isPrecisionInMilliSeconds());
+        
+        return  wssConfig;
+       
     }
 
 }


Reply via email to