* 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.
this.version = (split.length > 1) ? split[1] : access.getProperty(Config.AAF_API_VERSION,Config.AAF_DEFAULT_API_VERSION);
}
}
-
+
/**
* This is the way to setup specialized AAFLocators ahead of time.
* @param preload
*/
public static void setCreator(LocatorCreator lc) {
- locatorCreator = lc;
+ locatorCreator = lc;
}
-
+
public static Locator<URI> create(final String name, final String version) throws LocatorException {
if(locatorCreator==null) {
throw new LocatorException("LocatorCreator is not set");
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;
protected final synchronized void replace(List<EP> 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() {
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);
@Override
public Item best() throws LocatorException {
if (!hasItems()) {
- throw new LocatorException("No Entries found for '" + aaf_locator_uri.toString() + '/' + 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<EP> lep = new ArrayList<>();
EP first = null;
} else {
return new AAFLItem(iter,lep.get(i));
}
-
+
}
}
private final Object[] epa;
private final List<EP> epList;
private int idx;
-
+
public EPIterator(Object[] epa, List<EP> epList) {
this.epa = epa;
this.epList = epList;
}
}
}
-
+
@Override
public Item first() {
Iterator<EP> iter = getIterator();
}
return null;
}
-
+
protected static class AAFLItem implements Item {
private Iterator<EP> iter;
private URI uri;
private EP ep;
-
+
public AAFLItem(Iterator<EP> iter, EP ep) {
this.iter = iter;
this.ep = ep;
uri = ep.uri;
}
-
+
private static EP next(Iterator<EP> iter) {
EP ep=null;
while (iter.hasNext() && (ep==null || !ep.valid)) {
}
return ep;
}
-
+
public String toString() {
return ep==null?"Locator Item Invalid":ep.toString();
}
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());
return 0;
}
}
-
+
@Override
public String toString() {
return distance + ": " + uri + (valid?" valid":" invalidate");
}
}
-
+
/* (non-Javadoc)
* @see org.onap.aaf.cadi.Locator#destroy()
*/
public void destroy() {
// Nothing to do
}
-
+
@Override
public String toString() {
return "AAFLocator for " + name + " on " + getURI();