Search in sources :

Example 21 with DatabindingConfig

use of com.sun.xml.ws.api.databinding.DatabindingConfig in project metro-jax-ws by eclipse-ee4j.

the class WebParamTest method testWebParam1.

void testWebParam1(String dbmode) throws Exception {
    DatabindingConfig srvConfig = new DatabindingConfig();
    srvConfig.setEndpointClass(WebParamWebServiceImpl.class);
    srvConfig.getMappingInfo().setDefaultSchemaNamespaceSuffix("types");
    DatabindingModeFeature dbf = new DatabindingModeFeature(dbmode);
    WebServiceFeatureList wsfeatures = new WebServiceFeatureList(WebParamWebServiceImpl.class);
    WebServiceFeature[] f = { dbf };
    srvConfig.setFeatures(f);
    DatabindingConfig cliConfig = new DatabindingConfig();
    cliConfig.setContractClass(WebParamWebService.class);
    cliConfig.setFeatures(f);
    WebParamWebService port = createProxy(WebParamWebService.class, srvConfig, cliConfig, debug);
    {
        jakarta.xml.ws.Holder<Employee> employeeHolder = new jakarta.xml.ws.Holder<Employee>();
        port.helloString4("jsr181", employeeHolder);
        Employee employee = (Employee) employeeHolder.value;
        Name output = employee.getName();
        assertEquals(output.getFirstName(), "jsr181");
        assertEquals(output.getLastName(), "jaxws");
    }
    {
        jakarta.xml.ws.Holder<Employee> employeeHolder = new jakarta.xml.ws.Holder<Employee>();
        Name name = new Name();
        name.setFirstName("jsr181");
        name.setLastName("jsr109");
        port.helloString7("jsr181", name, employeeHolder);
        Employee employee = (Employee) employeeHolder.value;
        Name output = employee.getName();
        assertEquals(output.getFirstName(), "jsr181");
        assertEquals(output.getLastName(), "jsr109");
    }
}
Also used : DatabindingModeFeature(com.oracle.webservices.api.databinding.DatabindingModeFeature) WebServiceFeatureList(com.sun.xml.ws.binding.WebServiceFeatureList) DatabindingConfig(com.sun.xml.ws.api.databinding.DatabindingConfig) WebServiceFeature(jakarta.xml.ws.WebServiceFeature)

Example 22 with DatabindingConfig

use of com.sun.xml.ws.api.databinding.DatabindingConfig in project metro-jax-ws by eclipse-ee4j.

the class WsgenTool method buildModel.

/**
 */
public boolean buildModel(String endpoint, Listener listener) throws BadCommandLineException {
    final ErrorReceiverFilter errReceiver = new ErrorReceiverFilter(listener);
    if (!options.nosource) {
        List<String> args = new ArrayList<>(6 + (options.nocompile ? 1 : 0) + (options.encoding != null ? 2 : 0));
        args.add("-d");
        args.add(options.destDir.getAbsolutePath());
        args.add("-classpath");
        args.add(options.classpath);
        args.add("-s");
        args.add(options.sourceDir.getAbsolutePath());
        if (options.nocompile) {
            args.add("-proc:only");
        }
        if (options.encoding != null) {
            args.add("-encoding");
            args.add(options.encoding);
        }
        if (options.javacOptions != null) {
            args.addAll(options.getJavacOptions(args, listener));
        }
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
        if (compiler == null) {
            out.println(WscompileMessages.WSCOMPILE_CANT_GET_COMPILER(property("java.home"), property("java.version"), property("java.vendor")));
            return false;
        }
        DiagnosticListener<JavaFileObject> diagnostics = new DiagnosticListener<>() {

            @Override
            public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
                boolean fromFile = diagnostic.getSource() != null;
                StringBuilder message = new StringBuilder();
                if (fromFile) {
                    message.append(diagnostic.getSource().getName());
                }
                message.append(diagnostic.getMessage(Locale.getDefault()));
                if (fromFile) {
                    message.append("");
                }
                switch(diagnostic.getKind()) {
                    case ERROR:
                        Locator2Impl l = new Locator2Impl();
                        if (fromFile) {
                            l.setSystemId(diagnostic.getSource().getName());
                        } else {
                            l.setSystemId(null);
                        }
                        l.setLineNumber((int) diagnostic.getLineNumber());
                        l.setColumnNumber((int) diagnostic.getColumnNumber());
                        SAXParseException ex = new SAXParseException(message.toString(), l);
                        listener.error(ex);
                        break;
                    case MANDATORY_WARNING:
                    case WARNING:
                        listener.message(message.toString());
                        break;
                    default:
                        if (options.verbose) {
                            listener.message(message.toString());
                        }
                }
            }
        };
        StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
        JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnostics, args, Collections.singleton(endpoint.replaceAll("\\$", ".")), null);
        task.setProcessors(Collections.singleton(new WebServiceAp(options, out)));
        boolean result = task.call();
        if (!result) {
            out.println(WscompileMessages.WSCOMPILE_ERROR(WscompileMessages.WSCOMPILE_COMPILATION_FAILED()));
            return false;
        }
    }
    if (options.genWsdl) {
        DatabindingConfig config = new DatabindingConfig();
        List<String> externalMetadataFileNames = options.externalMetadataFiles;
        boolean disableXmlSecurity = options.disableXmlSecurity;
        if (externalMetadataFileNames != null && externalMetadataFileNames.size() > 0) {
            config.setMetadataReader(new ExternalMetadataReader(getExternalFiles(externalMetadataFileNames), null, null, true, disableXmlSecurity));
        }
        String tmpPath = options.destDir.getAbsolutePath() + File.pathSeparator + options.classpath;
        ClassLoader classLoader = new URLClassLoader(Options.pathToURLs(tmpPath), this.getClass().getClassLoader());
        Class<?> endpointClass;
        try {
            endpointClass = classLoader.loadClass(endpoint);
        } catch (ClassNotFoundException e) {
            throw new BadCommandLineException(WscompileMessages.WSGEN_CLASS_NOT_FOUND(endpoint));
        }
        BindingID bindingID = options.getBindingID(options.protocol);
        if (!options.protocolSet) {
            bindingID = BindingID.parse(endpointClass);
        }
        WebServiceFeatureList wsfeatures = new WebServiceFeatureList(endpointClass);
        // rtModeler.setClassLoader(classLoader);
        if (options.portName != null)
            // rtModeler.setPortName(options.portName);
            config.getMappingInfo().setPortName(options.portName);
        // AbstractSEIModelImpl rtModel = rtModeler.buildRuntimeModel();
        DatabindingFactory fac = DatabindingFactory.newInstance();
        config.setEndpointClass(endpointClass);
        config.getMappingInfo().setServiceName(options.serviceName);
        config.setFeatures(wsfeatures.toArray());
        config.setClassLoader(classLoader);
        config.getMappingInfo().setBindingID(bindingID);
        com.sun.xml.ws.db.DatabindingImpl rt = (com.sun.xml.ws.db.DatabindingImpl) fac.createRuntime(config);
        // used to capture the generated WSDL file.
        final File[] wsdlFileName = new File[1];
        final Map<String, File> schemaFiles = new HashMap<>();
        WSDLGenInfo wsdlGenInfo = new WSDLGenInfo();
        wsdlGenInfo.setSecureXmlProcessingDisabled(disableXmlSecurity);
        wsdlGenInfo.setWsdlResolver(new WSDLResolver() {

            private File toFile(String suggestedFilename) {
                return new File(options.nonclassDestDir, suggestedFilename);
            }

            private Result toResult(File file) {
                Result result;
                try {
                    result = new StreamResult(new FileOutputStream(file));
                    result.setSystemId(file.getPath().replace('\\', '/'));
                } catch (FileNotFoundException e) {
                    errReceiver.error(e);
                    return null;
                }
                return result;
            }

            @Override
            public Result getWSDL(String suggestedFilename) {
                File f = toFile(suggestedFilename);
                wsdlFileName[0] = f;
                return toResult(f);
            }

            public Result getSchemaOutput(String namespace, String suggestedFilename) {
                if (namespace == null)
                    return null;
                File f = toFile(suggestedFilename);
                schemaFiles.put(namespace, f);
                return toResult(f);
            }

            @Override
            public Result getAbstractWSDL(Holder<String> filename) {
                return toResult(toFile(filename.value));
            }

            @Override
            public Result getSchemaOutput(String namespace, Holder<String> filename) {
                return getSchemaOutput(namespace, filename.value);
            }
        });
        wsdlGenInfo.setContainer(container);
        wsdlGenInfo.setExtensions(ServiceFinder.find(WSDLGeneratorExtension.class, ServiceLoader.load(WSDLGeneratorExtension.class)).toArray());
        wsdlGenInfo.setInlineSchemas(options.inlineSchemas);
        rt.generateWSDL(wsdlGenInfo);
        if (options.wsgenReport != null)
            generateWsgenReport(endpointClass, (AbstractSEIModelImpl) rt.getModel(), wsdlFileName[0], schemaFiles);
    }
    return true;
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) FileNotFoundException(java.io.FileNotFoundException) Diagnostic(javax.tools.Diagnostic) BindingID(com.sun.xml.ws.api.BindingID) WebServiceFeatureList(com.sun.xml.ws.binding.WebServiceFeatureList) StreamResult(javax.xml.transform.stream.StreamResult) Result(javax.xml.transform.Result) WSDLResolver(com.oracle.webservices.api.databinding.WSDLResolver) JavaFileObject(javax.tools.JavaFileObject) SAXParseException(org.xml.sax.SAXParseException) StandardJavaFileManager(javax.tools.StandardJavaFileManager) URLClassLoader(java.net.URLClassLoader) DatabindingFactory(com.sun.xml.ws.api.databinding.DatabindingFactory) StreamResult(javax.xml.transform.stream.StreamResult) AbstractSEIModelImpl(com.sun.xml.ws.model.AbstractSEIModelImpl) WebServiceAp(com.sun.tools.ws.processor.modeler.annotation.WebServiceAp) JavaCompiler(javax.tools.JavaCompiler) DiagnosticListener(javax.tools.DiagnosticListener) ExternalMetadataReader(com.sun.xml.ws.model.ExternalMetadataReader) WSDLGenInfo(com.sun.xml.ws.api.databinding.WSDLGenInfo) DatabindingConfig(com.sun.xml.ws.api.databinding.DatabindingConfig) URLClassLoader(java.net.URLClassLoader) FileOutputStream(java.io.FileOutputStream) WSDLGeneratorExtension(com.sun.xml.ws.api.wsdl.writer.WSDLGeneratorExtension) File(java.io.File) Locator2Impl(org.xml.sax.ext.Locator2Impl)

Aggregations

DatabindingConfig (com.sun.xml.ws.api.databinding.DatabindingConfig)22 WebServiceFeature (jakarta.xml.ws.WebServiceFeature)19 DatabindingModeFeature (com.oracle.webservices.api.databinding.DatabindingModeFeature)15 SchemaInfo (com.sun.xml.ws.db.sdo.SchemaInfo)6 Map (java.util.Map)6 QName (javax.xml.namespace.QName)6 WebServiceFeatureList (com.sun.xml.ws.binding.WebServiceFeatureList)4 BindingContext (com.sun.xml.ws.spi.db.BindingContext)4 HelperContext (commonj.sdo.helper.HelperContext)4 File (java.io.File)4 HashMap (java.util.HashMap)4 SDOHelperContext (org.eclipse.persistence.sdo.helper.SDOHelperContext)4 Databinding (com.sun.xml.ws.api.databinding.Databinding)3 DatabindingFactory (com.sun.xml.ws.api.databinding.DatabindingFactory)3 WSDLPort (com.sun.xml.ws.api.model.wsdl.WSDLPort)3 DummyAnnotations (com.sun.xml.ws.base.DummyAnnotations)3 HelperContextResolver (com.sun.xml.ws.db.sdo.HelperContextResolver)3 HelloImpl (com.sun.xml.ws.test.HelloImpl)3 HelloPort (com.sun.xml.ws.test.HelloPort)3 CommandMap (jakarta.activation.CommandMap)3