< prev index next >
src/jdk.xml.ws/share/classes/com/sun/tools/internal/ws/processor/modeler/annotation/WebServiceAp.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
@@ -49,17 +49,13 @@
import javax.xml.ws.Holder;
import javax.xml.ws.WebServiceProvider;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.PrintStream;
-import java.lang.reflect.Method;
-import java.rmi.Remote;
-import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
-import java.util.Scanner;
import java.util.Set;
import java.util.logging.Level;
/**
* WebServiceAp is a AnnotationProcessor for processing javax.jws.* and
@@ -87,25 +83,24 @@
"javax.xml.ws.WebFault",
"javax.xml.ws.WebServiceClient",
"javax.xml.ws.WebServiceProvider",
"javax.xml.ws.WebServiceRef"
})
-@SupportedOptions({WebServiceAp.DO_NOT_OVERWRITE, WebServiceAp.IGNORE_NO_WEB_SERVICE_FOUND_WARNING})
+@SupportedOptions({WebServiceAp.DO_NOT_OVERWRITE, WebServiceAp.IGNORE_NO_WEB_SERVICE_FOUND_WARNING, WebServiceAp.VERBOSE})
public class WebServiceAp extends AbstractProcessor implements ModelBuilder {
private static final Logger LOGGER = Logger.getLogger(WebServiceAp.class);
public static final String DO_NOT_OVERWRITE = "doNotOverWrite";
public static final String IGNORE_NO_WEB_SERVICE_FOUND_WARNING = "ignoreNoWebServiceFoundWarning";
+ public static final String VERBOSE = "verbose";
private WsgenOptions options;
protected AnnotationProcessorContext context;
private File sourceDir;
private boolean doNotOverWrite;
private boolean ignoreNoWebServiceFoundWarning = false;
- private TypeElement remoteElement;
- private TypeMirror remoteExceptionElement;
private TypeMirror exceptionElement;
private TypeMirror runtimeExceptionElement;
private TypeElement defHolderElement;
private boolean isCommandLineInvocation;
private PrintStream out;
@@ -124,84 +119,25 @@
}
@Override
public synchronized void init(ProcessingEnvironment processingEnv) {
super.init(processingEnv);
- remoteElement = processingEnv.getElementUtils().getTypeElement(Remote.class.getName());
- remoteExceptionElement = processingEnv.getElementUtils().getTypeElement(RemoteException.class.getName()).asType();
exceptionElement = processingEnv.getElementUtils().getTypeElement(Exception.class.getName()).asType();
runtimeExceptionElement = processingEnv.getElementUtils().getTypeElement(RuntimeException.class.getName()).asType();
defHolderElement = processingEnv.getElementUtils().getTypeElement(Holder.class.getName());
if (options == null) {
options = new WsgenOptions();
out = new PrintStream(new ByteArrayOutputStream());
-
doNotOverWrite = getOption(DO_NOT_OVERWRITE);
ignoreNoWebServiceFoundWarning = getOption(IGNORE_NO_WEB_SERVICE_FOUND_WARNING);
-
- String classDir = parseArguments();
- String property = System.getProperty("java.class.path");
- options.classpath = classDir + File.pathSeparator + (property != null ? property : "");
+ options.verbose = getOption(VERBOSE);
isCommandLineInvocation = true;
}
options.filer = processingEnv.getFiler();
}
- private String parseArguments() {
- // let's try to parse JavacOptions
-
- String classDir = null;
- try {
- ClassLoader cl = WebServiceAp.class.getClassLoader();
- Class javacProcessingEnvironmentClass = Class.forName("com.sun.tools.javac.processing.JavacProcessingEnvironment", false, cl);
- if (javacProcessingEnvironmentClass.isInstance(processingEnv)) {
- Method getContextMethod = javacProcessingEnvironmentClass.getDeclaredMethod("getContext");
- Object tmpContext = getContextMethod.invoke(processingEnv);
- Class optionsClass = Class.forName("com.sun.tools.javac.util.Options", false, cl);
- Class contextClass = Class.forName("com.sun.tools.javac.util.Context", false, cl);
- Method instanceMethod = optionsClass.getDeclaredMethod("instance", new Class[]{contextClass});
- Object tmpOptions = instanceMethod.invoke(null, tmpContext);
- if (tmpOptions != null) {
- Method getMethod = optionsClass.getDeclaredMethod("get", new Class[]{String.class});
- Object result = getMethod.invoke(tmpOptions, "-s"); // todo: we have to check for -d also
- if (result != null) {
- classDir = (String) result;
- }
- this.options.verbose = getMethod.invoke(tmpOptions, "-verbose") != null;
- }
- }
- } catch (Exception e) {
- /// some Error was here - problems with reflection or security
- processWarning(WebserviceapMessages.WEBSERVICEAP_PARSING_JAVAC_OPTIONS_ERROR());
- report(e.getMessage());
- }
-
- if (classDir == null) { // some error within reflection block
- String property = System.getProperty("sun.java.command");
- if (property != null) {
- Scanner scanner = new Scanner(property);
- boolean sourceDirNext = false;
- while (scanner.hasNext()) {
- String token = scanner.next();
- if (sourceDirNext) {
- classDir = token;
- sourceDirNext = false;
- } else if ("-verbose".equals(token)) {
- options.verbose = true;
- } else if ("-s".equals(token)) {
- sourceDirNext = true;
- }
- }
- }
- }
- if (classDir != null) {
- sourceDir = new File(classDir);
- }
- return classDir;
- }
-
private boolean getOption(String key) {
String value = processingEnv.getOptions().get(key);
if (value != null) {
return Boolean.valueOf(value);
}
@@ -307,18 +243,18 @@
return sourceDir;
}
@Override
public boolean isRemote(TypeElement typeElement) {
- return processingEnv.getTypeUtils().isSubtype(typeElement.asType(), remoteElement.asType());
+ return TypeModeler.isRemote(typeElement);
}
@Override
public boolean isServiceException(TypeMirror typeMirror) {
return processingEnv.getTypeUtils().isSubtype(typeMirror, exceptionElement)
&& !processingEnv.getTypeUtils().isSubtype(typeMirror, runtimeExceptionElement)
- && !processingEnv.getTypeUtils().isSubtype(typeMirror, remoteExceptionElement);
+ && !TypeModeler.isRemoteException(processingEnv, typeMirror);
}
@Override
public TypeMirror getHolderValueType(TypeMirror type) {
return TypeModeler.getHolderValueType(type, defHolderElement, processingEnv);
< prev index next >