/* * Copyright (C) 2014 jsonwebtoken.io * * Licensed 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 io.jsonwebtoken; import io.jsonwebtoken.impl.DefaultClaims; import io.jsonwebtoken.impl.DefaultHeader; import io.jsonwebtoken.impl.DefaultJwsHeader; import io.jsonwebtoken.impl.DefaultJwtBuilder; import io.jsonwebtoken.impl.DefaultJwtParser; import java.util.Map; /** * Factory class useful for creating instances of JWT interfaces. Using this factory class can be a good * alternative to tightly coupling your code to implementation classes. * * @since 0.1 */ public final class Jwts { private Jwts(){} /** * Creates a new {@link Header} instance suitable for <em>plaintext</em> (not digitally signed) JWTs. As this * is a less common use of JWTs, consider using the {@link #jwsHeader()} factory method instead if you will later * digitally sign the JWT. * * @return a new {@link Header} instance suitable for <em>plaintext</em> (not digitally signed) JWTs. */ public static Header header() { return new DefaultHeader(); } /** * Creates a new {@link Header} instance suitable for <em>plaintext</em> (not digitally signed) JWTs, populated * with the specified name/value pairs. As this is a less common use of JWTs, consider using the * {@link #jwsHeader(java.util.Map)} factory method instead if you will later digitally sign the JWT. * * @return a new {@link Header} instance suitable for <em>plaintext</em> (not digitally signed) JWTs. */ public static Header header(Map<String, Object> header) { return new DefaultHeader(header); } /** * Returns a new {@link JwsHeader} instance suitable for digitally signed JWTs (aka 'JWS's). * * @return a new {@link JwsHeader} instance suitable for digitally signed JWTs (aka 'JWS's). * @see JwtBuilder#setHeader(Header) */ public static JwsHeader jwsHeader() { return new DefaultJwsHeader(); } /** * Returns a new {@link JwsHeader} instance suitable for digitally signed JWTs (aka 'JWS's), populated with the * specified name/value pairs. * * @return a new {@link JwsHeader} instance suitable for digitally signed JWTs (aka 'JWS's), populated with the * specified name/value pairs. * @see JwtBuilder#setHeader(Header) */ public static JwsHeader jwsHeader(Map<String, Object> header) { return new DefaultJwsHeader(header); } /** * Returns a new {@link Claims} instance to be used as a JWT body. * * @return a new {@link Claims} instance to be used as a JWT body. */ public static Claims claims() { return new DefaultClaims(); } /** * Returns a new {@link Claims} instance populated with the specified name/value pairs. * * @param claims the name/value pairs to populate the new Claims instance. * @return a new {@link Claims} instance populated with the specified name/value pairs. */ public static Claims claims(Map<String, Object> claims) { return new DefaultClaims(claims); } /** * Returns a new {@link JwtParser} instance that can be configured and then used to parse JWT strings. * * @return a new {@link JwtParser} instance that can be configured and then used to parse JWT strings. */ public static JwtParser parser() { return new DefaultJwtParser(); } /** * Returns a new {@link JwtBuilder} instance that can be configured and then used to create JWT compact serialized * strings. * * @return a new {@link JwtBuilder} instance that can be configured and then used to create JWT compact serialized * strings. */ public static JwtBuilder builder() { return new DefaultJwtBuilder(); } }