public void validate()

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();

    }