You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by co...@apache.org on 2016/01/29 14:33:32 UTC
cxf git commit: Make sure the SecurityToken Element can survive
serialization
Repository: cxf
Updated Branches:
refs/heads/master 279182600 -> 1ed42aa85
Make sure the SecurityToken Element can survive serialization
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/1ed42aa8
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/1ed42aa8
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/1ed42aa8
Branch: refs/heads/master
Commit: 1ed42aa8588b6690e7c47f2c2f3043e0de0b8dc4
Parents: 2791826
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Fri Jan 29 13:33:01 2016 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Fri Jan 29 13:33:28 2016 +0000
----------------------------------------------------------------------
.../ws/security/tokenstore/SecurityToken.java | 32 +++++++++++++++++++-
1 file changed, 31 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/1ed42aa8/rt/ws/security/src/main/java/org/apache/cxf/ws/security/tokenstore/SecurityToken.java
----------------------------------------------------------------------
diff --git a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/tokenstore/SecurityToken.java b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/tokenstore/SecurityToken.java
index b778bcd..522c596 100644
--- a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/tokenstore/SecurityToken.java
+++ b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/tokenstore/SecurityToken.java
@@ -19,7 +19,11 @@
package org.apache.cxf.ws.security.tokenstore;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
import java.io.Serializable;
+import java.io.StringReader;
import java.security.Key;
import java.security.Principal;
import java.security.cert.X509Certificate;
@@ -28,6 +32,8 @@ import java.text.ParseException;
import java.util.Date;
import java.util.Map;
+import javax.xml.stream.XMLStreamException;
+
import org.w3c.dom.Element;
import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.security.SecurityContext;
@@ -35,6 +41,7 @@ import org.apache.cxf.staxutils.StaxUtils;
import org.apache.cxf.staxutils.W3CDOMStreamWriter;
import org.apache.wss4j.common.crypto.Crypto;
import org.apache.wss4j.common.token.Reference;
+import org.apache.wss4j.common.util.DOM2Writer;
import org.apache.wss4j.common.util.XMLUtils;
import org.apache.wss4j.dom.WSConstants;
import org.apache.wss4j.dom.util.XmlSchemaDateFormat;
@@ -50,7 +57,11 @@ public class SecurityToken implements Serializable {
*/
public static final String BOOTSTRAP_TOKEN_ID = "bootstrap_security_token_id";
- private static final long serialVersionUID = 3820740387121650613L;
+ /**
+ *
+ */
+ private static final long serialVersionUID = -8220267049304000696L;
+
/**
* Token identifier
@@ -68,6 +79,11 @@ public class SecurityToken implements Serializable {
private transient Element token;
/**
+ * The String representation of the token (The token can't be serialized as it's a DOM Element)
+ */
+ private String tokenStr;
+
+ /**
* The RequestedAttachedReference element
* NOTE : The oasis-200401-wss-soap-message-security-1.0 spec allows
* an extensibility mechanism for wsse:SecurityTokenReference and
@@ -546,4 +562,18 @@ public class SecurityToken implements Serializable {
this.data = data;
}
+ private void writeObject(ObjectOutputStream stream) throws IOException {
+ if (token != null && tokenStr == null) {
+ tokenStr = DOM2Writer.nodeToString(token);
+ }
+ stream.defaultWriteObject();
+ }
+
+ private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException, XMLStreamException {
+ in.defaultReadObject();
+
+ if (token == null && tokenStr != null) {
+ token = StaxUtils.read(new StringReader(tokenStr)).getDocumentElement();
+ }
+ }
}