diff --git a/src/main/java/org/gcube/common/authorization/client/exceptions/ObjectNotFound.java b/src/main/java/org/gcube/common/authorization/client/exceptions/ObjectNotFound.java new file mode 100644 index 0000000..0d7f988 --- /dev/null +++ b/src/main/java/org/gcube/common/authorization/client/exceptions/ObjectNotFound.java @@ -0,0 +1,27 @@ +package org.gcube.common.authorization.client.exceptions; + +public class ObjectNotFound extends Exception { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public ObjectNotFound() { + super(); + } + + public ObjectNotFound(String message, Throwable cause) { + super(message, cause); + } + + public ObjectNotFound(String message) { + super(message); + } + + public ObjectNotFound(Throwable cause) { + super(cause); + } + + +} diff --git a/src/main/java/org/gcube/common/authorization/client/proxy/AuthorizationProxy.java b/src/main/java/org/gcube/common/authorization/client/proxy/AuthorizationProxy.java index df94269..8e0e21c 100644 --- a/src/main/java/org/gcube/common/authorization/client/proxy/AuthorizationProxy.java +++ b/src/main/java/org/gcube/common/authorization/client/proxy/AuthorizationProxy.java @@ -2,6 +2,7 @@ package org.gcube.common.authorization.client.proxy; import java.util.List; +import org.gcube.common.authorization.client.exceptions.ObjectNotFound; import org.gcube.common.authorization.library.AuthorizationEntry; import org.gcube.common.authorization.library.BannedService; @@ -9,7 +10,7 @@ public interface AuthorizationProxy { String generate(String userName, List roles); - AuthorizationEntry get(String token); + AuthorizationEntry get(String token) throws ObjectNotFound; BannedService deny(String userName, String serviceClass, String serviceName); diff --git a/src/main/java/org/gcube/common/authorization/client/proxy/DefaultAuthorizationProxy.java b/src/main/java/org/gcube/common/authorization/client/proxy/DefaultAuthorizationProxy.java index 448ceb3..e247d43 100644 --- a/src/main/java/org/gcube/common/authorization/client/proxy/DefaultAuthorizationProxy.java +++ b/src/main/java/org/gcube/common/authorization/client/proxy/DefaultAuthorizationProxy.java @@ -14,6 +14,7 @@ import java.util.Map; import org.gcube.common.authorization.client.Binder; import org.gcube.common.authorization.client.Constants; +import org.gcube.common.authorization.client.exceptions.ObjectNotFound; import org.gcube.common.authorization.library.AuthorizationEntry; import org.gcube.common.authorization.library.BannedService; import org.gcube.common.authorization.library.BannedServices; @@ -63,7 +64,7 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy { } @Override - public AuthorizationEntry get(final String token) { + public AuthorizationEntry get(final String token) throws ObjectNotFound{ Call call = new Call() { @Override @@ -71,6 +72,7 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy { URL url = new URL(endpoint+"/retrieve/"+token); HttpURLConnection connection = makeRequest(url, "GET"); + if (connection.getResponseCode()==404) throw new ObjectNotFound("token "+token+" not found"); if (connection.getResponseCode()!=200) throw new Exception("error contacting authorization service"); if (connection.getContentLengthLong()<=0) return null; @@ -86,6 +88,8 @@ public class DefaultAuthorizationProxy implements AuthorizationProxy { return cache.get(token).getEntry(); try { return delegate.make(call); + } catch (ObjectNotFound e) { + throw e; } catch (Exception e) { throw again(e).asServiceException(); } diff --git a/src/test/java/org/gcube/common/authorizationservice/cl/CallTest.java b/src/test/java/org/gcube/common/authorizationservice/cl/CallTest.java index 97a3a16..8b1feda 100644 --- a/src/test/java/org/gcube/common/authorizationservice/cl/CallTest.java +++ b/src/test/java/org/gcube/common/authorizationservice/cl/CallTest.java @@ -5,6 +5,7 @@ import static org.gcube.common.authorization.client.Constants.authorizationServi import java.util.Arrays; import java.util.List; +import org.gcube.common.authorization.client.exceptions.ObjectNotFound; import org.gcube.common.authorization.library.BannedService; import org.gcube.common.scope.api.ScopeProvider; import org.junit.Test; @@ -14,7 +15,11 @@ public class CallTest { @Test public void call(){ ScopeProvider.instance.set("/gcube/devsec"); - System.out.println(authorizationService().build().get("df75336d-0944-4324-b444-c711d21f705b")); + try{ + System.out.println(authorizationService().build().get("fdsafsafsda")); + }catch(ObjectNotFound onf){ + onf.printStackTrace(); + } } @Test