X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cadi%2Faaf%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fcadi%2Faaf%2Fv2_0%2FAAFLocator.java;h=a993109ad7abbbe1f5b074492049ebfe8b2877bb;hb=6309ef454e6960d95d13534645e1f15904de6862;hp=ed24b1ee5292becf84458d1a9ba8173b2b387b8a;hpb=3d1706fcbe7f95830ff6fd23cf679ee55c6d0595;p=aaf%2Fauthz.git diff --git a/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AAFLocator.java b/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AAFLocator.java index ed24b1ee..a993109a 100644 --- a/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AAFLocator.java +++ b/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AAFLocator.java @@ -29,6 +29,7 @@ import java.util.LinkedList; import java.util.List; import org.onap.aaf.cadi.Access; +import org.onap.aaf.cadi.Access.Level; import org.onap.aaf.cadi.CadiException; import org.onap.aaf.cadi.LocatorException; import org.onap.aaf.cadi.SecuritySetter; @@ -36,6 +37,7 @@ import org.onap.aaf.cadi.client.Future; import org.onap.aaf.cadi.config.Config; import org.onap.aaf.cadi.config.SecurityInfoC; import org.onap.aaf.cadi.http.HClient; +import org.onap.aaf.cadi.locator.DNSLocator; import org.onap.aaf.cadi.util.FixURIinfo; import org.onap.aaf.cadi.util.Split; import org.onap.aaf.misc.env.APIException; @@ -49,8 +51,12 @@ import locate.v1_0.Endpoints; public class AAFLocator extends AbsAAFLocator { private static RosettaEnv env; - HClient client; + private HClient client; + private HClient lclient; private RosettaDF epsDF; + private DNSLocator locatorLocator; + private Item locatorItem; + public AAFLocator(SecurityInfoC si, URI locatorURI) throws LocatorException { super(si.access, nameFromLocatorURI(locatorURI), 10000L /* Wait at least 10 seconds between refreshes */); @@ -73,13 +79,6 @@ public class AAFLocator extends AbsAAFLocator { sb.append(path[i]); } setPathInfo(sb.toString()); -// URI uri = new URI( -// locatorURI.getScheme(), -// locatorURI.getAuthority(), -// locatorURI.getPath(), -// null, -// null -// ); client = createClient(si.defSS, locatorURI, connectTimeout); } else { client = new HClient(si.defSS, locatorURI, connectTimeout); @@ -89,19 +88,72 @@ public class AAFLocator extends AbsAAFLocator { } catch (APIException /*| URISyntaxException*/ e) { throw new LocatorException(e); } + lclient = new HClient(si.defSS, locatorURI, connectTimeout); if(si.access.willLog(Access.Level.DEBUG)) { si.access.log(Access.Level.DEBUG, "Root URI:",client.getURI()); } + + String dnsString; + if(locatorURI.getPort()<0) { + dnsString=locatorURI.getScheme() + "://" + locatorURI.getHost(); + } else { + dnsString=locatorURI.getScheme() + "://" +locatorURI.getHost()+':'+locatorURI.getPort(); + } + if(dnsString.contains("null")) { // for Testing Purposes, mostly. + locatorLocator = null; + } else { + locatorLocator = new DNSLocator(access, dnsString); + locatorItem = locatorLocator.best(); + } + } + + private URI locatorFail(URI uri) throws LocatorException, URISyntaxException { + locatorLocator.invalidate(locatorItem); + locatorItem = locatorLocator.best(); + URI newURI = locatorLocator.get(locatorItem); + return new URI(uri.getScheme(), + uri.getUserInfo(), + newURI.getHost(), + newURI.getPort(), + uri.getPath(), + uri.getQuery(), + uri.getFragment()); } + protected final int maxIters() { + return locatorLocator.size(); + } + + @Override public boolean refresh() { try { - client.setMethod("GET"); - client.send(); - Future fr = client.futureRead(epsDF, TYPE.JSON); - if (fr.get(client.timeout())) { + int max = locatorLocator.size(); + for(int i=0;i fr = lclient.futureRead(epsDF, TYPE.JSON); + if (fr.get(lclient.timeout())) { List epl = new LinkedList<>(); for (Endpoint endpoint : fr.value.getEndpoint()) { epl.add(new EP(endpoint,latitude,longitude));