108 lines
2.6 KiB
Java
108 lines
2.6 KiB
Java
package eu.dnetlib.enabling.tools;
|
|
|
|
import java.net.MalformedURLException;
|
|
import java.net.URL;
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import eu.dnetlib.soap.cxf.StandaloneCxfEndpointReferenceBuilder;
|
|
|
|
/**
|
|
* Assign better scores for near services. Can be configured.
|
|
*
|
|
* @author marko
|
|
*
|
|
*/
|
|
@Deprecated
|
|
public class DefaultServiceLocatorLocationScorer implements DynamicServiceLocatorLocationScorer {
|
|
|
|
/**
|
|
* default score assigned when the other service has the same host.
|
|
*/
|
|
private static final int LOCAL_HOST_SCORE = 5;
|
|
|
|
/**
|
|
* default score assigned when the other service has the same host and port (same container).
|
|
*/
|
|
private static final int LOCAL_PORT_SCORE = 10;
|
|
|
|
/**
|
|
* default score assigned when the other service has the same host and port (same container and context).
|
|
*/
|
|
private static final int LOCAL_SRV_SCORE = 15;
|
|
|
|
|
|
/**
|
|
* score assigned when the other service has the same host.
|
|
*/
|
|
private int localHostScore = LOCAL_HOST_SCORE;
|
|
|
|
/**
|
|
* score assigned when the other service has the same host and port (same container).
|
|
*/
|
|
private int localPortScore = LOCAL_PORT_SCORE;
|
|
|
|
/**
|
|
* score assigned when the other service has the same host and port (same container and context).
|
|
*/
|
|
private int localSrvScore = LOCAL_SRV_SCORE;
|
|
|
|
/**
|
|
* build epr.
|
|
*/
|
|
@Resource
|
|
private StandaloneCxfEndpointReferenceBuilder eprBuilder;
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
* @throws MalformedURLException
|
|
* @see eu.dnetlib.enabling.tools.DynamicServiceLocatorLocationScorer#score(java.net.URL)
|
|
*/
|
|
@Override
|
|
public int score(final URL url) throws MalformedURLException {
|
|
final URL localBase = new URL(eprBuilder.getBaseAddress());
|
|
if (url.toString().startsWith(localBase.toString()))
|
|
return localSrvScore;
|
|
|
|
if (localBase.getHost().equals(url.getHost())) {
|
|
if (localBase.getPort() == url.getPort())
|
|
return localPortScore;
|
|
return localHostScore;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public StandaloneCxfEndpointReferenceBuilder getEprBuilder() {
|
|
return eprBuilder;
|
|
}
|
|
|
|
public void setEprBuilder(final StandaloneCxfEndpointReferenceBuilder eprBuilder) {
|
|
this.eprBuilder = eprBuilder;
|
|
}
|
|
|
|
public int getLocalHostScore() {
|
|
return localHostScore;
|
|
}
|
|
|
|
public void setLocalHostScore(final int localHostScore) {
|
|
this.localHostScore = localHostScore;
|
|
}
|
|
|
|
public int getLocalPortScore() {
|
|
return localPortScore;
|
|
}
|
|
|
|
public void setLocalPortScore(final int localPortScore) {
|
|
this.localPortScore = localPortScore;
|
|
}
|
|
|
|
public int getLocalSrvScore() {
|
|
return localSrvScore;
|
|
}
|
|
|
|
public void setLocalSrvScore(final int localSrvScore) {
|
|
this.localSrvScore = localSrvScore;
|
|
}
|
|
|
|
}
|