in engines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java [258:406]
public void validate() throws DeploymentException {
if (getPojo() == null) {
// check if the POJO attribute is given.
throw new DeploymentException("pojo attribute is mandatory.");
}
// construct the JBI address
String address = "jbi://" + ID_GENERATOR.generateSanitizedId();
// construct the CXF server (using JAXB or Aegis)
if (isUseAegis()) {
sf = new ServerFactoryBean();
sf.setServiceBean(getPojo());
sf.setAddress(address);
if (getDataBinding() != null && getDataBinding() instanceof AegisDatabinding) {
sf.getServiceFactory().setDataBinding(getDataBinding());
} else {
sf.getServiceFactory().setDataBinding(new AegisDatabinding());
}
sf.getServiceFactory().setPopulateFromClass(true);
sf.setStart(false);
if (isUseJBIWrapper()) {
sf.setBindingId(org.apache.servicemix.cxf.binding.jbi.JBIConstants.NS_JBI_BINDING);
}
if (getPojoService() != null) {
sf.setServiceName(getPojoService());
}
if (getPojoEndpoint() != null) {
sf.setEndpointName(getPojoEndpoint());
}
cleanUpDeadDestination();
server = sf.create();
server.getEndpoint().getInInterceptors().addAll(getInInterceptors());
server.getEndpoint().getInFaultInterceptors().addAll(getInFaultInterceptors());
server.getEndpoint().getOutInterceptors().addAll(getOutInterceptors());
server.getEndpoint().getOutFaultInterceptors().addAll(getOutFaultInterceptors());
if (isMtomEnabled()) {
server.getEndpoint().getInInterceptors().add(new AttachmentInInterceptor());
server.getEndpoint().getOutInterceptors().add(new AttachmentOutInterceptor());
}
if (sf.getServiceFactory().getServiceQName() != null) {
if (getPojoService() == null) {
setPojoService(sf.getServiceFactory().getServiceQName());
}
if (getService() == null) {
setService(sf.getServiceFactory().getServiceQName());
}
}
if (sf.getServiceFactory().getEndpointInfo().getName() != null) {
if (getPojoEndpoint() == null) {
setPojoEndpoint(sf.getServiceFactory().getEndpointInfo().getName());
}
if (getEndpoint() == null) {
setEndpoint(sf.getServiceFactory().getEndpointInfo().getName().getLocalPart());
}
}
if (sf.getServiceFactory().getInterfaceName() != null) {
setPojoInterfaceName(sf.getServiceFactory().getInterfaceName());
if (getInterfaceName() == null) {
setInterfaceName(sf.getServiceFactory().getInterfaceName());
}
}
} else {
JaxWsServiceFactoryBean serviceFactory = new JaxWsServiceFactoryBean();
serviceFactory.setPopulateFromClass(true);
if (getPojoService() != null) {
serviceFactory.setServiceName(getPojoService());
}
if (getPojoEndpoint() != null) {
serviceFactory.setEndpointName(getPojoEndpoint());
}
endpoint = new EndpointImpl(getBus(), getPojo(), new JaxWsServerFactoryBean(serviceFactory));
if (isUseJBIWrapper()) {
endpoint.setBindingUri(org.apache.servicemix.cxf.binding.jbi.JBIConstants.NS_JBI_BINDING);
}
if (isUseXmlBeans()) {
if (getDataBinding() != null && getDataBinding() instanceof XmlBeansDataBinding) {
endpoint.setDataBinding(getDataBinding());
} else {
endpoint.setDataBinding(new XmlBeansDataBinding());
}
} else {
if (getDataBinding() != null && getDataBinding() instanceof JAXBDataBinding) {
endpoint.setDataBinding(getDataBinding());
}
}
endpoint.setInInterceptors(getInInterceptors());
endpoint.setInFaultInterceptors(getInFaultInterceptors());
endpoint.setOutInterceptors(getOutInterceptors());
endpoint.setOutFaultInterceptors(getOutFaultInterceptors());
if (isMtomEnabled()) {
endpoint.getInInterceptors().add(new AttachmentInInterceptor());
endpoint.getOutInterceptors().add(new AttachmentOutInterceptor());
}
JaxWsImplementorInfo implInfo = new JaxWsImplementorInfo(getPojo().getClass());
if (getPojoService() == null) {
setPojoService(implInfo.getServiceName());
}
setPojoInterfaceName(implInfo.getInterfaceName());
if (getPojoEndpoint() == null ) {
setPojoEndpoint(implInfo.getEndpointName());
}
if (getService() == null) {
setService(implInfo.getServiceName());
}
if (getInterfaceName() == null) {
setInterfaceName(implInfo.getInterfaceName());
}
if (getEndpoint() == null) {
setEndpoint(implInfo.getEndpointName().getLocalPart());
}
}
// prepare the CXF server in case of JAXB
if (!isUseAegis()) {
cleanUpDeadDestination();
endpoint.publish(address);
server = endpoint.getServer();
}
if (getService() == null) {
// set the service using CXF endpoint service name
setService(server.getEndpoint().getService().getName());
}
if (getEndpoint() == null) {
// set the endpoint using the CXF endpoint info
setEndpoint(server.getEndpoint().getEndpointInfo()
.getName().getLocalPart());
}
setPojoService(server.getEndpoint().getService().getName());
setPojoEndpoint(server.getEndpoint().getEndpointInfo().getName());
if (!isUseJBIWrapper() && !isUseSOAPEnvelope()) {
// cleanup interceptors
removeInterceptor(server.getEndpoint().getBinding().getInInterceptors(), "ReadHeadersInterceptor");
removeInterceptor(server.getEndpoint().getBinding().getInFaultInterceptors(), "ReadHeadersInterceptor");
removeInterceptor(server.getEndpoint().getBinding().getOutInterceptors(), "SoapOutInterceptor");
removeInterceptor(server.getEndpoint().getBinding().getOutFaultInterceptors(), "SoapOutInterceptor");
removeInterceptor(server.getEndpoint().getBinding().getOutInterceptors(), "StaxOutInterceptor");
}
setDescriptor();
super.validate();
}