You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2008/08/15 16:32:49 UTC
svn commit: r686237 - in /cxf/trunk:
rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java
tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/JAXWSDefinitionBuilder.java
Author: seanoc
Date: Fri Aug 15 07:32:48 2008
New Revision: 686237
URL: http://svn.apache.org/viewvc?rev=686237&view=rev
Log:
Fix so wsdl2java doesn't run out of memory when passed wsdl with large number of schemas.
Modified WSDLServiceBuilder to correctly use schemaCache in WSDLManager
Modified:
cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/JAXWSDefinitionBuilder.java
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java?rev=686237&r1=686236&r2=686237&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java Fri Aug 15 07:32:48 2008
@@ -242,7 +242,6 @@
copyExtensors(description, def.getExtensibilityElements());
copyExtensionAttributes(description, def);
}
-
for (Port port : cast(serv.getPorts().values(), Port.class)) {
Binding binding = port.getBinding();
PortType bindingPt = binding.getPortType();
@@ -259,24 +258,8 @@
description.getDescribed().add(service);
service.setProperty(WSDL_DEFINITION, def);
service.setProperty(WSDL_SERVICE, serv);
- WSDLManager wsdlManager = bus.getExtension(WSDLManager.class);
- ServiceSchemaInfo serviceSchemaInfo = null;
- if (wsdlManager != null) {
- serviceSchemaInfo = wsdlManager.getSchemasForDefinition(def);
- }
+ getSchemas(def, service);
- if (serviceSchemaInfo != null) {
- service.setServiceSchemaInfo(serviceSchemaInfo);
- } else {
- getSchemas(def, service);
- if (wsdlManager != null) {
- serviceSchemaInfo = new ServiceSchemaInfo();
- serviceSchemaInfo.setSchemaCollection(service.getXmlSchemaCollection());
- serviceSchemaInfo.setSchemaInfoList(service.getSchemas());
- wsdlManager.putSchemasForDefinition(def, serviceSchemaInfo);
- }
- }
-
service.setProperty(WSDL_SCHEMA_ELEMENT_LIST, this.schemaList);
service.setTargetNamespace(def.getTargetNamespace());
service.setName(serv.getQName());
@@ -297,13 +280,31 @@
return new ArrayList<ServiceInfo>(services.values());
}
-
+
+
private void getSchemas(Definition def, ServiceInfo serviceInfo) {
- SchemaUtil schemaUtil = new SchemaUtil(bus, this.schemaList);
- schemaUtil.setCatalogResolvedMap(this.catalogResolvedMap);
- schemaUtil.getSchemas(def, serviceInfo);
+ ServiceSchemaInfo serviceSchemaInfo = null;
+ WSDLManager wsdlManager = bus.getExtension(WSDLManager.class);
+ if (wsdlManager != null) {
+ serviceSchemaInfo = wsdlManager.getSchemasForDefinition(def);
+ }
+
+ if (serviceSchemaInfo == null) {
+ SchemaUtil schemaUtil = new SchemaUtil(bus, this.schemaList);
+ schemaUtil.setCatalogResolvedMap(this.catalogResolvedMap);
+ schemaUtil.getSchemas(def, serviceInfo);
+ serviceSchemaInfo = new ServiceSchemaInfo();
+ serviceSchemaInfo.setSchemaCollection(serviceInfo.getXmlSchemaCollection());
+ serviceSchemaInfo.setSchemaInfoList(serviceInfo.getSchemas());
+ if (wsdlManager != null) {
+ wsdlManager.putSchemasForDefinition(def, serviceSchemaInfo);
+ }
+ } else {
+ serviceInfo.setServiceSchemaInfo(serviceSchemaInfo);
+ }
}
+
private void parseImports(Definition def, List<Definition> defList) {
List<Import> importList = new ArrayList<Import>();
Modified: cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/JAXWSDefinitionBuilder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/JAXWSDefinitionBuilder.java?rev=686237&r1=686236&r2=686237&view=diff
==============================================================================
--- cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/JAXWSDefinitionBuilder.java (original)
+++ cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/JAXWSDefinitionBuilder.java Fri Aug 15 07:32:48 2008
@@ -84,7 +84,6 @@
WSDLDefinitionBuilder builder = new WSDLDefinitionBuilder(this.bus);
wsdlDefinition = builder.build(wsdlURL);
- mgr.removeDefinition(wsdlDefinition);
context.put(Bus.class, bus);
context.put(ToolConstants.IMPORTED_DEFINITION, builder.getImportedDefinitions());
checkSupported(wsdlDefinition);
@@ -108,7 +107,9 @@
}
public void customize() {
+ WSDLManager mgr = bus.getExtension(WSDLManager.class);
if (!context.containsKey(ToolConstants.CFG_BINDING)) {
+ mgr.removeDefinition(wsdlDefinition);
return;
}
cusParser = new CustomizationParser();
@@ -117,8 +118,12 @@
jaxbBindings = cusParser.getJaxbBindings();
handlerChain = cusParser.getHandlerChains();
+
context.setJaxbBindingFiles(jaxbBindings);
context.put(ToolConstants.HANDLER_CHAIN, handlerChain);
+
+
+
try {
this.wsdlDefinition = buildCustomizedDefinition();
} catch (Exception e) {
@@ -127,6 +132,9 @@
(String)context.get(ToolConstants.CFG_WSDLURL));
throw new RuntimeException(msg.toString(), e);
}
+
+ mgr.removeDefinition(wsdlDefinition);
+
}
private void checkSupported(Definition def) throws ToolException {