private void processWsdl() {
// TODO: After runtime support w3c EPR mapping ,this will be removed
//context.put(ToolConstants.CFG_NO_ADDRESS_BINDING,
// ToolConstants.CFG_NO_ADDRESS_BINDING);
validate(context);
FrontEndProfile frontend = context.get(FrontEndProfile.class);
if (frontend == null) {
throw new ToolException(new Message("FOUND_NO_FRONTEND", LOG));
}
WSDLConstants.WSDLVersion version = getWSDLVersion();
String wsdlURL = (String)context.get(ToolConstants.CFG_WSDLURL);
@SuppressWarnings("unchecked")
List<ServiceInfo> serviceList = (List<ServiceInfo>)context.get(ToolConstants.SERVICE_LIST);
if (serviceList == null) {
serviceList = new ArrayList<ServiceInfo>();
// Build the ServiceModel from the WSDLModel
if (version == WSDLConstants.WSDLVersion.WSDL11) {
@SuppressWarnings("unchecked")
AbstractWSDLBuilder<Definition> builder = (AbstractWSDLBuilder<Definition>)frontend
.getWSDLBuilder();
builder.setContext(context);
builder.setBus(getBus());
context.put(Bus.class, getBus());
wsdlURL = URIParserUtil.getAbsoluteURI(wsdlURL);
builder.build(wsdlURL);
builder.customize();
Definition definition = builder.getWSDLModel();
context.put(Definition.class, definition);
builder.validate(definition);
WSDLServiceBuilder serviceBuilder = new WSDLServiceBuilder(getBus());
serviceBuilder.setIgnoreUnknownBindings(true);
String allowRefs = (String)context.get(ToolConstants.CFG_ALLOW_ELEMENT_REFS);
if (!StringUtils.isEmpty(allowRefs)
|| context.optionSet(ToolConstants.CFG_ALLOW_ELEMENT_REFS)) {
if (allowRefs.length() > 0 && allowRefs.charAt(0) == '=') {
allowRefs = allowRefs.substring(1);
}
if (StringUtils.isEmpty(allowRefs)) {
allowRefs = "true";
}
serviceBuilder.setAllowElementRefs(Boolean.valueOf(allowRefs));
}
String serviceName = (String)context.get(ToolConstants.CFG_SERVICENAME);
if (serviceName != null) {
List<ServiceInfo> services = serviceBuilder
.buildServices(definition, getServiceQName(definition));
serviceList.addAll(services);
} else if (definition.getServices().size() > 0) {
serviceList = serviceBuilder.buildServices(definition);
} else {
serviceList = serviceBuilder.buildMockServices(definition);
}
} else {
// TODO: wsdl2.0 support
}
}
context.put(ToolConstants.SERVICE_LIST, serviceList);
Map<String, InterfaceInfo> interfaces = new LinkedHashMap<String, InterfaceInfo>();
@SuppressWarnings("unchecked")
Map<String, Element> schemas = (Map<String, Element>)serviceList.get(0)
.getProperty(WSDLServiceBuilder.WSDL_SCHEMA_ELEMENT_LIST);
if (schemas == null) {
schemas = new java.util.HashMap<String, Element>();
ServiceInfo serviceInfo = serviceList.get(0);
for (SchemaInfo schemaInfo : serviceInfo.getSchemas()) {
if (schemaInfo.getElement() != null && schemaInfo.getSystemId() == null) {
String sysId = schemaInfo.getElement().getAttribute("targetNamespce");
if (sysId == null) {
sysId = serviceInfo.getTargetNamespace();
}
schemas.put(sysId, schemaInfo.getElement());
}
if (schemaInfo.getElement() != null && schemaInfo.getSystemId() != null) {
schemas.put(schemaInfo.getSystemId(), schemaInfo.getElement());
}
}
}
context.put(ToolConstants.SCHEMA_MAP, schemas);
context.put(ToolConstants.PORTTYPE_MAP, interfaces);
context.put(ClassCollector.class, new ClassCollector());
Processor processor = frontend.getProcessor();
if (processor instanceof ClassNameProcessor) {
processor.setEnvironment(context);
for (ServiceInfo service : serviceList) {
context.put(ServiceInfo.class, service);
((ClassNameProcessor)processor).processClassNames();
context.put(ServiceInfo.class, null);
}
}
generateTypes();
for (ServiceInfo service : serviceList) {
context.put(ServiceInfo.class, service);
validate(service);
// Build the JavaModel from the ServiceModel
processor.setEnvironment(context);
processor.process();
if (!isSuppressCodeGen()) {
// Generate artifacts
for (FrontEndGenerator generator : frontend.getGenerators()) {
generator.generate(context);
}
}
}
context.remove(ToolConstants.SERVICE_LIST);