You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2014/10/17 13:36:44 UTC
git commit: Simple JSON parser updates
Repository: cxf
Updated Branches:
refs/heads/master 007b6e17b -> 683a2c6b3
Simple JSON parser updates
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/683a2c6b
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/683a2c6b
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/683a2c6b
Branch: refs/heads/master
Commit: 683a2c6b3fc40678f604c0198ec058ae44b00db0
Parents: 007b6e1
Author: Sergey Beryozkin <sb...@talend.com>
Authored: Fri Oct 17 12:36:28 2014 +0100
Committer: Sergey Beryozkin <sb...@talend.com>
Committed: Fri Oct 17 12:36:28 2014 +0100
----------------------------------------------------------------------
.../provider/json/AbstractJsonMapObject.java | 61 ----------
.../cxf/jaxrs/provider/json/JsonMapObject.java | 84 +++++++++++++
.../provider/json/JsonMapObjectProvider.java | 86 +++++++++++++
.../json/JsonMapObjectReaderWriter.java | 120 +++++++++++++------
.../cxf/rs/security/jose/JoseHeaders.java | 45 ++-----
.../security/jose/jwe/JweCompactConsumer.java | 4 +-
.../cxf/rs/security/jose/jwk/JsonWebKey.java | 51 ++++----
.../cxf/rs/security/jose/jwk/JsonWebKeys.java | 10 +-
.../security/jose/jws/JwsCompactConsumer.java | 4 +-
.../rs/security/jose/jws/JwsJsonConsumer.java | 4 +-
.../cxf/rs/security/jose/jwt/JwtClaims.java | 18 +--
11 files changed, 308 insertions(+), 179 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/683a2c6b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/AbstractJsonMapObject.java
----------------------------------------------------------------------
diff --git a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/AbstractJsonMapObject.java b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/AbstractJsonMapObject.java
deleted file mode 100644
index d6eef9d..0000000
--- a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/AbstractJsonMapObject.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.cxf.jaxrs.provider.json;
-
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-public abstract class AbstractJsonMapObject {
- protected Map<String, Object> values = new LinkedHashMap<String, Object>();
-
- protected AbstractJsonMapObject() {
-
- }
-
- protected AbstractJsonMapObject(Map<String, Object> values) {
- this.values = values;
- }
-
- protected void setValue(String name, Object value) {
- values.put(name, value);
- }
-
- protected Object getValue(String name) {
- return values.get(name);
- }
-
- public Map<String, Object> asMap() {
- return values;
- }
-
- protected Long getLongDate(String name) {
- Object object = getValue(name);
- return object instanceof Long ? (Long)object : Long.valueOf(object.toString());
- }
-
- public int hashCode() {
- return values.hashCode();
- }
-
- public boolean equals(Object obj) {
- return obj instanceof AbstractJsonMapObject && ((AbstractJsonMapObject)obj).values.equals(this.values);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/cxf/blob/683a2c6b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JsonMapObject.java
----------------------------------------------------------------------
diff --git a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JsonMapObject.java b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JsonMapObject.java
new file mode 100644
index 0000000..efecd88
--- /dev/null
+++ b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JsonMapObject.java
@@ -0,0 +1,84 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.jaxrs.provider.json;
+
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+public class JsonMapObject {
+ private Map<String, Object> values = new LinkedHashMap<String, Object>();
+ private Map<String, Integer> updateCount;
+
+ public JsonMapObject() {
+
+ }
+
+ public JsonMapObject(Map<String, Object> values) {
+ this.values = values;
+ }
+
+ public void setProperty(String name, Object value) {
+ if (values.containsKey(name)) {
+ if (updateCount == null) {
+ updateCount = new LinkedHashMap<String, Integer>();
+ }
+ Integer count = updateCount.get(name);
+ count = count == null ? 2 : count++;
+ updateCount.put(name, count);
+ }
+ values.put(name, value);
+ }
+
+ public Object getProperty(String name) {
+ return values.get(name);
+ }
+
+ public Map<String, Object> asMap() {
+ return values;
+ }
+ public Integer getIntegerProperty(String name) {
+ Object value = getProperty(name);
+ if (value != null) {
+ return value instanceof Integer ? (Integer)value : Integer.parseInt(value.toString());
+ } else {
+ return null;
+ }
+ }
+ public Long getLongProperty(String name) {
+ Object value = getProperty(name);
+ if (value != null) {
+ return value instanceof Long ? (Long)value : Long.parseLong(value.toString());
+ } else {
+ return null;
+ }
+ }
+
+ public int hashCode() {
+ return values.hashCode();
+ }
+
+ public boolean equals(Object obj) {
+ return obj instanceof JsonMapObject && ((JsonMapObject)obj).values.equals(this.values);
+ }
+ public Map<String, Object> getUpdateCount() {
+ return updateCount == null ? null : Collections.<String, Object>unmodifiableMap(updateCount);
+ }
+}
http://git-wip-us.apache.org/repos/asf/cxf/blob/683a2c6b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JsonMapObjectProvider.java
----------------------------------------------------------------------
diff --git a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JsonMapObjectProvider.java b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JsonMapObjectProvider.java
new file mode 100644
index 0000000..f8fea4b
--- /dev/null
+++ b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JsonMapObjectProvider.java
@@ -0,0 +1,86 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.jaxrs.provider.json;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Type;
+import java.util.Map;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.ext.MessageBodyReader;
+import javax.ws.rs.ext.MessageBodyWriter;
+import javax.ws.rs.ext.Provider;
+
+import org.apache.cxf.helpers.IOUtils;
+
+@Produces({"application/json", "application/*+json" })
+@Consumes({"application/json", "application/*+json" })
+@Provider
+public class JsonMapObjectProvider implements MessageBodyReader<JsonMapObject>, MessageBodyWriter<JsonMapObject> {
+ private JsonMapObjectReaderWriter handler = new JsonMapObjectReaderWriter();
+ @Override
+ public long getSize(JsonMapObject o, Class<?> cls, Type t, Annotation[] anns, MediaType mt) {
+ return -1;
+ }
+
+ @Override
+ public boolean isWriteable(Class<?> cls, Type t, Annotation[] anns, MediaType mt) {
+ return JsonMapObject.class.isAssignableFrom(cls);
+ }
+
+ @Override
+ public void writeTo(JsonMapObject o, Class<?> cls, Type t, Annotation[] anns, MediaType mt,
+ MultivaluedMap<String, Object> headers, OutputStream os) throws IOException,
+ WebApplicationException {
+ handler.toJson(o, os);
+ }
+
+ @Override
+ public boolean isReadable(Class<?> cls, Type t, Annotation[] anns, MediaType mt) {
+ return JsonMapObject.class.isAssignableFrom(cls);
+ }
+
+ @Override
+ public JsonMapObject readFrom(Class<JsonMapObject> cls, Type t, Annotation[] anns, MediaType mt,
+ MultivaluedMap<String, String> headers, InputStream is) throws IOException,
+ WebApplicationException {
+ String s = IOUtils.readStringFromStream(is);
+ Map<String, Object> jsonMap = handler.fromJson(s);
+ if (cls == JsonMapObject.class) {
+ return new JsonMapObject(jsonMap);
+ } else {
+ try {
+ Constructor<?> c = cls.getConstructor(Map.class);
+ return (JsonMapObject)c.newInstance(jsonMap);
+ } catch (Exception ex) {
+ throw new IOException(ex);
+ }
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/cxf/blob/683a2c6b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JsonMapObjectReaderWriter.java
----------------------------------------------------------------------
diff --git a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JsonMapObjectReaderWriter.java b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JsonMapObjectReaderWriter.java
index de382a0..0c68705 100644
--- a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JsonMapObjectReaderWriter.java
+++ b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JsonMapObjectReaderWriter.java
@@ -18,6 +18,8 @@
*/
package org.apache.cxf.jaxrs.provider.json;
+import java.io.IOException;
+import java.io.OutputStream;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
@@ -26,78 +28,92 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import org.apache.cxf.common.util.StringUtils;
+
public class JsonMapObjectReaderWriter {
private boolean format;
- public String toJson(AbstractJsonMapObject jwt) {
+ public String toJson(JsonMapObject obj) {
+ return toJson(obj.asMap());
+ }
+
+ public String toJson(Map<String, Object> map) {
StringBuilder sb = new StringBuilder();
- toJsonInternal(sb, jwt.asMap());
+ toJsonInternal(new StringBuilderOutput(sb), map);
return sb.toString();
}
+
+ public void toJson(JsonMapObject obj, OutputStream os) {
+ toJson(obj.asMap(), os);
+ }
+
+ public void toJson(Map<String, Object> map, OutputStream os) {
+ toJsonInternal(new StreamOutput(os), map);
+ }
- protected void toJsonInternal(StringBuilder sb, Map<String, Object> map) {
- sb.append("{");
+ protected void toJsonInternal(Output out, Map<String, Object> map) {
+ out.append("{");
for (Iterator<Map.Entry<String, Object>> it = map.entrySet().iterator(); it.hasNext();) {
Map.Entry<String, Object> entry = it.next();
- sb.append("\"").append(entry.getKey()).append("\"");
- sb.append(":");
- toJsonInternal(sb, entry.getValue(), it.hasNext());
+ out.append("\"").append(entry.getKey()).append("\"");
+ out.append(":");
+ toJsonInternal(out, entry.getValue(), it.hasNext());
}
- sb.append("}");
+ out.append("}");
}
- protected void toJsonInternal(StringBuilder sb, Object[] array) {
- toJsonInternal(sb, Arrays.asList(array));
+ protected void toJsonInternal(Output out, Object[] array) {
+ toJsonInternal(out, Arrays.asList(array));
}
- protected void toJsonInternal(StringBuilder sb, Collection<?> coll) {
- sb.append("[");
- formatIfNeeded(sb);
+ protected void toJsonInternal(Output out, Collection<?> coll) {
+ out.append("[");
+ formatIfNeeded(out);
for (Iterator<?> iter = coll.iterator(); iter.hasNext();) {
- toJsonInternal(sb, iter.next(), iter.hasNext());
+ toJsonInternal(out, iter.next(), iter.hasNext());
}
- formatIfNeeded(sb);
- sb.append("]");
+ formatIfNeeded(out);
+ out.append("]");
}
@SuppressWarnings("unchecked")
- protected void toJsonInternal(StringBuilder sb, Object value, boolean hasNext) {
- if (AbstractJsonMapObject.class.isAssignableFrom(value.getClass())) {
- sb.append(toJson((AbstractJsonMapObject)value));
+ protected void toJsonInternal(Output out, Object value, boolean hasNext) {
+ if (JsonMapObject.class.isAssignableFrom(value.getClass())) {
+ out.append(toJson((JsonMapObject)value));
} else if (value.getClass().isArray()) {
- toJsonInternal(sb, (Object[])value);
+ toJsonInternal(out, (Object[])value);
} else if (Collection.class.isAssignableFrom(value.getClass())) {
- toJsonInternal(sb, (Collection<?>)value);
+ toJsonInternal(out, (Collection<?>)value);
} else if (Map.class.isAssignableFrom(value.getClass())) {
- toJsonInternal(sb, (Map<String, Object>)value);
+ toJsonInternal(out, (Map<String, Object>)value);
} else {
if (value.getClass() == String.class) {
- sb.append("\"");
+ out.append("\"");
}
- sb.append(value);
+ out.append(value.toString());
if (value.getClass() == String.class) {
- sb.append("\"");
+ out.append("\"");
}
}
if (hasNext) {
- sb.append(",");
- formatIfNeeded(sb);
+ out.append(",");
+ formatIfNeeded(out);
}
}
- protected void formatIfNeeded(StringBuilder sb) {
+ protected void formatIfNeeded(Output out) {
if (format) {
- sb.append("\r\n ");
+ out.append("\r\n ");
}
}
- public void fromJson(AbstractJsonMapObject jwt, String json) {
+ public void fromJson(JsonMapObject obj, String json) {
String theJson = json.trim();
- JsonObjectSettable joseObject = new JsonObjectSettable(jwt);
- readJsonObjectAsSettable(joseObject, theJson.substring(1, theJson.length() - 1));
+ JsonObjectSettable settable = new JsonObjectSettable(obj);
+ readJsonObjectAsSettable(settable, theJson.substring(1, theJson.length() - 1));
}
public Map<String, Object> fromJson(String json) {
@@ -211,14 +227,44 @@ public class JsonMapObjectReaderWriter {
}
private static class JsonObjectSettable implements Settable {
- private AbstractJsonMapObject jose;
- public JsonObjectSettable(AbstractJsonMapObject jose) {
- this.jose = jose;
+ private JsonMapObject obj;
+ public JsonObjectSettable(JsonMapObject obj) {
+ this.obj = obj;
}
public void put(String key, Object value) {
- jose.setValue(key, value);
+ obj.setProperty(key, value);
}
}
-
+ private interface Output {
+ Output append(String str);
+ }
+ private class StringBuilderOutput implements Output {
+ private StringBuilder sb;
+ public StringBuilderOutput(StringBuilder sb) {
+ this.sb = sb;
+ }
+ @Override
+ public Output append(String str) {
+ sb.append(str);
+ return this;
+ }
+
+ }
+ private class StreamOutput implements Output {
+ private OutputStream os;
+ public StreamOutput(OutputStream os) {
+ this.os = os;
+ }
+ @Override
+ public Output append(String str) {
+ try {
+ os.write(StringUtils.toBytesUTF8(str));
+ } catch (IOException ex) {
+ throw new RuntimeException(ex);
+ }
+ return this;
+ }
+
+ }
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/683a2c6b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/JoseHeaders.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/JoseHeaders.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/JoseHeaders.java
index 15bff4d..60ce970 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/JoseHeaders.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/JoseHeaders.java
@@ -19,17 +19,14 @@
package org.apache.cxf.rs.security.jose;
-import java.util.Collections;
-import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.cxf.helpers.CastUtils;
-import org.apache.cxf.jaxrs.provider.json.AbstractJsonMapObject;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObject;
import org.apache.cxf.rs.security.jose.jwk.JsonWebKey;
-public class JoseHeaders extends AbstractJsonMapObject {
- private Map<String, Integer> headerUpdateCount;
+public class JoseHeaders extends JsonMapObject {
public JoseHeaders() {
}
@@ -102,7 +99,7 @@ public class JoseHeaders extends AbstractJsonMapObject {
}
public String getX509ThumbprintSHA256() {
- return (String)super.getValue(JoseConstants.HEADER_X509_THUMBPRINT_SHA256);
+ return (String)getHeader(JoseConstants.HEADER_X509_THUMBPRINT_SHA256);
}
public void setCritical(List<String> crit) {
@@ -118,7 +115,7 @@ public class JoseHeaders extends AbstractJsonMapObject {
}
public JsonWebKey getJsonWebKey() {
- Object jsonWebKey = getValue(JoseConstants.HEADER_JSON_WEB_KEY);
+ Object jsonWebKey = getHeader(JoseConstants.HEADER_JSON_WEB_KEY);
if (jsonWebKey == null || jsonWebKey instanceof JsonWebKey) {
return (JsonWebKey)jsonWebKey;
}
@@ -127,24 +124,12 @@ public class JoseHeaders extends AbstractJsonMapObject {
}
public JoseHeaders setHeader(String name, Object value) {
- setValue(name, value);
+ setProperty(name, value);
return this;
}
- protected void setValue(String name, Object value) {
- if (super.values.containsKey(name)) {
- if (headerUpdateCount == null) {
- headerUpdateCount = new LinkedHashMap<String, Integer>();
- }
- Integer count = headerUpdateCount.get(name);
- count = count == null ? 2 : count++;
- headerUpdateCount.put(name, count);
- }
- super.setValue(name, value);
- }
-
public Object getHeader(String name) {
- return getValue(name);
+ return getProperty(name);
}
public JoseHeaders setIntegerHeader(String name, Integer value) {
@@ -153,12 +138,7 @@ public class JoseHeaders extends AbstractJsonMapObject {
}
public Integer getIntegerHeader(String name) {
- Object value = getHeader(name);
- if (value != null) {
- return value instanceof Integer ? (Integer)value : Integer.parseInt(value.toString());
- } else {
- return null;
- }
+ return getIntegerProperty(name);
}
public JoseHeaders setLongHeader(String name, Long value) {
setHeader(name, value);
@@ -166,14 +146,7 @@ public class JoseHeaders extends AbstractJsonMapObject {
}
public Long getLongHeader(String name) {
- Object value = getHeader(name);
- if (value != null) {
- return value instanceof Long ? (Long)value : Long.parseLong(value.toString());
- } else {
- return null;
- }
- }
- public Map<String, Object> getHeaderUpdateCount() {
- return headerUpdateCount == null ? null : Collections.<String, Object>unmodifiableMap(headerUpdateCount);
+ return getLongProperty(name);
}
+
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/683a2c6b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactConsumer.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactConsumer.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactConsumer.java
index c2461e3..8673d4d 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactConsumer.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactConsumer.java
@@ -54,8 +54,8 @@ public class JweCompactConsumer {
encryptedContent = Base64UrlUtility.decode(parts[3]);
authTag = Base64UrlUtility.decode(parts[4]);
JoseHeaders joseHeaders = reader.fromJsonHeaders(headersJson);
- if (joseHeaders.getHeaderUpdateCount() != null) {
- throw new SecurityException();
+ if (joseHeaders.getUpdateCount() != null) {
+ throw new SecurityException("Duplicate headers have been detected");
}
jweHeaders = new JweHeaders(joseHeaders);
http://git-wip-us.apache.org/repos/asf/cxf/blob/683a2c6b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JsonWebKey.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JsonWebKey.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JsonWebKey.java
index aa4ee13..025b248 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JsonWebKey.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JsonWebKey.java
@@ -22,11 +22,11 @@ import java.util.List;
import java.util.Map;
import org.apache.cxf.helpers.CastUtils;
-import org.apache.cxf.jaxrs.provider.json.AbstractJsonMapObject;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObject;
import org.apache.cxf.rs.security.jose.JoseConstants;
-public class JsonWebKey extends AbstractJsonMapObject {
+public class JsonWebKey extends JsonMapObject {
public static final String KEY_TYPE = "kty";
public static final String PUBLIC_KEY_USE = "use";
@@ -77,84 +77,85 @@ public class JsonWebKey extends AbstractJsonMapObject {
}
public void setKeyType(String keyType) {
- super.setValue(KEY_TYPE, keyType);
+ setProperty(KEY_TYPE, keyType);
}
public String getKeyType() {
- return (String)super.getValue(KEY_TYPE);
+ return (String)getProperty(KEY_TYPE);
}
public void setPublicKeyUse(String use) {
- super.setValue(PUBLIC_KEY_USE, use);
+ setProperty(PUBLIC_KEY_USE, use);
}
public String getPublicKeyUse() {
- return (String)super.getValue(PUBLIC_KEY_USE);
+ return (String)getProperty(PUBLIC_KEY_USE);
}
public void setKeyOperation(List<String> keyOperation) {
- super.setValue(KEY_OPERATIONS, keyOperation);
+ setProperty(KEY_OPERATIONS, keyOperation);
}
public List<String> getKeyOperation() {
- return CastUtils.cast((List<?>)super.getValue(KEY_OPERATIONS));
+ return CastUtils.cast((List<?>)getProperty(KEY_OPERATIONS));
}
public void setAlgorithm(String algorithm) {
- super.setValue(KEY_ALGO, algorithm);
+ setProperty(KEY_ALGO, algorithm);
}
public String getAlgorithm() {
- return (String)super.getValue(KEY_ALGO);
+ return (String)getProperty(KEY_ALGO);
}
public void setKid(String kid) {
- super.setValue(KEY_ID, kid);
+ setProperty(KEY_ID, kid);
}
public String getKid() {
- return (String)super.getValue(KEY_ID);
+ return (String)getProperty(KEY_ID);
}
public void setX509Url(String x509Url) {
- super.setValue(X509_URL, x509Url);
+ setProperty(X509_URL, x509Url);
}
public String getX509Url() {
- return (String)super.getValue(X509_URL);
+ return (String)getProperty(X509_URL);
}
public void setX509Chain(String x509Chain) {
- super.setValue(X509_CHAIN, x509Chain);
+ setProperty(X509_CHAIN, x509Chain);
}
public String getX509Chain() {
- return (String)super.getValue(X509_CHAIN);
+ return (String)getProperty(X509_CHAIN);
}
public void setX509Thumbprint(String x509Thumbprint) {
- super.setValue(X509_THUMBPRINT, x509Thumbprint);
+ setProperty(X509_THUMBPRINT, x509Thumbprint);
}
public String getX509Thumbprint() {
- return (String)super.getValue(X509_THUMBPRINT);
+ return (String)getProperty(X509_THUMBPRINT);
}
public void setX509ThumbprintSHA256(String x509Thumbprint) {
- super.setValue(X509_THUMBPRINT_SHA256, x509Thumbprint);
+ setProperty(X509_THUMBPRINT_SHA256, x509Thumbprint);
}
public String getX509ThumbprintSHA256() {
- return (String)super.getValue(X509_THUMBPRINT_SHA256);
+ return (String)getProperty(X509_THUMBPRINT_SHA256);
}
- public JsonWebKey setProperty(String name, Object value) {
- super.setValue(name, value);
+ public JsonWebKey setKeyProperty(String name, Object value) {
+ setProperty(name, value);
return this;
}
-
- public Object getProperty(String name) {
- return super.getValue(name);
+ public Object getKeyProperty(String name) {
+ return getProperty(name);
}
+
+
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/683a2c6b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JsonWebKeys.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JsonWebKeys.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JsonWebKeys.java
index 54130d2..29ea88a 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JsonWebKeys.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JsonWebKeys.java
@@ -25,12 +25,12 @@ import java.util.List;
import java.util.Map;
import org.apache.cxf.helpers.CastUtils;
-import org.apache.cxf.jaxrs.provider.json.AbstractJsonMapObject;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObject;
-public class JsonWebKeys extends AbstractJsonMapObject {
+public class JsonWebKeys extends JsonMapObject {
public static final String KEYS_PROPERTY = "keys";
public List<JsonWebKey> getKeys() {
- List<?> list = (List<?>)super.getValue(KEYS_PROPERTY);
+ List<?> list = (List<?>)super.getProperty(KEYS_PROPERTY);
if (list != null && !list.isEmpty()) {
Object first = list.get(0);
if (first instanceof JsonWebKey) {
@@ -38,7 +38,7 @@ public class JsonWebKeys extends AbstractJsonMapObject {
} else {
List<JsonWebKey> keys = new LinkedList<JsonWebKey>();
List<Map<String, Object>> listOfMaps =
- CastUtils.cast((List<?>)super.getValue(KEYS_PROPERTY));
+ CastUtils.cast((List<?>)super.getProperty(KEYS_PROPERTY));
for (Map<String, Object> map : listOfMaps) {
keys.add(new JsonWebKey(map));
}
@@ -50,7 +50,7 @@ public class JsonWebKeys extends AbstractJsonMapObject {
}
public void setKeys(List<JsonWebKey> keys) {
- super.setValue(KEYS_PROPERTY, keys);
+ super.setProperty(KEYS_PROPERTY, keys);
}
public Map<String, JsonWebKey> getKeyIdMap() {
http://git-wip-us.apache.org/repos/asf/cxf/blob/683a2c6b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactConsumer.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactConsumer.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactConsumer.java
index 578c049..a87bc19 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactConsumer.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactConsumer.java
@@ -76,8 +76,8 @@ public class JwsCompactConsumer {
}
public JoseHeaders getJoseHeaders() {
JoseHeaders joseHeaders = reader.fromJsonHeaders(headersJson);
- if (joseHeaders.getHeaderUpdateCount() != null) {
- throw new SecurityException();
+ if (joseHeaders.getUpdateCount() != null) {
+ throw new SecurityException("Duplicate headers have been detected");
}
return joseHeaders;
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/683a2c6b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonConsumer.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonConsumer.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonConsumer.java
index bbc2ac5..45069b3 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonConsumer.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonConsumer.java
@@ -24,7 +24,7 @@ import java.util.List;
import java.util.Map;
import org.apache.cxf.common.util.StringUtils;
-import org.apache.cxf.jaxrs.provider.json.AbstractJsonMapObject;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObject;
import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
import org.apache.cxf.rs.security.jose.JoseUtils;
import org.apache.cxf.rs.security.jose.jwk.JsonWebKey;
@@ -45,7 +45,7 @@ public class JwsJsonConsumer {
}
private void prepare() {
- AbstractJsonMapObject jsonObject = new AbstractJsonMapObject() { };
+ JsonMapObject jsonObject = new JsonMapObject();
new JsonMapObjectReaderWriter().fromJson(jsonObject, jwsSignedDocument);
this.encodedJwsPayload = (String)jsonObject.asMap().get("payload");
http://git-wip-us.apache.org/repos/asf/cxf/blob/683a2c6b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwt/JwtClaims.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwt/JwtClaims.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwt/JwtClaims.java
index 7f6a1e5..871e57a 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwt/JwtClaims.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwt/JwtClaims.java
@@ -21,12 +21,12 @@ package org.apache.cxf.rs.security.jose.jwt;
import java.util.Map;
-import org.apache.cxf.jaxrs.provider.json.AbstractJsonMapObject;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObject;
-public class JwtClaims extends AbstractJsonMapObject {
+public class JwtClaims extends JsonMapObject {
public JwtClaims() {
}
@@ -40,7 +40,7 @@ public class JwtClaims extends AbstractJsonMapObject {
}
public String getIssuer() {
- return (String)getValue(JwtConstants.CLAIM_ISSUER);
+ return (String)getClaim(JwtConstants.CLAIM_ISSUER);
}
public void setSubject(String subject) {
@@ -64,7 +64,7 @@ public class JwtClaims extends AbstractJsonMapObject {
}
public Long getExpiryTime() {
- return getLongDate(JwtConstants.CLAIM_EXPIRY);
+ return getLongProperty(JwtConstants.CLAIM_EXPIRY);
}
public void setNotBefore(Long notBefore) {
@@ -72,7 +72,7 @@ public class JwtClaims extends AbstractJsonMapObject {
}
public Long getNotBefore() {
- return getLongDate(JwtConstants.CLAIM_NOT_BEFORE);
+ return getLongProperty(JwtConstants.CLAIM_NOT_BEFORE);
}
public void setIssuedAt(Long issuedAt) {
@@ -80,11 +80,11 @@ public class JwtClaims extends AbstractJsonMapObject {
}
public Long getIssuedAt() {
- return getLongDate(JwtConstants.CLAIM_ISSUED_AT);
+ return getLongProperty(JwtConstants.CLAIM_ISSUED_AT);
}
public void setTokenId(String id) {
- setValue(JwtConstants.CLAIM_JWT_ID, id);
+ setClaim(JwtConstants.CLAIM_JWT_ID, id);
}
public String getTokenId() {
@@ -92,11 +92,11 @@ public class JwtClaims extends AbstractJsonMapObject {
}
public JwtClaims setClaim(String name, Object value) {
- setValue(name, value);
+ setProperty(name, value);
return this;
}
public Object getClaim(String name) {
- return getValue(name);
+ return getProperty(name);
}
}