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));
}
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;
}
Aggregations