UmaPendingRequest.java revision c3d3be4f90025a8d2cae4bb1e00b9d74a23c1e1a
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder/*
e9458b1a7a19a63aa4c179f9ab20f4d50681c168Jens Elkner * The contents of this file are subject to the terms of the Common Development and
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder * Distribution License (the License). You may not use this file except in compliance with the
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder * License.
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder *
92ae4d5885ea837ffe3dae9b2de742f871229b94Christian Maeder * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder * specific language governing permission and limitations under the License.
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder *
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder * When distributing Covered Software, include this CDDL Header Notice in each file and include
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
92ae4d5885ea837ffe3dae9b2de742f871229b94Christian Maeder * Header, with the fields enclosed by brackets [] replaced by your own identifying
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder * information: "Portions copyright [year] [name of copyright owner]".
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder *
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder * Copyright 2015 ForgeRock AS.
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder */
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maederpackage org.forgerock.openam.sm.datalayer.impl.uma;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maederimport static org.forgerock.json.fluent.JsonValue.*;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maederimport java.util.Calendar;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maederimport java.util.Set;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maederimport org.forgerock.json.fluent.JsonValue;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maederimport org.forgerock.openam.tokens.CoreTokenField;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maederimport org.forgerock.openam.tokens.Field;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maederimport org.forgerock.openam.tokens.JsonValueToJsonBytesConverter;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maederimport org.forgerock.openam.tokens.TokenType;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maederimport org.forgerock.openam.tokens.Type;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maederimport org.forgerock.opendj.ldap.GeneralizedTime;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder/**
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder * A data layer persistent object for UMA Pending requests.
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder *
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder * @since 13.0.0
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder */
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder@Type(TokenType.UMA_PENDING_REQUEST)
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maederpublic class UmaPendingRequest {
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder public static final String RESOURCE_SET_ID_FIELD = "resourceSetId";
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder public static final String RESOURCE_OWNER_ID_FIELD = "resourceOwnerId";
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder public static final String REALM_FIELD = "realm";
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder public static final String REQUESTING_PARTY_ID_FIELD = "requestingPartyId";
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder @Field(field = CoreTokenField.TOKEN_ID, generated = true)
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder private String id;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder @Field(field = CoreTokenField.STRING_ONE)
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder private String resourceSetId;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder @Field(field = CoreTokenField.STRING_TWO)
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder private String resourceSetName;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder @Field(field = CoreTokenField.USER_ID)
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder private String resourceOwnerId;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder @Field(field = CoreTokenField.STRING_THREE)
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder private String realm;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder @Field(field = CoreTokenField.STRING_FOUR)
abdc8c3bcf5b761e9bebf51e6ba2bce659d29512Eugen Kuksa private String requestingPartyId;
abdc8c3bcf5b761e9bebf51e6ba2bce659d29512Eugen Kuksa @Field(field = CoreTokenField.BLOB, converter = JsonValueToJsonBytesConverter.class)
0a26144c20fa9cdcd05011ca5019cbac8e4afae0cmaeder private JsonValue blob;
0a26144c20fa9cdcd05011ca5019cbac8e4afae0cmaeder
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder public UmaPendingRequest() {
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder this.blob = json(object(
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder field("requestedAt", GeneralizedTime.valueOf(Calendar.getInstance()).toString())));
9bcf1494c01dd2ac6286859bfadcec57e57e417eChristian Maeder }
ea5ccb1c6e89486a54e1f4bd95840147e96093edChristian Maeder
b1f2971b105e6da3f4722315e0a0e2abef96e66fcmaeder public UmaPendingRequest(String resourceSetId, String resourceSetName, String resourceOwnerId, String realm,
9cdf614df292d5984d9ffa69755e7e039f328116Christian Maeder String requestingPartyId, Set<String> scopes) {
b1f2971b105e6da3f4722315e0a0e2abef96e66fcmaeder this.resourceSetId = resourceSetId;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder this.resourceSetName = resourceSetName;
ea5ccb1c6e89486a54e1f4bd95840147e96093edChristian Maeder this.resourceOwnerId = resourceOwnerId;
bd90cf050d470eb42f6e0b79327cc53bd0f80dc9Christian Maeder this.realm = realm;
ea5ccb1c6e89486a54e1f4bd95840147e96093edChristian Maeder this.requestingPartyId = requestingPartyId;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder this.blob = json(object(
ea5ccb1c6e89486a54e1f4bd95840147e96093edChristian Maeder field("scopes", scopes),
024703c9d1326c23e307c0b0d453ed3358e87fe4cmaeder field("requestedAt", GeneralizedTime.valueOf(Calendar.getInstance()).toString())));
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder }
9d50556254571c0811e94b4d948463754812a5aaChristian Maeder
9d50556254571c0811e94b4d948463754812a5aaChristian Maeder public String getId() {
9d50556254571c0811e94b4d948463754812a5aaChristian Maeder return id;
c24f7998fe7dfca4277f83076a119aabfe6186a0mcodescu }
c24f7998fe7dfca4277f83076a119aabfe6186a0mcodescu
92ae4d5885ea837ffe3dae9b2de742f871229b94Christian Maeder public void setId(String id) {
92ae4d5885ea837ffe3dae9b2de742f871229b94Christian Maeder this.id = id;
c24f7998fe7dfca4277f83076a119aabfe6186a0mcodescu }
92ae4d5885ea837ffe3dae9b2de742f871229b94Christian Maeder
92ae4d5885ea837ffe3dae9b2de742f871229b94Christian Maeder public String getResourceSetId() {
92ae4d5885ea837ffe3dae9b2de742f871229b94Christian Maeder return resourceSetId;
92ae4d5885ea837ffe3dae9b2de742f871229b94Christian Maeder }
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder
92ae4d5885ea837ffe3dae9b2de742f871229b94Christian Maeder public void setResourceSetId(String resourceSetId) {
410e197a44a0d162c81cc4cadaa2cb39918adb44Christian Maeder this.resourceSetId = resourceSetId;
410e197a44a0d162c81cc4cadaa2cb39918adb44Christian Maeder }
4ded733c298c9fd95db25858b897da482f4ab3e7Eugen Kuksa
4ded733c298c9fd95db25858b897da482f4ab3e7Eugen Kuksa public String getResourceSetName() {
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder return resourceSetName;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder }
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder public void setResourceSetName(String resourceSetName) {
fcd8dd6d9029180ae5e777e94a973c5e355a55cfcmaeder this.resourceSetName = resourceSetName;
fcd8dd6d9029180ae5e777e94a973c5e355a55cfcmaeder }
fcd8dd6d9029180ae5e777e94a973c5e355a55cfcmaeder
fcd8dd6d9029180ae5e777e94a973c5e355a55cfcmaeder public String getResourceOwnerId() {
f38daac5bc3e8affe17311c27ba0e6c59c33cfd2Christian Maeder return resourceOwnerId;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder }
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder
ededd73cb5d833576d271db4a1262895e142bddeChristian Maeder public void setResourceOwnerId(String resourceOwnerId) {
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder this.resourceOwnerId = resourceOwnerId;
7f150d7930b47c297e184638ecd811b3656b0dadChristian Maeder }
7f150d7930b47c297e184638ecd811b3656b0dadChristian Maeder
7f150d7930b47c297e184638ecd811b3656b0dadChristian Maeder public String getRealm() {
9b3e946be44391d35acb2168f4e67d629e560f79Till Mossakowski return realm;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder }
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder public void setRealm(String realm) {
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder this.realm = realm;
9b3e946be44391d35acb2168f4e67d629e560f79Till Mossakowski }
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder
5727dbcb926ede2e7b05f43685476ce656ce01e4Christian Maeder public String getRequestingPartyId() {
5727dbcb926ede2e7b05f43685476ce656ce01e4Christian Maeder return requestingPartyId;
2f0ca8050a33fbc1a23c0bd2dec0d09c17e3c548Christian Maeder }
2f0ca8050a33fbc1a23c0bd2dec0d09c17e3c548Christian Maeder
ca3e283fa3522032a03f9d704bd243af1e28b1adcmaeder public void setRequestingPartyId(String requestingPartyId) {
ca3e283fa3522032a03f9d704bd243af1e28b1adcmaeder this.requestingPartyId = requestingPartyId;
b1f2971b105e6da3f4722315e0a0e2abef96e66fcmaeder }
ca3e283fa3522032a03f9d704bd243af1e28b1adcmaeder
ca3e283fa3522032a03f9d704bd243af1e28b1adcmaeder public JsonValue getBlob() {
b1f2971b105e6da3f4722315e0a0e2abef96e66fcmaeder return blob;
ca3e283fa3522032a03f9d704bd243af1e28b1adcmaeder }
ca3e283fa3522032a03f9d704bd243af1e28b1adcmaeder
2e13d910181e056190ae583db81c7479e0fbf648cmaeder public void setBlob(JsonValue blob) {
ca3e283fa3522032a03f9d704bd243af1e28b1adcmaeder this.blob = blob;
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder }
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder
5606c84ebef3de545602e215bbd87931334d48f0mcodescu public Set<String> getScopes() {
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder return blob.get("scopes").asSet(String.class);
22bb4a9063684a0f37dd7d0e6b21086adcc1e789Christian Maeder }
10eaa95e20c860acbfbecd6cf07e3ae0bf7b55cbSimon Ulbricht
0b144823976d79a34bff62f7f9ec032e80b8ce85Simon Ulbricht public Calendar getRequestedAt() {
abdc8c3bcf5b761e9bebf51e6ba2bce659d29512Eugen Kuksa return GeneralizedTime.valueOf(blob.get("requestedAt").asString()).toCalendar();
fdae29fce51a3b43f17e1cad0deb0f5381b9d3f6Christian Maeder }
5727dbcb926ede2e7b05f43685476ce656ce01e4Christian Maeder
ccd9cf19d129595770d592d3d0d80c6619f7a141Eugen Kuksa public JsonValue asJson() {
18548c6cc2dff13bf9f5f08b3f6cde6ca914df1dChristian Maeder return json(object(
fdae29fce51a3b43f17e1cad0deb0f5381b9d3f6Christian Maeder field("_id", id),
fdae29fce51a3b43f17e1cad0deb0f5381b9d3f6Christian Maeder field("user", requestingPartyId),
fdae29fce51a3b43f17e1cad0deb0f5381b9d3f6Christian Maeder field("resource", resourceSetName),
fdae29fce51a3b43f17e1cad0deb0f5381b9d3f6Christian Maeder field("when", getRequestedAt()),
fdae29fce51a3b43f17e1cad0deb0f5381b9d3f6Christian Maeder field("permissions", getScopes())));
fdae29fce51a3b43f17e1cad0deb0f5381b9d3f6Christian Maeder }
fdae29fce51a3b43f17e1cad0deb0f5381b9d3f6Christian Maeder}
ccd9cf19d129595770d592d3d0d80c6619f7a141Eugen Kuksa