/**
* 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.rs.security.oauth2.common;
import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.persistence.ElementCollection;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.MapKeyColumn;
import javax.persistence.MappedSuperclass;
/**
* Base Access Token representation
*/
@MappedSuperclass
public abstract class AccessToken implements Serializable {
private static final long serialVersionUID = -5750544301887053480L;
private String tokenKey;
private String tokenType;
private String refreshToken;
private long expiresIn = -1;
private long issuedAt = -1;
private String issuer;
private Map<String, String> parameters = new LinkedHashMap<String, String>();
protected AccessToken() {
}
protected AccessToken(String tokenType, String tokenKey) {
this.tokenType = tokenType;
this.tokenKey = tokenKey;
}
protected AccessToken(String tokenType, String tokenKey,
long expiresIn, long issuedAt) {
this(tokenType, tokenKey);
this.expiresIn = expiresIn;
this.issuedAt = issuedAt;
}
protected AccessToken(String tokenType, String tokenKey,
long expiresIn, long issuedAt,
String refreshToken,
Map<String, String> parameters) {
this(tokenType, tokenKey, expiresIn, issuedAt);
this.refreshToken = refreshToken;
this.parameters = parameters;
}
/**
* Returns the token type such as bearer, mac, etc
* @return the type
*/
public String getTokenType() {
return tokenType;
}
public void setTokenType(String type) {
this.tokenType = type;
}
/**
* Returns the token key
* @return the key
*/
@Id
public String getTokenKey() {
return tokenKey;
}
public void setTokenKey(String key) {
this.tokenKey = key;
}
/**
* Sets the refresh token key the client can use to obtain a new
* access token
* @param refreshToken the refresh token
*/
public void setRefreshToken(String refreshToken) {
this.refreshToken = refreshToken;
}
/**
* Gets the refresh token key the client can use to obtain a new
* access token
* @return the refresh token
*/
public String getRefreshToken() {
return refreshToken;
}
/**
* Gets token parameters
* @return
*/
@ElementCollection(fetch = FetchType.EAGER)
@MapKeyColumn(name = "propName")
public Map<String, String> getParameters() {
return parameters;
}
/**
* The token lifetime
* @return the lifetime, -1 means no 'expires_in' parameter was returned
*/
public long getExpiresIn() {
return expiresIn;
}
public void setExpiresIn(long expiresIn) {
this.expiresIn = expiresIn;
}
public long getIssuedAt() {
return issuedAt;
}
public void setIssuedAt(long issuedAt) {
this.issuedAt = issuedAt;
}
/**
* Sets additional token parameters
* @param parameters the token parameters
*/
public void setParameters(Map<String, String> parameters) {
this.parameters = parameters;
}
public String getIssuer() {
return issuer;
}
public void setIssuer(String issuer) {
this.issuer = issuer;
}
}