aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/util/EndpointFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/util/EndpointFactory.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/util/EndpointFactory.java41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/util/EndpointFactory.java b/src/main/java/at/gv/egiz/moazs/util/EndpointFactory.java
new file mode 100644
index 0000000..24321e1
--- /dev/null
+++ b/src/main/java/at/gv/egiz/moazs/util/EndpointFactory.java
@@ -0,0 +1,41 @@
+package at.gv.egiz.moazs.util;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.interceptor.Interceptor;
+import org.apache.cxf.jaxws.EndpointImpl;
+import org.apache.cxf.message.Message;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import javax.xml.ws.Endpoint;
+
+import javax.xml.ws.Service;
+
+@Component
+public class EndpointFactory {
+
+ private final Bus bus;
+
+ @Autowired
+ public EndpointFactory(Bus bus) {
+ this.bus = bus;
+ }
+
+ public Endpoint create(Object implementor, Service service) {
+ return create(implementor, service, null);
+ }
+
+ public Endpoint create(Object implementor, Service service, Interceptor<Message> interceptor) {
+ EndpointImpl endpoint = new EndpointImpl(bus, implementor);
+ endpoint.setAddress("/");
+ endpoint.setServiceName(service.getServiceName());
+ endpoint.setWsdlLocation(service.getWSDLDocumentLocation().toString());
+ endpoint.publish();
+
+ if (interceptor != null) {
+ endpoint.getInInterceptors().add(interceptor);
+ }
+
+ return endpoint;
+ }
+
+}