You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by de...@apache.org on 2006/09/01 12:44:12 UTC
svn commit: r439266 - in
/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2:
deployment/repository/util/ deployment/resolver/ deployment/util/
description/
Author: deepal
Date: Fri Sep 1 03:44:11 2006
New Revision: 439266
URL: http://svn.apache.org/viewvc?rev=439266&view=rev
Log:
fixing AXIS2-1087
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/resolver/AARBasedWSDLLocator.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/resolver/AARFileBasedURIResolver.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java?rev=439266&r1=439265&r2=439266&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java Fri Sep 1 03:44:11 2006
@@ -21,21 +21,10 @@
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import org.apache.axis2.AxisFault;
-import org.apache.axis2.deployment.DeploymentConstants;
-import org.apache.axis2.deployment.DeploymentErrorMsgs;
-import org.apache.axis2.deployment.DeploymentException;
-import org.apache.axis2.deployment.DescriptionBuilder;
-import org.apache.axis2.deployment.ModuleBuilder;
-import org.apache.axis2.deployment.ServiceBuilder;
-import org.apache.axis2.deployment.ServiceGroupBuilder;
+import org.apache.axis2.deployment.*;
import org.apache.axis2.deployment.resolver.AARBasedWSDLLocator;
import org.apache.axis2.deployment.resolver.AARFileBasedURIResolver;
-import org.apache.axis2.description.AxisModule;
-import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.AxisServiceGroup;
-import org.apache.axis2.description.WSDL11ToAxisServiceBuilder;
-import org.apache.axis2.description.WSDL20ToAxisServiceBuilder;
-import org.apache.axis2.description.WSDLToAxisServiceBuilder;
+import org.apache.axis2.description.*;
import org.apache.axis2.engine.AxisConfiguration;
import org.apache.axis2.i18n.Messages;
import org.apache.axis2.namespace.Constants;
@@ -45,13 +34,7 @@
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.zip.ZipEntry;
@@ -290,6 +273,11 @@
&& entryName.endsWith(SUFFIX_WSDL)) {
out = new ByteArrayOutputStream();
+ if (entryName.indexOf("/") != entryName.lastIndexOf("/")) {
+ //only care abt the toplevel wsdl
+ continue;
+ }
+
while ((read = zin.read(buf)) > 0) {
out.write(buf, 0, read);
}
@@ -313,7 +301,6 @@
} else {
new DeploymentException(Messages.getMessage("invalidWSDLFound"));
}
-
AxisService service = processWSDLFile(wsdlToAxisServiceBuilder, serviceFile, true, new ByteArrayInputStream(out.toByteArray()));
servicesMap.put(service.getName(), service);
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/resolver/AARBasedWSDLLocator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/resolver/AARBasedWSDLLocator.java?rev=439266&r1=439265&r2=439266&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/resolver/AARBasedWSDLLocator.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/resolver/AARBasedWSDLLocator.java Fri Sep 1 03:44:11 2006
@@ -1,6 +1,7 @@
package org.apache.axis2.deployment.resolver;
import org.apache.axis2.deployment.DeploymentConstants;
+import org.apache.axis2.deployment.util.Utils;
import org.apache.ws.commons.schema.resolver.DefaultURIResolver;
import org.xml.sax.InputSource;
@@ -36,6 +37,7 @@
private File aarFile;
private InputStream baseInputStream;
+ private String lastImportLocation = "";
public AARBasedWSDLLocator(File zipFile, InputStream baseInputStream) {
this.baseInputStream = baseInputStream;
@@ -51,6 +53,14 @@
* @param importLocation
*/
public InputSource getImportInputSource(String parentLocation, String importLocation) {
+ //setting current import location.
+ if (importLocation != null && importLocation.length() > 0) {
+ int speindex = importLocation.lastIndexOf("/");
+ if (speindex > 0) {
+ lastImportLocation = importLocation.substring(0, speindex);
+ }
+
+ }
if (isAbsolute(importLocation)) {
return super.resolveEntity(
null, importLocation, parentLocation);
@@ -65,10 +75,13 @@
int read;
ByteArrayOutputStream out;
String searchingStr;
+ if (parentLocation != null && parentLocation.length() > 0) {
+ importLocation = Utils.getPath(parentLocation, importLocation);
+ }
while ((entry = zin.getNextEntry()) != null) {
String entryName = entry.getName().toLowerCase();
searchingStr = (DeploymentConstants.META_INF + "/" + importLocation).toLowerCase();
- if (entryName.equals(searchingStr)) {
+ if (entryName.equalsIgnoreCase(searchingStr)) {
out = new ByteArrayOutputStream();
while ((read = zin.read(buf)) > 0) {
out.write(buf, 0, read);
@@ -107,6 +120,8 @@
*/
public String getLatestImportURI() {
//we don't care about this either
- return "";
+ return lastImportLocation;
}
+
+
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/resolver/AARFileBasedURIResolver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/resolver/AARFileBasedURIResolver.java?rev=439266&r1=439265&r2=439266&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/resolver/AARFileBasedURIResolver.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/resolver/AARFileBasedURIResolver.java Fri Sep 1 03:44:11 2006
@@ -1,16 +1,13 @@
package org.apache.axis2.deployment.resolver;
-import org.apache.ws.commons.schema.resolver.DefaultURIResolver;
import org.apache.axis2.deployment.DeploymentConstants;
+import org.apache.axis2.deployment.util.Utils;
+import org.apache.ws.commons.schema.resolver.DefaultURIResolver;
import org.xml.sax.InputSource;
-import java.util.zip.ZipInputStream;
+import java.io.*;
import java.util.zip.ZipEntry;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.ByteArrayOutputStream;
-import java.io.ByteArrayInputStream;
-import java.io.File;
+import java.util.zip.ZipInputStream;
/*
* Copyright 2004,2005 The Apache Software Foundation.
*
@@ -30,7 +27,7 @@
/**
* A custom URI resolver that can
*/
-public class AARFileBasedURIResolver extends DefaultURIResolver{
+public class AARFileBasedURIResolver extends DefaultURIResolver {
private String aarFileName;
private File aarFile;
@@ -42,7 +39,7 @@
public AARFileBasedURIResolver(File aarFile) {
this.aarFile = aarFile;
}
-
+
public AARFileBasedURIResolver() {
}
@@ -53,26 +50,27 @@
public void setAarFileName(File aarFile) {
this.aarFile = aarFile;
}
+
public InputSource resolveEntity(
String targetNamespace,
String schemaLocation,
String baseUri) {
//no issue with
- if (isAbsolute(schemaLocation)){
+ if (isAbsolute(schemaLocation)) {
return super.resolveEntity(
- targetNamespace,schemaLocation,baseUri);
- }else{
+ targetNamespace, schemaLocation, baseUri);
+ } else {
//validate
- if (schemaLocation.startsWith("..")){
+ if ((baseUri == null || "".equals(baseUri)) && schemaLocation.startsWith("..")) {
throw new RuntimeException(
- "Unsupported schema location "+ schemaLocation);
+ "Unsupported schema location " + schemaLocation);
}
ZipInputStream zin = null;
try {
- if (aarFile!=null){
+ if (aarFile != null) {
zin = new ZipInputStream(new FileInputStream(aarFile));
- } else{
+ } else {
zin = new ZipInputStream(new FileInputStream(aarFileName));
}
@@ -81,10 +79,13 @@
int read;
ByteArrayOutputStream out;
String searchingStr;
+ if (baseUri != null && baseUri.length() > 0) {
+ schemaLocation = Utils.getPath(baseUri, schemaLocation);
+ }
while ((entry = zin.getNextEntry()) != null) {
String entryName = entry.getName().toLowerCase();
searchingStr = (DeploymentConstants.META_INF + "/" + schemaLocation).toLowerCase();
- if (entryName.equals(searchingStr)) {
+ if (entryName.equalsIgnoreCase(searchingStr)) {
out = new ByteArrayOutputStream();
while ((read = zin.read(buf)) > 0) {
out.write(buf, 0, read);
@@ -95,12 +96,11 @@
}
-
} catch (IOException e) {
throw new RuntimeException(e);
- } finally{
+ } finally {
try {
- if (zin!=null) zin.close();
+ if (zin != null) zin.close();
} catch (IOException e) {
//log this error
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java?rev=439266&r1=439265&r2=439266&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java Fri Sep 1 03:44:11 2006
@@ -6,8 +6,8 @@
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.deployment.DeploymentConstants;
-import org.apache.axis2.deployment.DeploymentException;
import org.apache.axis2.deployment.DeploymentEngine;
+import org.apache.axis2.deployment.DeploymentException;
import org.apache.axis2.deployment.ServiceBuilder;
import org.apache.axis2.deployment.repository.util.ArchiveFileData;
import org.apache.axis2.deployment.repository.util.ArchiveReader;
@@ -95,7 +95,7 @@
ArrayList array = new ArrayList();
String urlString = url.toString();
InputStream in = url.openStream();
- ZipInputStream zin ;
+ ZipInputStream zin;
if (antiJARLocking) {
File inputFile = createTempFile(urlString.substring(urlString.length() - 4), in);
in.close();
@@ -409,6 +409,7 @@
* @param config : AxisConfiguration : for get classs loders etc..
* @return
* @throws org.apache.axis2.deployment.DeploymentException
+ *
*/
public static AxisModule buildModule(File modulearchive, DeploymentEngine engine, AxisConfiguration config)
throws DeploymentException {
@@ -483,5 +484,46 @@
}
return axisService;
+ }
+
+ public static String getPath(String parent, String childPath) {
+ Stack parentStack = new Stack();
+ Stack childStack = new Stack();
+ if (parent != null) {
+ String [] values = parent.split("/");
+ if (values.length > 0) {
+ for (int i = 0; i < values.length; i++) {
+ String value = values[i];
+ parentStack.push(value);
+ }
+ }
+ }
+ String [] values = childPath.split("/");
+ if (values.length > 0) {
+ for (int i = 0; i < values.length; i++) {
+ String value = values[i];
+ childStack.push(value);
+ }
+ }
+ String filepath = "";
+ while (!childStack.isEmpty()) {
+ String value = (String) childStack.pop();
+ if ("..".equals(value)) {
+ parentStack.pop();
+ } else if (!"".equals(value)) {
+ if ("".equals(filepath)) {
+ filepath = value;
+ } else {
+ filepath = value + "/" + filepath;
+ }
+ }
+ }
+ while (!parentStack.isEmpty()) {
+ String value = (String) parentStack.pop();
+ if (!"".equals(value)) {
+ filepath = value + "/" + filepath;
+ }
+ }
+ return filepath;
}
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java?rev=439266&r1=439265&r2=439266&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java Fri Sep 1 03:44:11 2006
@@ -1568,7 +1568,8 @@
// just add this schema - no need to worry about the imported
// ones
axisService.addSchema(getXMLSchema(schema.getElement(),
- wsdl4jDefinition.getDocumentBaseURI()));
+ schema.getDocumentBaseURI()));
+// wsdl4jDefinition.getDocumentBaseURI()));
} else if (SOAPConstants.Q_ELEM_SOAP_OPERATION.equals(wsdl4jElement
.getElementType())) {
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org