package eu.dnetlib.iis.wf.importer.facade;
import java.util.Collections;
import javax.xml.ws.wsaddressing.W3CEndpointReference;
import org.apache.log4j.Logger;
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpDocumentNotFoundException;
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
import eu.dnetlib.enabling.resultset.client.ResultSetClientFactory;
import eu.dnetlib.enabling.tools.JaxwsServiceResolverImpl;
/**
* WebService based database facade.
*
* @author mhorst
*
*/
public class WebServiceISLookupFacade extends AbstractResultSetAwareWebServiceFacade<ISLookUpService> implements ISLookupFacade {
private static final Logger log = Logger.getLogger(WebServiceISLookupFacade.class);
//------------------------ CONSTRUCTORS -------------------
/**
* @param serviceLocation database service location
* @param serviceReadTimeout service read timeout
* @param serviceConnectionTimeout service connection timeout
* @param resultSetReadTimeout result set providing database results read timeout
* @param resultSetConnectionTimeout result set connection timeout
* @param resultSetPageSize result set data chunk size
*/
public WebServiceISLookupFacade(String serviceLocation,
long serviceReadTimeout, long serviceConnectionTimeout,
long resultSetReadTimeout, long resultSetConnectionTimeout, int resultSetPageSize) {
super(ISLookUpService.class, serviceLocation,
serviceReadTimeout, serviceConnectionTimeout,
resultSetReadTimeout, resultSetConnectionTimeout, resultSetPageSize);
}
//------------------------ LOGIC --------------------------
@Override
public Iterable<String> searchProfile(String xPathQuery) throws ServiceFacadeException {
try {
W3CEndpointReference eprResult = getService().searchProfile(xPathQuery);
// obtaining resultSet
ResultSetClientFactory rsFactory = new ResultSetClientFactory(
getResultSetPageSize(), getResultSetReadTimeout(), getResultSetConnectionTimeout());
rsFactory.setServiceResolver(new JaxwsServiceResolverImpl());
return rsFactory.getClient(eprResult);
} catch (ISLookUpDocumentNotFoundException e) {
log.error("unable to find profile for query: " + xPathQuery, e);
return Collections.emptyList();
} catch (ISLookUpException e) {
throw new ServiceFacadeException("searching profiles in ISLookup failed with query '" + xPathQuery + "'", e);
}
}
}