< prev index next >
src/java.xml.ws/share/classes/com/sun/xml/internal/ws/model/RuntimeModeler.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -64,11 +64,10 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
-import java.rmi.RemoteException;
import java.security.AccessController;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
@@ -113,11 +112,11 @@
public static final String RETURN = "return";
public static final String BEAN = "Bean";
public static final String SERVICE = "Service";
public static final String PORT = "Port";
public static final Class HOLDER_CLASS = Holder.class;
- public static final Class<RemoteException> REMOTE_EXCEPTION_CLASS = RemoteException.class;
+ public static final String REMOTE_EXCEPTION_CLASS = "java.rmi.RemoteException";
public static final Class<RuntimeException> RUNTIME_EXCEPTION_CLASS = RuntimeException.class;
public static final Class<Exception> EXCEPTION_CLASS = Exception.class;
public static final String DecapitalizeExceptionBeanProperties = "com.sun.xml.internal.ws.api.model.DecapitalizeExceptionBeanProperties";
public static final String SuppressDocLitWrapperGeneration = "com.sun.xml.internal.ws.api.model.SuppressDocLitWrapperGeneration";
public static final String DocWrappeeNamespapceQualified = "com.sun.xml.internal.ws.api.model.DocWrappeeNamespapceQualified";
@@ -584,11 +583,11 @@
* @param exception
* @return
*/
private boolean isServiceException(Class<?> exception) {
return EXCEPTION_CLASS.isAssignableFrom(exception) &&
- !(RUNTIME_EXCEPTION_CLASS.isAssignableFrom(exception) || REMOTE_EXCEPTION_CLASS.isAssignableFrom(exception));
+ !(RUNTIME_EXCEPTION_CLASS.isAssignableFrom(exception) || isRemoteException(exception));
}
/**
* creates the runtime model for a method on the <code>portClass</code>
* @param method the method to model
@@ -1167,11 +1166,11 @@
if(!param.isOUT()){
WSDLPart p = getPart(new QName(targetNamespace,operationName), partName, Mode.IN);
if(p == null)
reqRpcParams.put(reqRpcParams.size()+10000, param);
else
- reqRpcParams.put(p.getIndex(), param);
+ reqRpcParams.put(param.getIndex(), param);
}
if(!param.isIN()){
if (isOneway) {
throw new RuntimeModelerException("runtime.modeler.oneway.operation.no.out.parameters",
@@ -1179,11 +1178,11 @@
}
WSDLPart p = getPart(new QName(targetNamespace,operationName), partName, Mode.OUT);
if(p == null)
resRpcParams.put(resRpcParams.size()+10000, param);
else
- resRpcParams.put(p.getIndex(), param);
+ resRpcParams.put(param.getIndex(), param);
}
}else{
javaMethod.addParameter(param);
}
}
@@ -1208,11 +1207,11 @@
for (Class<?> exception : method.getExceptionTypes()) {
//Exclude RuntimeException, RemoteException and Error etc
if (!EXCEPTION_CLASS.isAssignableFrom(exception))
continue;
- if (RUNTIME_EXCEPTION_CLASS.isAssignableFrom(exception) || REMOTE_EXCEPTION_CLASS.isAssignableFrom(exception))
+ if (RUNTIME_EXCEPTION_CLASS.isAssignableFrom(exception) || isRemoteException(exception))
continue;
if (getAnnotation(exception, javax.xml.bind.annotation.XmlTransient.class) != null)
continue;
Class exceptionBean;
Annotation[] anns;
@@ -1644,10 +1643,25 @@
return bo.getPart(partName, mode);
}
return null;
}
+ /*
+ * Returns true if an exception is a java.rmi.RemoteException or its subtype.
+ *
+ * @param exception
+ * @return true if an exception is a java.rmi.RemoteException or its subtype,
+ * false otherwise
+ */
+ private boolean isRemoteException(Class<?> exception) {
+ Class<?> c = exception;
+ while (c != null && !REMOTE_EXCEPTION_CLASS.equals(c.getName())) {
+ c = c.getSuperclass();
+ }
+ return c != null;
+ }
+
private static Boolean getBooleanSystemProperty(final String prop) {
return AccessController.doPrivileged(
new java.security.PrivilegedAction<Boolean>() {
public Boolean run() {
String value = System.getProperty(prop);
< prev index next >