Author: scheu
Date: Mon Jul 19 21:22:58 2010
New Revision: 965641
URL: http://svn.apache.org/viewvc?rev=965641&view=rev
Log:
AXIS2-4782
Contributor:Rich Scheuerle
Small change to the algorithm to determine if a reloadable WSDL implementation
should be used.
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/wsdl/util/WSDLDefinitionWrapper.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/wsdl/util/WSDLWrapperReloadImpl.java
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/wsdl/util/WSDLDefinitionWrapper.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/wsdl/util/WSDLDefinitionWrapper.java?rev=965641&r1=965640&r2=965641&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/wsdl/util/WSDLDefinitionWrapper.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/wsdl/util/WSDLDefinitionWrapper.java
Mon Jul 19 21:22:58 2010
@@ -267,11 +267,22 @@ public class WSDLDefinitionWrapper imple
// otherwise, default to the serialization technique
if (reduceWSDLMemoryType == 2) {
- // a wrapper implementation that uses release & reload on the
- // underlying WSDL4J object
- // this would be desirable for those environments where
- // many of the WSDL definitions are not serializable
- wrapperImpl = new WSDLWrapperReloadImpl(def, wURL);
+
+ // See if the definition is reloadable
+ if (WSDLWrapperReloadImpl.isReloadable(def, wURL)) {
+ // a wrapper implementation that uses release & reload on
the
+ // underlying WSDL4J object
+ // this would be desirable for those environments where
+ // many of the WSDL definitions are not serializable
+ wrapperImpl = new WSDLWrapperReloadImpl(def, wURL);
+ } else {
+ // a wrapper implementation that is just a passthrough to
the
+ // underlying WSDL4J object
+ if (log.isDebugEnabled() ) {
+ log.debug("WSDLDefinitionWrapper could not create a
reloadable WSDL wrapper object.");
+ }
+ wrapperImpl = new WSDLWrapperBasicImpl(def, wURL);
+ }
}
else {
// a wrapper implementation that uses serialization to save
the
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/wsdl/util/WSDLWrapperReloadImpl.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/wsdl/util/WSDLWrapperReloadImpl.java?rev=965641&r1=965640&r2=965641&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/wsdl/util/WSDLWrapperReloadImpl.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/wsdl/util/WSDLWrapperReloadImpl.java
Mon Jul 19 21:22:58 2010
@@ -133,6 +133,49 @@ public class WSDLWrapperReloadImpl imple
}
prepare(def, wURL);
}
+
+ public static boolean isReloadable(Definition def, URL wURL) {
+ if (isDebugEnabled) {
+ log.debug("Enter " + myClassName + ".isReloadable(): " + wURL);
+ }
+ String explicitURI = null;
+ if (def != null) {
+ try {
+ String documentBaseURI = def.getDocumentBaseURI();
+
+ // build up the wURL if possible
+ if ((wURL == null) && (documentBaseURI != null)) {
+ wURL = new URL(documentBaseURI);
+ }
+
+ // get the explicit location of the wsdl if possible
+ if (wURL != null) {
+ explicitURI = getExplicitURI(wURL);
+ }
+
+
+ } catch (Exception e) {
+ if (isDebugEnabled) {
+ log.debug(myClassName + ".isReloaded(): ["
+ + e.getClass().getName() + "] error [" +
e.getMessage() + "]", e);
+ log.debug("Processing continues.");
+ }
+ }
+ }
+
+ // Return true if explicitURI is available
+ if (isDebugEnabled) {
+ log.debug(" explicitURI=" + explicitURI);
+ }
+ boolean rc = explicitURI != null && explicitURI.length() > 0;
+
+ if (isDebugEnabled) {
+ log.debug("Exit " + myClassName + ".isReloadable(): " + rc);
+ }
+
+ return rc;
+
+ }
/**
@@ -1222,7 +1265,7 @@ public class WSDLWrapperReloadImpl imple
//-------------------------------------------------------------------------
- private String getExplicitURI(URL wsdlURL) throws WSDLException {
+ private static String getExplicitURI(URL wsdlURL) throws WSDLException {
if (isDebugEnabled) {
log.debug(myClassName + ".getExplicitURI(" + wsdlURL + ") ");
@@ -1264,7 +1307,7 @@ public class WSDLWrapperReloadImpl imple
// Lets read the complete WSDL URL for relative path from
class loader
// Use relative path of url to fetch complete URL.
- url = getAbsoluteURL(classLoader, filePath);
+ url = getAbsoluteURL(classLoader, filePath, wsdlURL);
if (url == null) {
if (isDebugEnabled) {
@@ -1308,7 +1351,7 @@ public class WSDLWrapperReloadImpl imple
if (filePath != null) {
- url = getAbsoluteURL(classLoader, filePath);
+ url = getAbsoluteURL(classLoader, filePath, wsdlURL);
if (url == null) {
if (log.isDebugEnabled()) {
log.debug("Could not locate URL for wsdl.
Reporting error");
@@ -1343,7 +1386,7 @@ public class WSDLWrapperReloadImpl imple
}
- private URL getAbsoluteURL(final ClassLoader classLoader, final String
filePath) throws WSDLException {
+ private static URL getAbsoluteURL(final ClassLoader classLoader, final
String filePath, URL wURL) throws WSDLException {
URL url = (URL) AccessController.doPrivileged(
new PrivilegedAction() {
public Object run() {
@@ -1357,7 +1400,7 @@ public class WSDLWrapperReloadImpl imple
}
if (classLoader instanceof URLClassLoader) {
URLClassLoader urlLoader = (URLClassLoader) classLoader;
- url = getURLFromJAR(urlLoader, wsdlURL);
+ url = getURLFromJAR(urlLoader, wURL);
}
}
return url;
@@ -1402,7 +1445,7 @@ public class WSDLWrapperReloadImpl imple
return def;
}
- private URL getURLFromJAR(URLClassLoader urlLoader, URL relativeURL)
throws WSDLException {
+ private static URL getURLFromJAR(URLClassLoader urlLoader, URL
relativeURL) throws WSDLException {
URL[] urlList = urlLoader.getURLs();
@@ -1493,7 +1536,7 @@ public class WSDLWrapperReloadImpl imple
* may be an instance of a FileURLConnection object which would require
access
* permissions if Java2 Security was enabled.
*/
- private InputStream getInputStream(URLConnection urlCon) throws Exception {
+ private static InputStream getInputStream(URLConnection urlCon) throws
Exception {
final URLConnection finalURLCon = urlCon;
InputStream is = null;
try {