You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oltu.apache.org by si...@apache.org on 2013/10/29 13:45:50 UTC

svn commit: r1536690 [2/2] - in /oltu/trunk: ./ commons/ commons/encodedtoken/ commons/encodedtoken/src/ commons/encodedtoken/src/main/ commons/encodedtoken/src/main/java/ commons/encodedtoken/src/main/java/org/ commons/encodedtoken/src/main/java/org/a...

Added: oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTHeaderParser.java
URL: http://svn.apache.org/viewvc/oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTHeaderParser.java?rev=1536690&view=auto
==============================================================================
--- oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTHeaderParser.java (added)
+++ oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTHeaderParser.java Tue Oct 29 12:45:49 2013
@@ -0,0 +1,43 @@
+/*
+ * 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.oltu.oauth2.jwt.io;
+
+import org.apache.oltu.commons.json.CustomizableEntityReader;
+import org.apache.oltu.oauth2.jwt.JWT;
+
+final class JWTHeaderParser extends CustomizableEntityReader<JWT, JWT.Builder> implements JWTConstants {
+
+    public JWTHeaderParser(JWT.Builder builder) {
+        super( builder );
+    }
+
+    @Override
+    protected <T> boolean handleProperty( String key, T value ) {
+        if (ALGORITHM.equals(key)) {
+            getBuilder().setHeaderAlgorithm(String.valueOf(value));
+        } else if (TYPE.equals(key)) {
+            getBuilder().setHeaderType(String.valueOf(value));
+        } else if (CONTENT_TYPE.equals(key)) {
+            getBuilder().setHeaderContentType(String.valueOf(value));
+        } else {
+            getBuilder().setHeaderCustomField(key, value);
+        }
+
+        return true;
+    }
+
+}

Propchange: oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTHeaderParser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTHeaderParser.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTHeaderParser.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTHeaderWriter.java
URL: http://svn.apache.org/viewvc/oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTHeaderWriter.java?rev=1536690&view=auto
==============================================================================
--- oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTHeaderWriter.java (added)
+++ oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTHeaderWriter.java Tue Oct 29 12:45:49 2013
@@ -0,0 +1,31 @@
+/*
+ * 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.oltu.oauth2.jwt.io;
+
+import org.apache.oltu.commons.json.CustomizableEntityWriter;
+import org.apache.oltu.oauth2.jwt.Header;
+
+public final class JWTHeaderWriter extends CustomizableEntityWriter<Header> implements JWTConstants {
+
+    @Override
+    protected void handleProperties(Header header) {
+        set(ALGORITHM, header.getAlgorithm());
+        set(CONTENT_TYPE, header.getContentType());
+        set(TYPE, header.getType());
+    }
+
+}

Propchange: oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTHeaderWriter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTHeaderWriter.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTHeaderWriter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTReader.java
URL: http://svn.apache.org/viewvc/oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTReader.java?rev=1536690&r1=1536689&r2=1536690&view=diff
==============================================================================
--- oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTReader.java (original)
+++ oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTReader.java Tue Oct 29 12:45:49 2013
@@ -16,210 +16,22 @@
  */
 package org.apache.oltu.oauth2.jwt.io;
 
-import static java.lang.String.format;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
+import org.apache.oltu.commons.encodedtoken.TokenReader;
 import org.apache.oltu.oauth2.jwt.JWT;
-import org.json.JSONTokener;
 
 /**
  * A {@link JWT} reader.
  */
-public final class JWTReader extends AbstractJWTIO {
-
-    /**
-     * The Base64 JSON string default separator.
-     */
-    private static final Pattern BASE64_JWT_PATTERN = Pattern.compile("([a-zA-Z0-9/+=]+)\\.([a-zA-Z0-9/+=]+)\\.(.+)");
-
-    /**
-     * Parses a Base64 encoded JSON Web Token.
-     *
-     * @param base64jsonString a Base64 encoded JSON Web Token.
-     * @return a JWT instance.
-     */
-    public JWT read(String base64jsonString) {
-        if (base64jsonString == null || base64jsonString.isEmpty()) {
-            throw new IllegalArgumentException("Impossible to obtain a JWT from a null or empty string");
-        }
-
-        // TODO improve multi-line tokens
-        StringBuilder buffer = new StringBuilder();
-        BufferedReader reader = new BufferedReader(new StringReader(base64jsonString));
-        String line = null;
-        try {
-            while ((line = reader.readLine()) != null) {
-                buffer.append(line.trim());
-            }
-        } catch (IOException e) {
-            // it cannot happen
-        } finally {
-            try {
-                reader.close();
-            } catch (IOException e) {
-                // swallow it
-            }
-        }
-
-        Matcher matcher = BASE64_JWT_PATTERN.matcher(buffer.toString());
-        if (!matcher.matches()) {
-            throw new IllegalArgumentException(base64jsonString
-                                               + "is not a valid JSON Web Token, it does not match with the pattern: "
-                                               + BASE64_JWT_PATTERN.pattern());
-        }
-
-        JWT.Builder jwtBuilder = new JWT.Builder(base64jsonString);
-
-        // Header
-        String header = matcher.group(1);
-        String decodedHeader = decodeJSON(header);
-        new JWTHeaderParser(jwtBuilder).parse(decodedHeader);
-
-        // ClaimsSet
-        String claimsSet = matcher.group(2);
-        String decodedClaimsSet = decodeJSON(claimsSet);
-        new JWTClaimsSetParser(jwtBuilder).parse(decodedClaimsSet);
-
-        // Signature
-        String signature = matcher.group(3);
-
-        return jwtBuilder.setSignature(signature).build();
-    }
-
-    private String decodeJSON(String base64jsonString) {
-        return new String(base64.decode(base64jsonString), UTF_8);
-    }
-
-    private static abstract class JSONParser {
-
-        private final JWT.Builder jwtBuilder;
-
-        public JSONParser(JWT.Builder jwtBuilder) {
-            this.jwtBuilder = jwtBuilder;
-        }
-
-        protected final JWT.Builder getJwtBuilder() {
-            return jwtBuilder;
-        }
-
-        public final void parse(String decodedHeader) {
-            final JSONTokener x = new JSONTokener(decodedHeader);
-            char c;
-            String key;
-
-            if (x.nextClean() != '{') {
-                throw new IllegalArgumentException(format("String '%s' is not a valid JSON object representation, a JSON object text must begin with '{'",
-                                                          decodedHeader));
-            }
-            for (;;) {
-                c = x.nextClean();
-                switch (c) {
-                case 0:
-                    throw new IllegalArgumentException(format("String '%s' is not a valid JSON object representation, a JSON object text must end with '}'",
-                                                              decodedHeader));
-                case '}':
-                    return;
-                default:
-                    x.back();
-                    key = x.nextValue().toString();
-                }
-
-                /*
-                 * The key is followed by ':'. We will also tolerate '=' or '=>'.
-                 */
-                c = x.nextClean();
-                if (c == '=') {
-                    if (x.next() != '>') {
-                        x.back();
-                    }
-                } else if (c != ':') {
-                    throw new IllegalArgumentException(format("String '%s' is not a valid JSON object representation, expected a ':' after the key '%s'",
-                                                              decodedHeader, key));
-                }
-                Object value = x.nextValue();
-
-                if (value != null) {
-                    on(key, value);
-                }
-
-                /*
-                 * Pairs are separated by ','. We will also tolerate ';'.
-                 */
-                switch (x.nextClean()) {
-                case ';':
-                case ',':
-                    if (x.nextClean() == '}') {
-                        return;
-                    }
-                    x.back();
-                    break;
-                case '}':
-                    return;
-                default:
-                    throw new IllegalArgumentException("Expected a ',' or '}'");
-                }
-            }
-        }
-
-        protected abstract void on(String key, Object value);
-
-    }
-
-    private static final class JWTHeaderParser extends JSONParser {
-
-        public JWTHeaderParser(JWT.Builder jwtBuilder) {
-            super(jwtBuilder);
-        }
-
-        @Override
-        protected void on(String key, Object value) {
-            if (ALGORITHM.equals(key)) {
-                getJwtBuilder().setHeaderAlgorithm(String.valueOf(value));
-            } else if (TYPE.equals(key)) {
-                getJwtBuilder().setHeaderType(String.valueOf(value));
-            } else if (CONTENT_TYPE.equals(key)) {
-                getJwtBuilder().setHeaderContentType(String.valueOf(value));
-            } else {
-                getJwtBuilder().setHeaderCustomField(key, String.valueOf(value));
-            }
-        }
-
-    }
+public final class JWTReader extends TokenReader<JWT> {
 
-    private static final class JWTClaimsSetParser extends JSONParser {
+    @Override
+    protected JWT build(String rawString, String decodedHeader, String decodedBody, String decodedSignature) {
+        JWT.Builder jwtBuilder = new JWT.Builder(rawString);
 
-        public JWTClaimsSetParser(JWT.Builder jwtBuilder) {
-            super(jwtBuilder);
-        }
-
-        @Override
-        protected void on(String key, Object value) {
-            if (AUDIENCE.equals(key)) {
-                getJwtBuilder().setClaimsSetAudience(String.valueOf(value));
-            } else if (EXPIRATION_TIME.equals(key)) {
-                getJwtBuilder().setClaimsSetExpirationTime(((Integer) value).longValue());
-            } else if (ISSUED_AT.equals(key)) {
-                getJwtBuilder().setClaimsSetIssuedAt(((Integer) value).longValue());
-            } else if (ISSUER.equals(key)) {
-                getJwtBuilder().setClaimsSetIssuer(String.valueOf(value));
-            } else if (JWT_ID.equals(key)) {
-                getJwtBuilder().setClaimsSetJwdId(String.valueOf(value));
-            } else if (NOT_BEFORE.equals(key)) {
-                getJwtBuilder().setClaimsSetNotBefore(String.valueOf(value));
-            } else if (SUBJECT.equals(key)) {
-                getJwtBuilder().setClaimsSetSubject(String.valueOf(value));
-            } else if (TYPE.equals(key)) {
-                getJwtBuilder().setClaimsSetType(String.valueOf(value));
-            } else {
-                getJwtBuilder().setClaimsSetCustomField(key, String.valueOf(value));
-            }
-        }
+        new JWTHeaderParser(jwtBuilder).read(decodedHeader);
+        new JWTClaimsSetParser(jwtBuilder).read(decodedBody);
 
+        return jwtBuilder.setSignature(decodedSignature).build();
     }
 
 }

Modified: oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTWriter.java
URL: http://svn.apache.org/viewvc/oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTWriter.java?rev=1536690&r1=1536689&r2=1536690&view=diff
==============================================================================
--- oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTWriter.java (original)
+++ oltu/trunk/oauth-2.0/jwt/src/main/java/org/apache/oltu/oauth2/jwt/io/JWTWriter.java Tue Oct 29 12:45:49 2013
@@ -16,117 +16,27 @@
  */
 package org.apache.oltu.oauth2.jwt.io;
 
-import java.util.Map.Entry;
-
-import org.apache.oltu.oauth2.jwt.ClaimsSet;
-import org.apache.oltu.oauth2.jwt.Header;
+import org.apache.oltu.commons.encodedtoken.TokenWriter;
 import org.apache.oltu.oauth2.jwt.JWT;
-import org.apache.oltu.oauth2.jwt.JWTEntity;
-import org.json.JSONStringer;
 
 /**
  * A {@link JWT} writer.
  */
-public final class JWTWriter extends AbstractJWTIO {
-
-    public String write(JWT jwt) {
-        if (jwt == null) {
-            throw new IllegalArgumentException("Impossible to build a Token from a null JWT representation.");
-        }
-
-        String header = write(jwt.getHeader());
-        String encodedHeader = encodeJson(header);
-
-        String claimsSet = write(jwt.getClaimsSet());
-        String encodedClaimsSet = encodeJson(claimsSet);
-
-        String signature = jwt.getSignature();
-        if (signature == null) {
-            signature = "";
-        }
-
-        return new StringBuilder()
-               .append(encodedHeader)
-               .append('.')
-               .append('\r')
-               .append('\n')
-               .append(encodedClaimsSet)
-               .append('.')
-               .append('\r')
-               .append('\n')
-               .append(signature)
-               .toString();
-    }
-
-    /**
-     * Serializes the input JWT Header to its correct JSON representation.
-     *
-     * @param header the JWT Header has to be serialized.
-     * @return the JSON string that represents the JWT Header.
-     */
-    public String write(Header header) {
-        if (header == null) {
-            throw new IllegalArgumentException("Null JWT Header cannot be serialized to JSON representation.");
-        }
-
-        JSONStringer jsonWriter = new JSONStringer();
-        jsonWriter.object();
-
-        setObject(jsonWriter, ALGORITHM, header.getAlgorithm());
-        setObject(jsonWriter, CONTENT_TYPE, header.getContentType());
-        setObject(jsonWriter, TYPE, header.getType());
-
-        return toJsonString(header, jsonWriter);
-    }
-
-    /**
-     * Serializes the input JWT Claims Set to its correct JSON representation.
-     *
-     * @param claimsSet the JWT Claims Set has to be serialized.
-     * @return the JSON string that represents the JWT Claims Set.
-     */
-    public String write(ClaimsSet claimsSet) {
-        if (claimsSet == null) {
-            throw new IllegalArgumentException("Null JWT Claims Set cannot be serialized to JSON representation.");
-        }
-
-        JSONStringer jsonWriter = new JSONStringer();
-        jsonWriter.object();
-
-        setObject(jsonWriter, AUDIENCE, claimsSet.getAudience());
-        setObject(jsonWriter, ISSUER, claimsSet.getIssuer());
-        setObject(jsonWriter, JWT_ID, claimsSet.getJwdId());
-        setObject(jsonWriter, NOT_BEFORE, claimsSet.getNotBefore());
-        setObject(jsonWriter, SUBJECT, claimsSet.getSubject());
-        setObject(jsonWriter, TYPE, claimsSet.getType());
-        setLong(jsonWriter, EXPIRATION_TIME, claimsSet.getExpirationTime());
-        setLong(jsonWriter, ISSUED_AT, claimsSet.getIssuedAt());
-
-        return toJsonString(claimsSet, jsonWriter);
-    }
-
-    private static String toJsonString(JWTEntity entity, JSONStringer jsonWriter) {
-        for (Entry<String, Object> customField : entity.getCustomFields()) {
-            setObject(jsonWriter, customField.getKey(), customField.getValue());
-        }
-
-        return jsonWriter.endObject().toString();
-    }
+public final class JWTWriter extends TokenWriter<JWT> {
 
-    private String encodeJson(String jsonString) {
-        return new String(base64.encode(jsonString.getBytes(UTF_8)), UTF_8);
+    @Override
+    protected String writeHeader(JWT token) {
+        return new JWTHeaderWriter().write(token.getHeader());
     }
 
-    private static void setLong(JSONStringer jsonWriter, String key, long value) {
-        if (value != 0) {
-            jsonWriter.key(key).value(value);
-        }
+    @Override
+    protected String writeBody(JWT token) {
+        return new JWTClaimsSetWriter().write(token.getClaimsSet());
     }
 
-    private static void setObject(JSONStringer jsonWriter, String key, Object value) {
-        if (value != null) {
-            jsonWriter.key(key).value(value);
-        }
+    @Override
+    protected String writeSignature(JWT token) {
+        return token.getSignature();
     }
 
 }

Modified: oltu/trunk/oauth-2.0/jwt/src/test/java/org/apache/oltu/oauth2/jwt/io/IOTestCaseConstants.java
URL: http://svn.apache.org/viewvc/oltu/trunk/oauth-2.0/jwt/src/test/java/org/apache/oltu/oauth2/jwt/io/IOTestCaseConstants.java?rev=1536690&r1=1536689&r2=1536690&view=diff
==============================================================================
--- oltu/trunk/oauth-2.0/jwt/src/test/java/org/apache/oltu/oauth2/jwt/io/IOTestCaseConstants.java (original)
+++ oltu/trunk/oauth-2.0/jwt/src/test/java/org/apache/oltu/oauth2/jwt/io/IOTestCaseConstants.java Tue Oct 29 12:45:49 2013
@@ -18,18 +18,20 @@ package org.apache.oltu.oauth2.jwt.io;
 
 interface IOTestCaseConstants {
 
-    public final String JWT = "eyJhbGciOiJSUzI1NiIsImtpZCI6ImJlMWRhMGIzNTY3YmQyNjVhMjUwOThmYmNjMmIwOWYyMTM0\r\n"
-                            + "NWIzYTIifQ\r\n"
-                            + ".\r\n"
-                            + "eyJhdWQiOiI3ODg3MzIzNzIwNzguYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJpc3MiOiJh\r\n"
-                            + "Y2NvdW50cy5nb29nbGUuY29tIiwic3ViIjoiMTA2NDIyNDUzMDgyNDc5OTk4NDI5IiwiZXhwIjox\r\n"
-                            + "MzY2NzMwMjE3LCJpYXQiOjEzNjY3MjYzMTcsImlkIjoiMTA2NDIyNDUzMDgyNDc5OTk4NDI5Iiwi\r\n"
-                            + "dmVyaWZpZWRfZW1haWwiOiJ0cnVlIiwiZW1haWxfdmVyaWZpZWQiOiJ0cnVlIiwiY2lkIjoiNzg4\r\n"
-                            + "NzMyMzcyMDc4LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXpwIjoiNzg4NzMyMzcyMDc4\r\n"
-                            + "LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiZW1haWwiOiJhbnRvbmlvLnNhbnNvQGdtYWls\r\n"
-                            + "LmNvbSIsInRva2VuX2hhc2giOiJMMkk3N2dpQkxrMFJTczB6UTFTdkNBIiwiYXRfaGFzaCI6Ikwy\r\n"
-                            + "STc3Z2lCTGswUlNzMHpRMVN2Q0EifQ\r\n"
-                            + ".\r\n"
-                            + "XWYi5Zj1YWAMGIml_ftoAwmvW1Y7oeybLCpzQrJVuWJpS8L8Vd2TL-RTIOEVG03VA7e0_-_frNuw7MxUgVEgh8G-Nnbk_baJ6k_3w5c1SKFamFiHHDoKLFhrt1Y8JKSuGwE02V-px4Cn0dRAQAc1IN5CU6wqCrYK0p-fv_fvy28";
+    public final String JWT = "eyJhbGciOiJSUzI1NiIsImtpZCI6ImJlMWRhMGIzNTY3YmQyNjVhMjUwOThmYmNjMmIwOWYyMTM0"
+                            + "NWIzYTIifQ"
+                            + "."
+                            + "eyJhdWQiOiI3ODg3MzIzNzIwNzguYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJpc3MiOiJh"
+                            + "Y2NvdW50cy5nb29nbGUuY29tIiwic3ViIjoiMTA2NDIyNDUzMDgyNDc5OTk4NDI5IiwiZXhwIjox"
+                            + "MzY2NzMwMjE3LCJpYXQiOjEzNjY3MjYzMTcsImlkIjoiMTA2NDIyNDUzMDgyNDc5OTk4NDI5Iiwi"
+                            + "dmVyaWZpZWRfZW1haWwiOiJ0cnVlIiwiZW1haWxfdmVyaWZpZWQiOiJ0cnVlIiwiY2lkIjoiNzg4"
+                            + "NzMyMzcyMDc4LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXpwIjoiNzg4NzMyMzcyMDc4"
+                            + "LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiZW1haWwiOiJhbnRvbmlvLnNhbnNvQGdtYWls"
+                            + "LmNvbSIsInRva2VuX2hhc2giOiJMMkk3N2dpQkxrMFJTczB6UTFTdkNBIiwiYXRfaGFzaCI6Ikwy"
+                            + "STc3Z2lCTGswUlNzMHpRMVN2Q0EifQ"
+                            + "."
+                            + "WFdZaTVaajFZV0FNR0ltbF9mdG9Bd212VzFZN29leWJMQ3B6UXJKVnVXSnBTOEw4VmQyVEwtUlRJ"
+                            + "T0VWRzAzVkE3ZTBfLV9mck51dzdNeFVnVkVnaDhHLU5uYmtfYmFKNmtfM3c1YzFTS0ZhbUZpSEhE"
+                            + "b0tMRmhydDFZOEpLU3VHd0UwMlYtcHg0Q24wZFJBUUFjMUlONUNVNndxQ3JZSzBwLWZ2X2Z2eTI4";
 
 }

Modified: oltu/trunk/oauth-2.0/jwt/src/test/java/org/apache/oltu/oauth2/jwt/io/JWTWriterTestCase.java
URL: http://svn.apache.org/viewvc/oltu/trunk/oauth-2.0/jwt/src/test/java/org/apache/oltu/oauth2/jwt/io/JWTWriterTestCase.java?rev=1536690&r1=1536689&r2=1536690&view=diff
==============================================================================
--- oltu/trunk/oauth-2.0/jwt/src/test/java/org/apache/oltu/oauth2/jwt/io/JWTWriterTestCase.java (original)
+++ oltu/trunk/oauth-2.0/jwt/src/test/java/org/apache/oltu/oauth2/jwt/io/JWTWriterTestCase.java Tue Oct 29 12:45:49 2013
@@ -46,7 +46,7 @@ public final class JWTWriterTestCase imp
                           // signature
                           .setSignature("XWYi5Zj1YWAMGIml_ftoAwmvW1Y7oeybLCpzQrJVuWJpS8L8Vd2TL-RTIOEVG03VA7e0_-_frNuw7MxUgVEgh8G-Nnbk_baJ6k_3w5c1SKFamFiHHDoKLFhrt1Y8JKSuGwE02V-px4Cn0dRAQAc1IN5CU6wqCrYK0p-fv_fvy28")
                           .build();
-        String encodedJWT = new JWTWriter().write(jwt);
+        String encodedJWT = new JWTWriter().write(jwt).replaceAll("\r?\n", "");;
         assertEquals(JWT, encodedJWT);
     }
 

Modified: oltu/trunk/pom.xml
URL: http://svn.apache.org/viewvc/oltu/trunk/pom.xml?rev=1536690&r1=1536689&r2=1536690&view=diff
==============================================================================
--- oltu/trunk/pom.xml (original)
+++ oltu/trunk/pom.xml Tue Oct 29 12:45:49 2013
@@ -33,6 +33,7 @@
 
   <modules>
     <module>parent</module>
+    <module>commons</module>
     <module>oauth-2.0</module>
     <module>openid-connect</module>
     <module>jose</module>