Merge "K8s doesn't necessarily support DNS"
[aaf/authz.git] / cadi / client / src / main / java / org / onap / aaf / cadi / locator / SingleEndpointLocator.java
index b0c830f..b0654cf 100644 (file)
@@ -22,61 +22,79 @@ package org.onap.aaf.cadi.locator;
 
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.Date;
 
-import org.onap.aaf.cadi.Locator;
 import org.onap.aaf.cadi.LocatorException;
 
-public class SingleEndpointLocator implements Locator<URI> {
-       private final URI uri;
-       private final static Item item = new Item() {};  
-       
-       public SingleEndpointLocator(final URI uri) {
-               this.uri = uri;
-       }
-       
-       public SingleEndpointLocator(final String endpoint) throws URISyntaxException {
-               this.uri = new URI(endpoint);
-       }
+public class SingleEndpointLocator implements SizedLocator<URI> {
+    private final URI uri;
+    private final static Item item = new Item() {};  
+    private Date noRetryUntil;
+    
+    public SingleEndpointLocator(final URI uri) {
+        this.uri = uri;
+    }
+    
+    public SingleEndpointLocator(final String endpoint) throws LocatorException {
+        try {
+                       this.uri = new URI(endpoint);
+               } catch (URISyntaxException e) {
+                       throw new LocatorException(e);
+               }
+    }
 
-       @Override
-       public URI get(Item item) throws LocatorException {
-               return uri;
-       }
+    @Override
+    public URI get(Item item) throws LocatorException {
+        return uri;
+    }
 
-       @Override
-       public boolean hasItems() {
-               return true;
-       }
+    @Override
+    public boolean hasItems() {
+        if (noRetryUntil!=null) {
+            if (new Date().after(noRetryUntil)) {
+                noRetryUntil = null;
+            } else {
+                return false;
+            }
+        }
+        return true;
+    }
 
-       @Override
-       public void invalidate(Item item) throws LocatorException {
-               // Endpoints cannot be invalidated
-       }
+    @Override
+    public void invalidate(Item item) throws LocatorException {
+        // one minute timeout, because there is no other item
+        noRetryUntil = new Date(System.currentTimeMillis()+60000); 
+    }
 
-       @Override
-       public Item best() throws LocatorException {
-               return item;
-       }
+    @Override
+    public Item best() throws LocatorException {
+        return item;
+    }
 
-       @Override
-       public Item first() throws LocatorException {
-               return item;
-       }
+    @Override
+    public Item first() throws LocatorException {
+        return item;
+    }
 
-       @Override
-       public Item next(Item inItem) throws LocatorException {
-               // only one item
-               return null;
-       }
+    @Override
+    public Item next(Item inItem) throws LocatorException {
+        // only one item
+        return null;
+    }
 
-       @Override
-       public boolean refresh() {
-               // Never refreshed
-               return true;
-       }
+    @Override
+    public boolean refresh() {
+        // Never refreshed
+        return true;
+    }
+    
+    @Override
+    public int size() {
+       return 1;
+    }
 
-       @Override
-       public void destroy() {
-               // Nothing to do here
-       }
+    @Override
+    public void destroy() {
+        // Nothing to do here
+    }
 }