blob: 065e54f4580e204c08e17b765e385c355b04589b [file] [log] [blame]
/*
* 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 javax.security.enterprise.authentication.mechanism.http;
import javax.enterprise.util.AnnotationLiteral;
import javax.enterprise.util.Nonbinding;
import javax.interceptor.InterceptorBinding;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Inherited
@InterceptorBinding
@Retention(RUNTIME)
@Target(TYPE)
public @interface RememberMe {
@Nonbinding
int cookieMaxAgeSeconds() default 86400;
@Nonbinding
String cookieMaxAgeSecondsExpression() default "";
@Nonbinding
boolean cookieSecureOnly() default true;
@Nonbinding
String cookieSecureOnlyExpression() default "";
@Nonbinding
boolean cookieHttpOnly() default true;
@Nonbinding
String cookieHttpOnlyExpression() default "";
@Nonbinding
String cookieName() default "JREMEMBERMEID";
@Nonbinding
boolean isRememberMe() default true;
@Nonbinding
String isRememberMeExpression() default "";
@SuppressWarnings("all")
final class Literal extends AnnotationLiteral<RememberMe> implements RememberMe {
private static final long serialVersionUID = 1L;
private final int cookieMaxAgeSeconds;
private final String cookieMaxAgeSecondsExpression;
private final boolean cookieSecureOnly;
private final String cookieSecureOnlyExpression;
private final boolean cookieHttpOnly;
private final String cookieHttpOnlyExpression;
private final String cookieName;
private final boolean isRememberMe;
private final String isRememberMeExpression;
public static LiteralBuilder builder() {
return new LiteralBuilder();
}
public static class LiteralBuilder {
private int cookieMaxAgeSeconds = 86400;
private String cookieMaxAgeSecondsExpression;
private boolean cookieSecureOnly = true;
private String cookieSecureOnlyExpression;
private boolean cookieHttpOnly = true;
private String cookieHttpOnlyExpression;
private String cookieName = "JREMEMBERMEID";
private boolean isRememberMe = true;
private String isRememberMeExpression;
public LiteralBuilder cookieMaxAgeSeconds(int cookieMaxAgeSeconds) {
this.cookieMaxAgeSeconds = cookieMaxAgeSeconds;
return this;
}
public LiteralBuilder cookieMaxAgeSecondsExpression(String cookieMaxAgeSecondsExpression) {
this.cookieMaxAgeSecondsExpression = cookieMaxAgeSecondsExpression;
return this;
}
public LiteralBuilder cookieSecureOnly(boolean cookieSecureOnly) {
this.cookieSecureOnly = cookieSecureOnly;
return this;
}
public LiteralBuilder cookieSecureOnlyExpression(String cookieSecureOnlyExpression) {
this.cookieSecureOnlyExpression = cookieSecureOnlyExpression;
return this;
}
public LiteralBuilder cookieHttpOnly(boolean cookieHttpOnly) {
this.cookieHttpOnly = cookieHttpOnly;
return this;
}
public LiteralBuilder cookieHttpOnlyExpression(String cookieHttpOnlyExpression) {
this.cookieHttpOnlyExpression = cookieHttpOnlyExpression;
return this;
}
public LiteralBuilder cookieName(String cookieName) {
this.cookieName = cookieName;
return this;
}
public LiteralBuilder isRememberMe(boolean isRememberMe) {
this.isRememberMe = isRememberMe;
return this;
}
public LiteralBuilder isRememberMeExpression(String isRememberMeExpression) {
this.isRememberMeExpression = isRememberMeExpression;
return this;
}
public Literal build() {
return new Literal(
cookieMaxAgeSeconds,
cookieMaxAgeSecondsExpression,
cookieSecureOnly,
cookieSecureOnlyExpression,
cookieHttpOnly,
cookieHttpOnlyExpression,
cookieName,
isRememberMe,
isRememberMeExpression);
}
}
public Literal(int cookieMaxAgeSeconds,
String cookieMaxAgeSecondsExpression,
boolean cookieSecureOnly,
String cookieSecureOnlyExpression,
boolean cookieHttpOnly,
String cookieHttpOnlyExpression,
String cookieName,
boolean isRememberMe,
String isRememberMeExpression) {
this.cookieMaxAgeSeconds = cookieMaxAgeSeconds;
this.cookieMaxAgeSecondsExpression = cookieMaxAgeSecondsExpression;
this.cookieSecureOnly = cookieSecureOnly;
this.cookieSecureOnlyExpression = cookieSecureOnlyExpression;
this.cookieHttpOnly = cookieHttpOnly;
this.cookieHttpOnlyExpression = cookieHttpOnlyExpression;
this.cookieName = cookieName;
this.isRememberMe = isRememberMe;
this.isRememberMeExpression = isRememberMeExpression;
}
@Override
public boolean cookieHttpOnly() {
return cookieHttpOnly;
}
@Override
public String cookieHttpOnlyExpression() {
return cookieHttpOnlyExpression;
}
@Override
public int cookieMaxAgeSeconds() {
return cookieMaxAgeSeconds;
}
@Override
public String cookieMaxAgeSecondsExpression() {
return cookieMaxAgeSecondsExpression;
}
@Override
public boolean cookieSecureOnly() {
return cookieSecureOnly;
}
@Override
public String cookieSecureOnlyExpression() {
return cookieSecureOnlyExpression;
}
@Override
public String cookieName() {
return cookieName;
}
@Override
public boolean isRememberMe() {
return isRememberMe;
}
@Override
public String isRememberMeExpression() {
return isRememberMeExpression;
}
}
}