validate(context);
FrontEndProfile frontend = context.get(FrontEndProfile.class);
if (frontend == null) {
Message msg = new Message("FOUND_NO_FRONTEND", LOG);
throw new ToolException(msg);
}
WSDLConstants.WSDLVersion version = getWSDLVersion();
String wsdlURL = (String)context.get(ToolConstants.CFG_WSDLURL);
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) {
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());
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
}
}
Map<String, InterfaceInfo> interfaces = new LinkedHashMap<String, InterfaceInfo>();
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);
}
}
}
// Build projects: compile classes and copy resources etc.
if (context.optionSet(ToolConstants.CFG_COMPILE)) {
new ClassUtils().compile(context);
}
if (context.isExcludeNamespaceEnabled()) {
try {
removeExcludeFiles();
} catch (IOException e) {
throw new ToolException(e);
}
}
}
}