Skip to content

Commit

Permalink
[SHRINKDESC-92] Metadata-Plugin supports all descriptors
Browse files Browse the repository at this point in the history
  • Loading branch information
ralfbattenfeld authored and ALRubinger committed Feb 21, 2012
1 parent f48aee2 commit b14ae3d
Show file tree
Hide file tree
Showing 7 changed files with 459 additions and 253 deletions.
541 changes: 345 additions & 196 deletions gen/pom.xml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ public class MetadataDescriptor extends BaseMetadataItem
private String rootElementName;

private String rootElementType;

private boolean generateClasses;

private Map<String, String> namespaces = new HashMap<String, String>();

Expand Down Expand Up @@ -68,4 +70,14 @@ public void setNamespaces(final Map<String, String> namespaces)
{
this.namespaces = namespaces;
}

public boolean isGenerateClasses()
{
return generateClasses;
}

public void setGenerateClasses(final boolean generateClasses)
{
this.generateClasses = generateClasses;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ public void parse(final MetadataParserPath path, final List confList, final bool
metadata.setCurrentPackageApi(metadataConf.getPackageApi());
metadata.setCurrentPackageImpl(metadataConf.getPackageImpl());

if (metadataConf.getElementName() != null && metadataConf.getElementType() != null) {
// if (metadataConf.getElementName() != null && metadataConf.getElementType() != null) {
final MetadataDescriptor metadataDescriptor = new MetadataDescriptor(metadataConf.getDescriptorName());
metadataDescriptor.setRootElementName(metadataConf.getElementName());
metadataDescriptor.setRootElementType(metadataConf.getElementType());
Expand All @@ -122,8 +122,9 @@ public void parse(final MetadataParserPath path, final List confList, final bool
metadataDescriptor.setPackageImpl(metadataConf.getPackageImpl());
metadataDescriptor.setNamespace(metadataConf.getNameSpace());
metadataDescriptor.setNamespaces(metadataConf.getNamespaces());
metadataDescriptor.setGenerateClasses(metadataConf.generateClasses);
metadata.getMetadataDescriptorList().add(metadataDescriptor);
}
// }

if (metadataConf.getPathToXsd().endsWith(".dtd"))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,13 @@ public class MetadataParserConfiguration
*/
protected String elementType;

/**
* If true, then the classes for this descriptor are generated, otherwise this descriptor
* is only used for the import section.
*
*/
protected boolean generateClasses = true;

/**
* Trace flag
*
Expand Down Expand Up @@ -169,5 +176,15 @@ public void setNamespaces(final Map<String, String> namespaces)
{
this.namespaces = namespaces;
}

public boolean isGenerateClasses()
{
return generateClasses;
}

public void setGenerateClasses(final boolean generateClasses)
{
this.generateClasses = generateClasses;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -72,51 +72,61 @@ public void write(final Metadata metadata, final String pathToMetadata)
final Element contributors = doc.createElement("contributors");
rootElement.appendChild(contributors);

final Element contributor = doc.createElement("contributor");
final Element contributorRalf = doc.createElement("contributor");
final Attr contributorName = doc.createAttribute("name");
contributorName.setValue("Ralf Battenfeld");
contributor.setAttributeNode(contributorName);
contributorRalf.setAttributeNode(contributorName);

final Attr mailto = doc.createAttribute("mailto");
mailto.setValue("ralf.battenfeld@bluewin.ch");
contributor.setAttributeNode(mailto);
contributors.appendChild(contributor);
contributorRalf.setAttributeNode(mailto);
contributors.appendChild(contributorRalf);

final Element contributorAndrew = doc.createElement("contributor");
final Attr contributorNameAndrew = doc.createAttribute("name");
contributorNameAndrew.setValue("Andrew Lee Rubinger");
contributorAndrew.setAttributeNode(contributorNameAndrew);

final Attr mailtoAndrew = doc.createAttribute("mailto");
mailtoAndrew.setValue("alr@jboss.org");
contributorAndrew.setAttributeNode(mailtoAndrew);
contributors.appendChild(contributorAndrew);

// add packages
final Element packages = doc.createElement("packages");
rootElement.appendChild(packages);

for (String api: metadata.getPackageApiList())
for (MetadataDescriptor descriptor: metadata.getMetadataDescriptorList())
{
final Element packageApi = doc.createElement("api");
final Attr packageApiName = doc.createAttribute("name");
packageApiName.setValue(api);
packageApiName.setValue(descriptor.getPackageApi());
packageApi.setAttributeNode(packageApiName);

final Attr schemaNameApi = doc.createAttribute("schema");
schemaNameApi.setValue(""); // TODO
schemaNameApi.setValue(descriptor.getSchemaName());
packageApi.setAttributeNode(schemaNameApi);

final Attr generateClassApi = doc.createAttribute("generateClass");
generateClassApi.setValue("true");
generateClassApi.setValue(Boolean.toString(descriptor.isGenerateClasses()));
packageApi.setAttributeNode(generateClassApi);

packages.appendChild(packageApi);
}

for (String impl: metadata.getPackageImplList())
for (MetadataDescriptor descriptor: metadata.getMetadataDescriptorList())
{
final Element packageImpl = doc.createElement("impl");
final Attr packageImplName = doc.createAttribute("name");
packageImplName.setValue(impl);
packageImplName.setValue(descriptor.getPackageImpl());
packageImpl.setAttributeNode(packageImplName);

final Attr schemaNameImpl = doc.createAttribute("schema");
schemaNameImpl.setValue(metadata.getCurrentPackageImpl());
packageImpl.setAttributeNode(schemaNameImpl);

final Attr generateClassImpl = doc.createAttribute("generateClass");
generateClassImpl.setValue("true");
generateClassImpl.setValue(Boolean.toString(descriptor.isGenerateClasses()));
packageImpl.setAttributeNode(generateClassImpl);
packages.appendChild(packageImpl);
}
Expand Down Expand Up @@ -334,54 +344,57 @@ public void write(final Metadata metadata, final String pathToMetadata)
rootElement.appendChild(descriptors);

for (MetadataDescriptor descriptor: metadata.getMetadataDescriptorList())
{
final Element descriptorElement = doc.createElement("descriptor");
descriptors.appendChild(descriptorElement);

final Attr attrName = doc.createAttribute("name");
attrName.setValue(descriptor.getName());
descriptorElement.setAttributeNode(attrName);

final Attr attrSchemaName = doc.createAttribute("schemaName");
attrSchemaName.setValue(descriptor.getSchemaName());
descriptorElement.setAttributeNode(attrSchemaName);

final Attr attrPackageApi = doc.createAttribute("packageApi");
attrPackageApi.setValue(descriptor.getPackageApi());
descriptorElement.setAttributeNode(attrPackageApi);

final Attr attrPackageImpl = doc.createAttribute("packageImpl");
attrPackageImpl.setValue(descriptor.getPackageImpl());
descriptorElement.setAttributeNode(attrPackageImpl);

final Element element = doc.createElement("element");
descriptorElement.appendChild(element);

final Attr attElementName = doc.createAttribute("name");
attElementName.setValue(descriptor.getRootElementName());
element.setAttributeNode(attElementName);

final Attr attElementType = doc.createAttribute("type");
attElementType.setValue(descriptor.getRootElementType());
element.setAttributeNode(attElementType);

for (Iterator it=descriptor.getNamespaces().entrySet().iterator(); it.hasNext(); )
{
Map.Entry entry = (Map.Entry)it.next();
String key = (String)entry.getKey();
String value = (String)entry.getValue();
{
if (descriptor.getRootElementName() != null && descriptor.getRootElementType() != null)
{
final Element descriptorElement = doc.createElement("descriptor");
descriptors.appendChild(descriptorElement);

final Attr attrName = doc.createAttribute("name");
attrName.setValue(descriptor.getName());
descriptorElement.setAttributeNode(attrName);

final Attr namespaceAttrName = doc.createAttribute("name");
namespaceAttrName.setValue(key);
final Attr attrSchemaName = doc.createAttribute("schemaName");
attrSchemaName.setValue(descriptor.getSchemaName());
descriptorElement.setAttributeNode(attrSchemaName);

final Attr namespaceAttrValue = doc.createAttribute("value");
namespaceAttrValue.setValue(value);
final Attr attrPackageApi = doc.createAttribute("packageApi");
attrPackageApi.setValue(descriptor.getPackageApi());
descriptorElement.setAttributeNode(attrPackageApi);

final Element namespaceElement = doc.createElement("namespace");
namespaceElement.setAttributeNode(namespaceAttrName);
namespaceElement.setAttributeNode(namespaceAttrValue);
final Attr attrPackageImpl = doc.createAttribute("packageImpl");
attrPackageImpl.setValue(descriptor.getPackageImpl());
descriptorElement.setAttributeNode(attrPackageImpl);

descriptorElement.appendChild(namespaceElement);
final Element element = doc.createElement("element");
descriptorElement.appendChild(element);

final Attr attElementName = doc.createAttribute("name");
attElementName.setValue(descriptor.getRootElementName());
element.setAttributeNode(attElementName);

final Attr attElementType = doc.createAttribute("type");
attElementType.setValue(descriptor.getRootElementType());
element.setAttributeNode(attElementType);

for (Iterator it=descriptor.getNamespaces().entrySet().iterator(); it.hasNext(); )
{
Map.Entry entry = (Map.Entry)it.next();
String key = (String)entry.getKey();
String value = (String)entry.getValue();

final Attr namespaceAttrName = doc.createAttribute("name");
namespaceAttrName.setValue(key);

final Attr namespaceAttrValue = doc.createAttribute("value");
namespaceAttrValue.setValue(value);

final Element namespaceElement = doc.createElement("namespace");
namespaceElement.setAttributeNode(namespaceAttrName);
namespaceElement.setAttributeNode(namespaceAttrValue);

descriptorElement.appendChild(namespaceElement);
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ public boolean filter(final Metadata metadata, final TreeWalker walker)
{
final String typeStr = MetadataUtil.getAttributeValue(element, "type");
final String mixedStr = MetadataUtil.getAttributeValue(element, "mixed");
final String abstractStr = MetadataUtil.getAttributeValue(element, "abstract");
if (typeStr == null && (!element.hasChildNodes()))
{
final String dataTypeName = MetadataUtil.getAttributeValue(element, "name");
Expand All @@ -69,6 +70,16 @@ else if (mixedStr != null && mixedStr.equals("true"))
classElement.setIsAttribute(false);
metadata.addClassElement(complexTypeName, classElement);
}
else if (abstractStr != null && abstractStr.equals("true"))
{
final String complexTypeName = MetadataUtil.getAttributeValue(element, "name");
final MetadataElement classElement = new MetadataElement();
classElement.setName(complexTypeName);
classElement.setType(metadata.getCurrentNamespace() + ":" + complexTypeName);
classElement.setIsRef(false);
classElement.setIsAttribute(false);
metadata.addClassElement(complexTypeName, classElement);
}
else if (
!MetadataUtil.hasChildOf(element, XsdElementEnum.simpleContent) &&
!MetadataUtil.hasChildOf(element, XsdElementEnum.complexContent) &&
Expand Down
3 changes: 3 additions & 0 deletions metadata-parser/src/main/resources/META-INF/ddJavaAll.xsl
Original file line number Diff line number Diff line change
Expand Up @@ -2943,6 +2943,9 @@
<xsl:when test="$pText='xsdStringType'">
<xsl:sequence select="'String'"/>
</xsl:when>
<xsl:when test="$pText='xsdNMTOKENType'">
<xsl:sequence select="'String'"/>
</xsl:when>
<xsl:when test="$pText='string'">
<xsl:sequence select="'String'"/>
</xsl:when>
Expand Down

0 comments on commit b14ae3d

Please sign in to comment.