}
Vector xmlObjectsVector = new Vector();
//create the type mapper
JavaTypeMapper mapper = new JavaTypeMapper();
String baseURI = cgconfig.getBaseURI();
for (int i = 0; i < schemas.size(); i++) {
XmlSchema schema = (XmlSchema)schemas.get(i);
InputSource inputSource =
new InputSource(new StringReader(getSchemaAsString(schema)));
inputSource.setSystemId(baseURI);
xmlObjectsVector.add(inputSource);
}
File outputDir = new File(cgconfig.getOutputLocation(), "src");
outputDir.mkdir();
Map nsMap = cgconfig.getUri2PackageNameMap();
for (int i = 0; i < xmlObjectsVector.size(); i++) {
SchemaCompiler sc = XJC.createSchemaCompiler();
XmlSchema schema = (XmlSchema)schemas.get(i);
String pkg = null;
if (nsMap != null) {
pkg = (String)nsMap.get(schema.getTargetNamespace());
}
if (pkg == null) {
pkg = extractNamespace(schema);
}
sc.setDefaultPackageName(pkg);
sc.parseSchema((InputSource)xmlObjectsVector.elementAt(i));
// Bind the XML
S2JJAXBModel jaxbModel = sc.bind();
// Emit the code artifacts
JCodeModel codeModel = jaxbModel.generateCode(null, null);
FileCodeWriter writer = new FileCodeWriter(outputDir);
codeModel.build(writer);
Collection mappings = jaxbModel.getMappings();
Iterator iter = mappings.iterator();
while (iter.hasNext()) {
Mapping mapping = (Mapping)iter.next();
QName qn = mapping.getElement();
String typeName = mapping.getType().getTypeClass().fullName();
mapper.addTypeMappingName(qn, typeName);
}
}
// Return the type mapper
return mapper;