/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.jaxws.osgi.bridge;
import com.liferay.registry.Registry;
import com.liferay.registry.RegistryUtil;
import com.liferay.registry.ServiceTracker;
import java.net.URL;
import java.util.List;
import java.util.Map;
import javax.xml.namespace.QName;
import javax.xml.transform.Source;
import javax.xml.ws.Endpoint;
import javax.xml.ws.EndpointReference;
import javax.xml.ws.Service;
import javax.xml.ws.WebServiceFeature;
import javax.xml.ws.spi.Invoker;
import javax.xml.ws.spi.ServiceDelegate;
import javax.xml.ws.wsaddressing.W3CEndpointReference;
import org.w3c.dom.Element;
/**
* @author Carlos Sierra Andrés
*/
public class Provider extends javax.xml.ws.spi.Provider {
public Provider() {
Registry registry = RegistryUtil.getRegistry();
_serviceTracker = registry.trackServices(
javax.xml.ws.spi.Provider.class);
_serviceTracker.open();
}
@Override
public Endpoint createAndPublishEndpoint(
String address, Object implementor) {
javax.xml.ws.spi.Provider provider = getProvider();
return provider.createAndPublishEndpoint(address, implementor);
}
@Override
public Endpoint createAndPublishEndpoint(
String address, Object implementor,
WebServiceFeature... webServiceFeatures) {
javax.xml.ws.spi.Provider provider = getProvider();
return provider.createAndPublishEndpoint(
address, implementor, webServiceFeatures);
}
@Override
public Endpoint createEndpoint(
String bindingId, Class<?> implementorClass, Invoker invoker,
WebServiceFeature... webServiceFeatures) {
javax.xml.ws.spi.Provider provider = getProvider();
return provider.createEndpoint(
bindingId, implementorClass, invoker, webServiceFeatures);
}
@Override
public Endpoint createEndpoint(String bindingId, Object implementor) {
javax.xml.ws.spi.Provider provider = getProvider();
return provider.createEndpoint(bindingId, implementor);
}
@Override
public Endpoint createEndpoint(
String bindingId, Object implementor,
WebServiceFeature... webServiceFeatures) {
javax.xml.ws.spi.Provider provider = getProvider();
return provider.createEndpoint(
bindingId, implementor, webServiceFeatures);
}
@Override
public ServiceDelegate createServiceDelegate(
URL wsdlURL, QName serviceQName,
Class<? extends Service> serviceClass) {
javax.xml.ws.spi.Provider provider = getProvider();
return provider.createServiceDelegate(
wsdlURL, serviceQName, serviceClass);
}
@Override
public ServiceDelegate createServiceDelegate(
URL wsdlURL, QName serviceQName, Class<? extends Service> serviceClass,
WebServiceFeature... webServiceFeatures) {
return getProvider().createServiceDelegate(
wsdlURL, serviceQName, serviceClass, webServiceFeatures);
}
@Override
public W3CEndpointReference createW3CEndpointReference(
String address, QName serviceQName, QName portQName,
List<Element> metadataElements, String wsdlURL,
List<Element> referenceParameterElements) {
javax.xml.ws.spi.Provider provider = getProvider();
return provider.createW3CEndpointReference(
address, serviceQName, portQName, metadataElements, wsdlURL,
referenceParameterElements);
}
@Override
public W3CEndpointReference createW3CEndpointReference(
String address, QName interfaceQName, QName serviceQName,
QName portQName, List<Element> metadata, String wsdlURL,
List<Element> referenceParameters, List<Element> elements,
Map<QName, String> attributes) {
javax.xml.ws.spi.Provider provider = getProvider();
return provider.createW3CEndpointReference(
address, interfaceQName, serviceQName, portQName, metadata, wsdlURL,
referenceParameters, elements, attributes);
}
@Override
public <T> T getPort(
EndpointReference endpointReference, Class<T> serviceEndpointInterface,
WebServiceFeature... webServiceFeatures) {
javax.xml.ws.spi.Provider provider = getProvider();
return provider.getPort(
endpointReference, serviceEndpointInterface, webServiceFeatures);
}
@Override
public EndpointReference readEndpointReference(Source source) {
javax.xml.ws.spi.Provider provider = getProvider();
return provider.readEndpointReference(source);
}
protected javax.xml.ws.spi.Provider getProvider() {
try {
return _serviceTracker.waitForService(10 * 1000L);
}
catch (InterruptedException ie) {
throw new RuntimeException(ie);
}
}
private final ServiceTracker
<javax.xml.ws.spi.Provider, javax.xml.ws.spi.Provider> _serviceTracker;
}