dnet-core/dnet-core-components/src/main/java/eu/dnetlib/enabling/tools/DefaultServiceLocatorLocati...

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;
}
}