Search in sources :

Example 11 with WebServiceFeatureList

use of com.sun.xml.ws.binding.WebServiceFeatureList in project metro-jax-ws by eclipse-ee4j.

the class WSServiceDelegate method getPort.

public <T> T getPort(QName portName, Class<T> portInterface, WebServiceFeature... features) {
    if (portName == null || portInterface == null)
        throw new IllegalArgumentException();
    WSDLService tWsdlService = this.wsdlService;
    if (tWsdlService == null) {
        // assigning it to local variable and not setting it back to this.wsdlService intentionally
        // as we don't want to include the service instance with information gathered from sei
        tWsdlService = getWSDLModelfromSEI(portInterface);
        // still null? throw error need wsdl metadata to create a proxy
        if (tWsdlService == null) {
            throw new WebServiceException(ProviderApiMessages.NO_WSDL_NO_PORT(portInterface.getName()));
        }
    }
    WSDLPort portModel = getPortModel(tWsdlService, portName);
    return getPort(portModel.getEPR(), portName, portInterface, new WebServiceFeatureList(features));
}
Also used : WebServiceException(jakarta.xml.ws.WebServiceException) WSDLService(com.sun.xml.ws.api.model.wsdl.WSDLService) WebServiceFeatureList(com.sun.xml.ws.binding.WebServiceFeatureList) WSDLPort(com.sun.xml.ws.api.model.wsdl.WSDLPort)

Example 12 with WebServiceFeatureList

use of com.sun.xml.ws.binding.WebServiceFeatureList 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

WebServiceFeatureList (com.sun.xml.ws.binding.WebServiceFeatureList)12 DatabindingModeFeature (com.oracle.webservices.api.databinding.DatabindingModeFeature)4 DatabindingConfig (com.sun.xml.ws.api.databinding.DatabindingConfig)4 WSDLPort (com.sun.xml.ws.api.model.wsdl.WSDLPort)4 WebServiceFeature (jakarta.xml.ws.WebServiceFeature)4 QName (javax.xml.namespace.QName)3 BindingID (com.sun.xml.ws.api.BindingID)2 WSDLService (com.sun.xml.ws.api.model.wsdl.WSDLService)2 BindingImpl (com.sun.xml.ws.binding.BindingImpl)2 SOAPBindingImpl (com.sun.xml.ws.binding.SOAPBindingImpl)2 AbstractSEIModelImpl (com.sun.xml.ws.model.AbstractSEIModelImpl)2 WebServiceException (jakarta.xml.ws.WebServiceException)2 WSDLResolver (com.oracle.webservices.api.databinding.WSDLResolver)1 WebServiceAp (com.sun.tools.ws.processor.modeler.annotation.WebServiceAp)1 DatabindingFactory (com.sun.xml.ws.api.databinding.DatabindingFactory)1 MetadataReader (com.sun.xml.ws.api.databinding.MetadataReader)1 WSDLGenInfo (com.sun.xml.ws.api.databinding.WSDLGenInfo)1 SEIModel (com.sun.xml.ws.api.model.SEIModel)1 SDDocumentSource (com.sun.xml.ws.api.server.SDDocumentSource)1 WSDLGeneratorExtension (com.sun.xml.ws.api.wsdl.writer.WSDLGeneratorExtension)1