package eu.dnetlib.enabling.aas.retrievers.resultset;

import javax.xml.ws.wsaddressing.W3CEndpointReference;

import eu.dnetlib.enabling.resultset.rmi.ResultSetService;
import eu.dnetlib.enabling.tools.JaxwsServiceResolverImpl;
import eu.dnetlib.enabling.tools.ServiceResolver;

/**
 * Jaxws based ResultSet provider.
 * Created services client stubs are not being cached.
 * 
 * @author mhorst
 *
 */
public class JaxwsResultSetProvider implements IResultSetProvider {

	
	/**
	 * Threadsafe implementation of service resolver.
	 */
	ServiceResolver serviceResolver;
	
	/**
	 * Default constructor.
	 */
	public JaxwsResultSetProvider() {
		serviceResolver = new JaxwsServiceResolverImpl();
	}
	
	/* (non-Javadoc)
	 * @see eu.dnetlib.enabling.aas.retrievers.resultset.IResultSetProvider#discover(javax.xml.ws.wsaddressing.W3CEndpointReference)
	 */
	@Override
	public ResultSetService discover(W3CEndpointReference epr) {
		return serviceResolver.getService(ResultSetService.class, epr);
	}

	/* (non-Javadoc)
	 * @see eu.dnetlib.enabling.aas.retrievers.resultset.IResultSetProvider#extractId(javax.xml.ws.wsaddressing.W3CEndpointReference)
	 */
	@Override
	public String extractId(W3CEndpointReference epr) {
		return serviceResolver.getResourceIdentifier(epr);
	}

}
