Project

General

Profile

1 26600 sandro.lab
package eu.dnetlib.soap.cxf;
2
3
import java.util.Map;
4
5
import javax.xml.namespace.QName;
6
import javax.xml.ws.Endpoint;
7
import javax.xml.ws.wsaddressing.W3CEndpointReference;
8
9
import org.apache.cxf.jaxws.EndpointImpl;
10
import org.springframework.beans.factory.annotation.Required;
11
12
import eu.dnetlib.soap.AbstractEndpointReferenceBuilder;
13
14
/**
15
 * This EndpointReferenceBuilder implementation takes a jaxws endpoint and extracts the cxf endpoint from it.
16
 *
17
 * jaxws endpoints are the most readily available endpoint objects since they constructed from jaxws:endpoint spring
18
 * beans, as shown in the CXF documentation.
19
 *
20
 * Since this implementation forwards the job to CxfEndpointReferenceBuilder, the 'builder' property has to be set:
21
 *
22
 * <pre>
23
 * &lt;bean name=&quot;jaxwsEndpointReferenceBuilder&quot; class=&quot;eu.dnetlib.soap.cxf.JaxwsEndpointReferenceBuilder&quot;
24
 *   p:builder-ref=&quot;cxfEndpointReferenceBuilder&quot; /&gt;
25
 * </pre>
26
 *
27
 * @author marko
28
 * @see CxfEndpointReferenceBuilder
29
 *
30
 */
31
public class JaxwsEndpointReferenceBuilder extends AbstractEndpointReferenceBuilder<Endpoint> {
32
33
	/**
34
	 * required reference to the cxf endpoint builder.
35
	 */
36
	private CxfEndpointReferenceBuilder builder = null;
37
38
	/**
39
	 * simply unpacks the cxf endpoint from the jaxws endpoint and forwards it to CxfEndpointReferenceBuilder.
40
	 *
41
	 * {@inheritDoc}
42
	 *
43
	 * @see eu.dnetlib.soap.EndpointReferenceBuilder#getEndpointReference(java.lang.Object, java.util.Map)
44
	 */
45
	@Override
46
	public W3CEndpointReference getEndpointReference(final Endpoint endpoint, final String referenceParam, final Map<QName, Object> attrs) {
47
		return builder.getEndpointReference(((EndpointImpl) endpoint).getServer().getEndpoint(), referenceParam, attrs);
48
	}
49
50
	public CxfEndpointReferenceBuilder getBuilder() {
51
		return builder;
52
	}
53
54
	@Required
55
	public void setBuilder(final CxfEndpointReferenceBuilder builder) {
56
		this.builder = builder;
57
	}
58
59
	@Override
60
	public String getAddress(Endpoint endpoint) {
61
		return builder.getAddress(((EndpointImpl) endpoint).getServer().getEndpoint());
62
	}
63
64
}