Copyright (c) 2019 Stephane Bastian This program and the accompanying materials are made available under the 2 terms of the Eclipse Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0. SPDX-License-Identifier: EPL-2.0 3 Contributors: 4 Stephane Bastian - initial API and implementation
/******************************************************************************** * Copyright (c) 2019 Stephane Bastian * * This program and the accompanying materials are made available under the 2 * terms of the Eclipse Public License 2.0 which is available at * http://www.eclipse.org/legal/epl-2.0. * * SPDX-License-Identifier: EPL-2.0 3 * * Contributors: 4 * Stephane Bastian - initial API and implementation ********************************************************************************/
package io.vertx.ext.auth.authorization.impl; import java.util.Objects; import io.vertx.core.json.JsonObject; import io.vertx.ext.auth.authorization.AndAuthorization; import io.vertx.ext.auth.authorization.Authorization; import io.vertx.ext.auth.authorization.NotAuthorization; import io.vertx.ext.auth.authorization.OrAuthorization; import io.vertx.ext.auth.authorization.PermissionBasedAuthorization; import io.vertx.ext.auth.authorization.RoleBasedAuthorization; import io.vertx.ext.auth.authorization.WildcardPermissionBasedAuthorization; public class AuthorizationConverter { public static Authorization decode(JsonObject json) throws IllegalArgumentException { Objects.requireNonNull(json); Authorization result = AndAuthorizationConverter.decode(json); if (result == null) { result = NotAuthorizationConverter.decode(json); if (result == null) { result = OrAuthorizationConverter.decode(json); if (result == null) { result = PermissionBasedAuthorizationConverter.decode(json); if (result == null) { result = RoleBasedAuthorizationConverter.decode(json); if (result == null) { result = WildcardPermissionBasedAuthorizationConverter.decode(json); } } } } } return result; } public static JsonObject encode(Authorization value) throws IllegalArgumentException { Objects.requireNonNull(value); // decide which JsonCodec we should use if (value instanceof AndAuthorization) { return AndAuthorizationConverter.encode((AndAuthorization) value); } else if (value instanceof NotAuthorization) { return NotAuthorizationConverter.encode((NotAuthorization) value); } else if (value instanceof OrAuthorization) { return OrAuthorizationConverter.encode((OrAuthorization) value); } else if (value instanceof PermissionBasedAuthorization) { return PermissionBasedAuthorizationConverter.encode((PermissionBasedAuthorization) value); } else if (value instanceof RoleBasedAuthorization) { return RoleBasedAuthorizationConverter.encode((RoleBasedAuthorization) value); } else if (value instanceof WildcardPermissionBasedAuthorization) { return WildcardPermissionBasedAuthorizationConverter.encode((WildcardPermissionBasedAuthorization) value); } else { throw new IllegalArgumentException("Unsupported authorization " + value.getClass()); } } }