66 lines
1.5 KiB
Java
66 lines
1.5 KiB
Java
package eu.dnetlib.enabling.is.sn;
|
|
|
|
import javax.xml.transform.dom.DOMResult;
|
|
import javax.xml.ws.wsaddressing.W3CEndpointReference;
|
|
import javax.xml.xpath.XPathExpressionException;
|
|
import javax.xml.xpath.XPathFactory;
|
|
|
|
/**
|
|
* Extracts useful low level informations from an EPR, so that these can be encoded in the OAI
|
|
* resumption token.
|
|
*
|
|
* @author michele
|
|
*
|
|
*/
|
|
public final class EPRUtil {
|
|
|
|
/**
|
|
* prevents instantiation.
|
|
*/
|
|
private EPRUtil() {
|
|
// prevents instantiation
|
|
}
|
|
|
|
/**
|
|
* Extracts the service address out of the EPR.
|
|
*
|
|
* @param epr epr
|
|
* @return address
|
|
*/
|
|
public static String getAddress(final W3CEndpointReference epr) {
|
|
return getValue(epr, "Address");
|
|
}
|
|
|
|
/**
|
|
* Extracts the resource identifier out of the EPR.
|
|
* @param epr epr
|
|
* @return resource identifier
|
|
*/
|
|
public static String getResourceIdentifier(final W3CEndpointReference epr) {
|
|
return getValue(epr, "ResourceIdentifier");
|
|
}
|
|
|
|
/**
|
|
* Extracts an element with a given local name out of the resource identifier.
|
|
*
|
|
* @param epr epr
|
|
* @param name element name
|
|
* @return element value
|
|
*/
|
|
private static String getValue(final W3CEndpointReference epr, final String name) {
|
|
final DOMResult dom = new DOMResult();
|
|
epr.writeTo(dom);
|
|
|
|
try {
|
|
return XPathFactory.newInstance().newXPath().evaluate("//*[local-name() = '" + name + "']", dom.getNode());
|
|
} catch (final XPathExpressionException e) {
|
|
throw new IllegalStateException("cannot construct xpath expression", e);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|