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%2FAbsAAFLocator.java;h=06e2c62d27701b27ccb76eaf20648391707825a4;hb=1296352d8eafee57f982a4342ad79ada4aa56d28;hp=c7246466b8101407b5c96d5c12f26026a84090d7;hpb=762dabc6f9577b5b1a8211dddf38ce34295f22a4;p=aaf%2Fauthz.git diff --git a/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AbsAAFLocator.java b/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AbsAAFLocator.java index c7246466..06e2c62d 100644 --- a/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AbsAAFLocator.java +++ b/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AbsAAFLocator.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -23,6 +23,7 @@ package org.onap.aaf.cadi.aaf.v2_0; import java.net.URI; import java.net.URISyntaxException; +import java.net.UnknownHostException; import java.security.SecureRandom; import java.util.ArrayList; import java.util.Iterator; @@ -32,10 +33,11 @@ import java.util.NoSuchElementException; import org.onap.aaf.cadi.Access; import org.onap.aaf.cadi.Access.Level; +import org.onap.aaf.cadi.CadiException; import org.onap.aaf.cadi.Locator; import org.onap.aaf.cadi.LocatorException; -import org.onap.aaf.cadi.aaf.Defaults; import org.onap.aaf.cadi.config.Config; +import org.onap.aaf.cadi.config.RegistrationPropHolder; import org.onap.aaf.cadi.routing.GreatCircle; import org.onap.aaf.misc.env.Trans; import org.onap.aaf.misc.env.util.Split; @@ -58,23 +60,34 @@ public abstract class AbsAAFLocator implements Locator protected String myhostname; protected int myport; protected final String aaf_locator_host; - protected final URI aaf_locator_uri; + protected URI aaf_locator_uri; private long earliest; private final long refreshWait; public AbsAAFLocator(Access access, String name, final long refreshMin) throws LocatorException { - aaf_locator_host = access.getProperty(Config.AAF_LOCATE_URL, null); - if (aaf_locator_host==null) { - aaf_locator_uri = null; - } else { - try { + RegistrationPropHolder rph; + try { + rph = new RegistrationPropHolder(access, 0); + } catch (UnknownHostException | CadiException e1) { + throw new LocatorException(e1); + } + URI aaf_locator_uri; + try { + aaf_locator_host = rph.replacements(getClass().getSimpleName(),"https://"+Config.AAF_LOCATE_URL_TAG,null,null); + if(aaf_locator_host.endsWith("/locate")) { aaf_locator_uri = new URI(aaf_locator_host); - } catch (URISyntaxException e) { - throw new LocatorException(e); + } else { + aaf_locator_uri = new URI(aaf_locator_host+"/locate"); } + access.printf(Level.INFO, "AbsAAFLocator AAF URI is %s",aaf_locator_uri); + } catch (URISyntaxException e) { + throw new LocatorException(e); } + name = rph.replacements(getClass().getSimpleName(),name, null,null); + access.printf(Level.INFO, "AbsAAFLocator name is %s",aaf_locator_uri); + epList = new LinkedList<>(); refreshWait = refreshMin; @@ -87,12 +100,8 @@ public abstract class AbsAAFLocator implements Locator latitude = Double.parseDouble(lat); longitude = Double.parseDouble(lng); } - if (name.startsWith(Defaults.AAF_NS)) { - String root_ns = access.getProperty(Config.AAF_ROOT_NS, null); - if (root_ns!=null) { - name=name.replace(Defaults.AAF_NS, root_ns); - } - } + + if (name.startsWith("http")) { // simple URL this.name = name; this.version = access.getProperty(Config.AAF_API_VERSION,Config.AAF_DEFAULT_API_VERSION); @@ -101,7 +110,6 @@ public abstract class AbsAAFLocator implements Locator this.name = split[0]; this.version = (split.length > 1) ? split[1] : access.getProperty(Config.AAF_API_VERSION,Config.AAF_DEFAULT_API_VERSION); } - } /** @@ -109,55 +117,13 @@ public abstract class AbsAAFLocator implements Locator * @param preload */ public static void setCreator(LocatorCreator lc) { - locatorCreator = lc; + locatorCreator = lc; } - - /*public static Locator create(String key) throws LocatorException { - String name = null; - String version = Config.AAF_DEFAULT_API_VERSION; - String pathInfo = null; - int prev = key.indexOf("/locate"); - if (prev>0) { - prev = key.indexOf('/',prev+6); - if (prev>0) { - int next = key.indexOf('/',++prev); - if (next>0) { - name = key.substring(prev, next); - pathInfo=key.substring(next); - } else { - name = key.substring(prev); - } - String[] split = Split.split(':', name); - switch(split.length) { - case 3: - case 2: - version = split[1]; - name = split[0]; - break; - default: - break; - } - } - } - if (key.startsWith("http")) { - if (name!=null) { - if (locatorCreator != null) { - AbsAAFLocator aal = locatorCreator.create(name, version); - if (pathInfo!=null) { - aal.setPathInfo(pathInfo); - } - return aal; - } - } else { - return new PropertyLocator(key); - } - } - return null; - } - */ - public static Locator create(final String name, final String version) throws LocatorException { + if(locatorCreator==null) { + throw new LocatorException("LocatorCreator is not set"); + } return locatorCreator.create(name, version); } @@ -168,15 +134,17 @@ public abstract class AbsAAFLocator implements Locator protected static String nameFromLocatorURI(URI locatorURI) { String[] path = Split.split('/', locatorURI.getPath()); - if (path.length>2 && "locate".equals(path[1])) { - return path[2]; + if (path.length>1 && "locate".equals(path[1])) { + return path[2]; + } else if(path.length>1) { + return path[1]; } else { return locatorURI.toString(); } } - + /** - * Setting "self" excludes this service from the list. Critical for contacting peers. + * Setting "self" excludes this service from the list. Critical for contacting peers. */ public void setSelf(final String hostname, final int port) { myhostname=hostname; @@ -193,10 +161,10 @@ public abstract class AbsAAFLocator implements Locator protected final synchronized void replace(List list) { epList = list; } - + /** * Call _refresh as needed during calls, but actual refresh will not occur if there - * are existing entities or if it has been called in the last 10 (settable) seconds. + * are existing entities or if it has been called in the last 10 (settable) seconds. * Timed Refreshes happen by Scheduled Thread */ private final boolean _refresh() { @@ -252,7 +220,7 @@ public abstract class AbsAAFLocator implements Locator public void invalidate(Item item) throws LocatorException { if (item!=null) { if (item instanceof AAFLItem) { - AAFLItem ali =(AAFLItem)item; + AAFLItem ali =(AAFLItem)item; EP ep = ali.ep; synchronized(epList) { epList.remove(ep); @@ -268,7 +236,10 @@ public abstract class AbsAAFLocator implements Locator @Override public Item best() throws LocatorException { if (!hasItems()) { - throw new LocatorException("No Entries found for '" + aaf_locator_uri.toString() + "/locate/" + name + ':' + version + '\''); + throw new LocatorException(String.format("No Entries found for '%s/%s:%s'", + (aaf_locator_uri==null?aaf_locator_host:aaf_locator_uri.toString()), + name, + version)); } List lep = new ArrayList<>(); EP first = null; @@ -303,7 +274,7 @@ public abstract class AbsAAFLocator implements Locator } else { return new AAFLItem(iter,lep.get(i)); } - + } } @@ -320,7 +291,7 @@ public abstract class AbsAAFLocator implements Locator private final Object[] epa; private final List epList; private int idx; - + public EPIterator(Object[] epa, List epList) { this.epa = epa; this.epList = epList; @@ -361,7 +332,7 @@ public abstract class AbsAAFLocator implements Locator } } } - + @Override public Item first() { Iterator iter = getIterator(); @@ -404,13 +375,13 @@ public abstract class AbsAAFLocator implements Locator private Iterator iter; private URI uri; private EP ep; - + public AAFLItem(Iterator iter, EP ep) { this.iter = iter; this.ep = ep; uri = ep.uri; } - + private static EP next(Iterator iter) { EP ep=null; while (iter.hasNext() && (ep==null || !ep.valid)) { @@ -418,7 +389,7 @@ public abstract class AbsAAFLocator implements Locator } return ep; } - + public String toString() { return ep==null?"Locator Item Invalid":ep.toString(); } @@ -428,7 +399,7 @@ public abstract class AbsAAFLocator implements Locator private URI uri; private final double distance; private boolean valid; - + public EP(final Endpoint ep, double latitude, double longitude) throws URISyntaxException { uri = new URI(ep.getProtocol(),null,ep.getHostname(),ep.getPort(),null,null,null); distance = GreatCircle.calc(latitude, longitude, ep.getLatitude(), ep.getLongitude()); @@ -449,13 +420,13 @@ public abstract class AbsAAFLocator implements Locator return 0; } } - + @Override public String toString() { return distance + ": " + uri + (valid?" valid":" invalidate"); } } - + /* (non-Javadoc) * @see org.onap.aaf.cadi.Locator#destroy() */ @@ -463,7 +434,7 @@ public abstract class AbsAAFLocator implements Locator public void destroy() { // Nothing to do } - + @Override public String toString() { return "AAFLocator for " + name + " on " + getURI(); @@ -501,5 +472,10 @@ public abstract class AbsAAFLocator implements Locator return rv; } + protected void clear() { + epList.clear(); + earliest=0L; + } + }