Added providerHost in language module and remove name.

Added default uri/schemaUri/etc on namespace contexts.
Added default for id/tag of Element.
Added attribute aliases to xsd output.
Added name alias for id on namespace.
Added tag alias for id on element.
This commit is contained in:
Willem Cazander 2013-04-28 12:07:37 +02:00
parent d271edb1ee
commit 8f2408a207
33 changed files with 695 additions and 395 deletions

View file

@ -28,6 +28,7 @@ import java.util.logging.Logger;
import org.x4o.xml.conv.ObjectConverter; import org.x4o.xml.conv.ObjectConverter;
import org.x4o.xml.conv.text.ClassConverter; import org.x4o.xml.conv.text.ClassConverter;
import org.x4o.xml.eld.lang.AttributeAliasElement;
import org.x4o.xml.eld.lang.BeanElement; import org.x4o.xml.eld.lang.BeanElement;
import org.x4o.xml.eld.lang.DescriptionElement; import org.x4o.xml.eld.lang.DescriptionElement;
import org.x4o.xml.eld.lang.ElementClassAddParentElement; import org.x4o.xml.eld.lang.ElementClassAddParentElement;
@ -61,8 +62,8 @@ import org.x4o.xml.lang.X4OLanguageModuleLoaderException;
public class EldModuleLoaderCore implements X4OLanguageModuleLoader { public class EldModuleLoaderCore implements X4OLanguageModuleLoader {
private Logger logger = null; private Logger logger = null;
private static final String PP_CEL_PROVIDER = "cel.x4o.org"; private static final String PP_CEL_PROVIDER_HOST = "cel.x4o.org";
private static final String PP_CEL_XMLNS = "http://"+PP_CEL_PROVIDER+"/xml/ns/"; private static final String PP_CEL_XMLNS = "http://"+PP_CEL_PROVIDER_HOST+"/xml/ns/";
private static final String PP_CEL_XSD_FILE = "-1.0.xsd"; private static final String PP_CEL_XSD_FILE = "-1.0.xsd";
private static final String CEL_CORE = "cel-core"; private static final String CEL_CORE = "cel-core";
private static final String CEL_ROOT = "cel-root"; private static final String CEL_ROOT = "cel-root";
@ -107,6 +108,8 @@ public class EldModuleLoaderCore implements X4OLanguageModuleLoader {
ElementNamespaceContext namespaceRoot = createNamespaceContext(language,CEL_ROOT,CEL_ROOT_URI,CEL_ROOT_XSD_URI,CEL_ROOT_XSD_FILE,CEL_ROOT); ElementNamespaceContext namespaceRoot = createNamespaceContext(language,CEL_ROOT,CEL_ROOT_URI,CEL_ROOT_XSD_URI,CEL_ROOT_XSD_FILE,CEL_ROOT);
namespaceRoot.setLanguageRoot(true); // Only define single language root so xsd is (mostly) not cicle import. namespaceRoot.setLanguageRoot(true); // Only define single language root so xsd is (mostly) not cicle import.
ElementClass rootElement = createElementClass(language,"module",language.getLanguageConfiguration().getDefaultElementLanguageModule(),ModuleElement.class,"The module tag is the root xml element for ELD language."); ElementClass rootElement = createElementClass(language,"module",language.getLanguageConfiguration().getDefaultElementLanguageModule(),ModuleElement.class,"The module tag is the root xml element for ELD language.");
rootElement.addElementClassAttribute(createElementClassAttribute(language,"id",true,null));
rootElement.addElementClassAttribute(createElementClassAttribute(language,"providerHost",true,null));
namespaceRoot.addElementClass(rootElement); namespaceRoot.addElementClass(rootElement);
startAndAddNamespace(language,languageModule,namespaceRoot); startAndAddNamespace(language,languageModule,namespaceRoot);
} }
@ -121,6 +124,12 @@ public class EldModuleLoaderCore implements X4OLanguageModuleLoader {
ElementClass ec = null; ElementClass ec = null;
namespace.addElementClass(createElementClass(language,"attribute",language.getLanguageConfiguration().getDefaultElementClassAttribute(),null,"Defines xml element attribute.")); namespace.addElementClass(createElementClass(language,"attribute",language.getLanguageConfiguration().getDefaultElementClassAttribute(),null,"Defines xml element attribute."));
ec = createElementClass(language,"attributeAlias",null,AttributeAliasElement.class,"Adds an attribute alias.");
ec.addElementClassAttribute(createElementClassAttribute(language,"name",true,null));
ec.addElementParent(CEL_CORE_URI, "attribute");
namespace.addElementClass(ec);
namespace.addElementClass(createElementClass(language,"classConverter",ClassConverter.class,null,"Converts string attribute to java class instance.")); namespace.addElementClass(createElementClass(language,"classConverter",ClassConverter.class,null,"Converts string attribute to java class instance."));
ec = createElementClass(language,"namespace",language.getLanguageConfiguration().getDefaultElementNamespaceContext(),null,"Defines an xml namespace."); ec = createElementClass(language,"namespace",language.getLanguageConfiguration().getDefaultElementNamespaceContext(),null,"Defines an xml namespace.");
@ -184,10 +193,10 @@ public class EldModuleLoaderCore implements X4OLanguageModuleLoader {
private void configLanguageModule(X4OLanguageModule languageModule) { private void configLanguageModule(X4OLanguageModule languageModule) {
languageModule.setId("cel-module"); languageModule.setId("cel-module");
languageModule.setName("Core Element Languag Module"); languageModule.setProviderName("Core Element Languag Module");
languageModule.setProviderName(PP_CEL_PROVIDER); languageModule.setProviderHost(PP_CEL_PROVIDER_HOST);
languageModule.setDescription("Core Element Language Module Loader"); languageModule.setDescription("Core Element Language Module Loader");
languageModule.setSourceResource(this.getClass().getSimpleName()); // todo check if oke. languageModule.setSourceResource(this.getClass().getSimpleName()); //TODO: check if oke.
} }
private void startAndAddNamespace(X4OLanguageLocal language,X4OLanguageModule languageModule,ElementNamespaceContext namespace) throws X4OLanguageModuleLoaderException { private void startAndAddNamespace(X4OLanguageLocal language,X4OLanguageModule languageModule,ElementNamespaceContext namespace) throws X4OLanguageModuleLoaderException {
@ -230,7 +239,7 @@ public class EldModuleLoaderCore implements X4OLanguageModuleLoader {
private ElementClass createElementClass(X4OLanguage language,String tag,Class<?> objectClass,Class<?> elementClass,String description) throws X4OLanguageModuleLoaderException { private ElementClass createElementClass(X4OLanguage language,String tag,Class<?> objectClass,Class<?> elementClass,String description) throws X4OLanguageModuleLoaderException {
try { try {
ElementClass result = (ElementClass)X4OLanguageClassLoader.newInstance(language.getLanguageConfiguration().getDefaultElementClass()); ElementClass result = (ElementClass)X4OLanguageClassLoader.newInstance(language.getLanguageConfiguration().getDefaultElementClass());
result.setTag(tag); result.setId(tag);
result.setObjectClass(objectClass); result.setObjectClass(objectClass);
result.setElementClass(elementClass); result.setElementClass(elementClass);
result.setDescription(description); result.setDescription(description);

View file

@ -44,7 +44,7 @@ public class AttributeAliasElement extends AbstractElement {
public void doElementEnd() throws ElementException { public void doElementEnd() throws ElementException {
String alias = getAttributes().get("name"); String alias = getAttributes().get("name");
if (alias==null) { if (alias==null) {
throw new ElementException("'name' attribute is not set on: "+getElementClass().getTag()); throw new ElementException("'name' attribute is not set on: "+getElementClass().getId());
} }
if (getParent().getElementObject() instanceof ElementClassAttribute) { if (getParent().getElementObject() instanceof ElementClassAttribute) {
((ElementClassAttribute)getParent().getElementObject()).addAttributeAlias(alias); ((ElementClassAttribute)getParent().getElementObject()).addAttributeAlias(alias);

View file

@ -43,7 +43,7 @@ public class ElementClassAddParentElement extends AbstractElement {
public void doElementEnd() throws ElementException { public void doElementEnd() throws ElementException {
String tag = getAttributes().get("tag"); String tag = getAttributes().get("tag");
if (tag==null) { if (tag==null) {
throw new ElementException("'tag' attribute is not set on: "+getElementClass().getTag()); throw new ElementException("'tag' attribute is not set on: "+getElementClass().getId());
} }
String namespaceUri = getAttributes().get("uri"); String namespaceUri = getAttributes().get("uri");
if (namespaceUri==null) { if (namespaceUri==null) {

View file

@ -100,6 +100,48 @@ public class ElementModuleBindingHandler extends AbstractElementBindingHandler<
} }
if (childObject instanceof ElementNamespaceContext) { if (childObject instanceof ElementNamespaceContext) {
ElementNamespaceContext elementNamespaceContext = (ElementNamespaceContext)childObject; ElementNamespaceContext elementNamespaceContext = (ElementNamespaceContext)childObject;
if (elementNamespaceContext.getId()==null) {
throw new NullPointerException("Can add ElementNamespaceContext without id.");
}
// TODO: no language here so move to EL default on eld attribute tag
if (elementNamespaceContext.getId()!=null) {
StringBuffer buf = new StringBuffer(30);
for (char c:elementNamespaceContext.getId().toLowerCase().toCharArray()) {
if (Character.isLetter(c)) {buf.append(c);}
if (Character.isDigit(c)) {buf.append(c);}
if ('-'==c) {buf.append(c);}
}
String id = buf.toString();
elementNamespaceContext.setId(id);
}
if (elementNamespaceContext.getUri()==null) {
elementNamespaceContext.setUri(
"http://"+languageModule.getProviderHost()+
"/xml/ns/"+x4oParsingContext.getLanguageName()+
"-"+elementNamespaceContext.getId());
}
if (elementNamespaceContext.getSchemaUri()==null) {
elementNamespaceContext.setSchemaUri(
"http://"+languageModule.getProviderHost()+
"/xml/ns/"+x4oParsingContext.getLanguageName()+
"-"+elementNamespaceContext.getId()+
"-"+x4oParsingContext.getLanguageVersion()+
".xsd"
);
}
if (elementNamespaceContext.getSchemaResource()==null) {
elementNamespaceContext.setSchemaResource(
x4oParsingContext.getLanguageName()+
"-"+elementNamespaceContext.getId()+
"-"+x4oParsingContext.getLanguageVersion()+
".xsd"
);
}
if (elementNamespaceContext.getSchemaPrefix()==null) {
elementNamespaceContext.setSchemaPrefix(elementNamespaceContext.getId());
}
try { try {
elementNamespaceContext.setElementNamespaceInstanceProvider((ElementNamespaceInstanceProvider)X4OLanguageClassLoader.newInstance(childElement.getLanguageContext().getLanguage().getLanguageConfiguration().getDefaultElementNamespaceInstanceProvider())); elementNamespaceContext.setElementNamespaceInstanceProvider((ElementNamespaceInstanceProvider)X4OLanguageClassLoader.newInstance(childElement.getLanguageContext().getLanguage().getLanguageConfiguration().getDefaultElementNamespaceInstanceProvider()));
} catch (Exception e) { } catch (Exception e) {

View file

@ -60,7 +60,11 @@ public class ElementNamespaceContextBindingHandler extends AbstractElementBindin
*/ */
public void bindChild(Element childElement,ElementNamespaceContext parent, Object childObject) throws ElementBindingHandlerException { public void bindChild(Element childElement,ElementNamespaceContext parent, Object childObject) throws ElementBindingHandlerException {
if (childObject instanceof ElementClass) { if (childObject instanceof ElementClass) {
parent.addElementClass((ElementClass)childObject); ElementClass elementClass = (ElementClass)childObject;
if (elementClass.getId()==null && elementClass.getObjectClass()!=null) {
elementClass.setId(elementClass.getObjectClass().getSimpleName()); // TODO: move to defaults layer
}
parent.addElementClass(elementClass);
} }
} }

View file

@ -43,7 +43,7 @@ public class SkipPhaseElement extends AbstractElement {
public void doElementEnd() throws ElementException { public void doElementEnd() throws ElementException {
String phase = getAttributes().get("name"); String phase = getAttributes().get("name");
if (phase==null) { if (phase==null) {
throw new ElementException("'name' attribute is not set on: "+getElementClass().getTag()); throw new ElementException("'name' attribute is not set on: "+getElementClass().getId());
} }
if (getParent().getElementObject() instanceof ElementClass) { if (getParent().getElementObject() instanceof ElementClass) {
((ElementClass)getParent().getElementObject()).addSkipPhase(phase); ((ElementClass)getParent().getElementObject()).addSkipPhase(phase);

View file

@ -38,7 +38,9 @@ import org.x4o.xml.element.ElementBindingHandler;
import org.x4o.xml.element.ElementClass; import org.x4o.xml.element.ElementClass;
import org.x4o.xml.element.ElementClassAttribute; import org.x4o.xml.element.ElementClassAttribute;
import org.x4o.xml.element.ElementInterface; import org.x4o.xml.element.ElementInterface;
import org.x4o.xml.element.ElementMetaBase;
import org.x4o.xml.element.ElementNamespaceContext; import org.x4o.xml.element.ElementNamespaceContext;
import org.x4o.xml.io.XMLConstants;
import org.x4o.xml.lang.X4OLanguageModule; import org.x4o.xml.lang.X4OLanguageModule;
import org.x4o.xml.lang.X4OLanguage; import org.x4o.xml.lang.X4OLanguage;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
@ -149,13 +151,11 @@ public class EldXsdXmlWriter {
public void startSchema(ElementNamespaceContext ns) throws SAXException { public void startSchema(ElementNamespaceContext ns) throws SAXException {
xmlWriter.startDocument(); xmlWriter.startDocument();
writeIgnorableWhitespace(XMLConstants.CHAR_NEWLINE);
writeComment(COMMENT_SEPERATOR);
writeIgnorableWhitespace(XMLConstants.CHAR_NEWLINE);
// this is a mess; // this is a mess;
char[] msg;
msg = "\n".toCharArray();
xmlWriter.ignorableWhitespace(msg,0,msg.length);
msg = COMMENT_SEPERATOR.toCharArray();
xmlWriter.comment(msg,0,msg.length);
String desc = "Automatic generated schema for language: "+language.getLanguageName(); String desc = "Automatic generated schema for language: "+language.getLanguageName();
int space = COMMENT_SEPERATOR.length()-desc.length()-(2*COMMENT_TEXT.length())-4; int space = COMMENT_SEPERATOR.length()-desc.length()-(2*COMMENT_TEXT.length())-4;
StringBuffer b = new StringBuffer(COMMENT_SEPERATOR.length()); StringBuffer b = new StringBuffer(COMMENT_SEPERATOR.length());
@ -168,17 +168,10 @@ public class EldXsdXmlWriter {
} }
b.append(COMMENT_TEXT); b.append(COMMENT_TEXT);
b.append(" "); b.append(" ");
writeComment(b.toString());
msg = "\n".toCharArray(); writeIgnorableWhitespace(XMLConstants.CHAR_NEWLINE);
xmlWriter.ignorableWhitespace(msg,0,msg.length); writeComment(COMMENT_SEPERATOR);
msg = b.toString().toCharArray(); writeIgnorableWhitespace(XMLConstants.CHAR_NEWLINE);
xmlWriter.comment(msg,0,msg.length);
msg = "\n".toCharArray();
xmlWriter.ignorableWhitespace(msg,0,msg.length);
msg = COMMENT_SEPERATOR.toCharArray();
xmlWriter.comment(msg,0,msg.length);
msg = "\n".toCharArray();
xmlWriter.ignorableWhitespace(msg,0,msg.length);
X4OLanguageModule module = null; X4OLanguageModule module = null;
for (X4OLanguageModule elm:language.getLanguageModules()) { for (X4OLanguageModule elm:language.getLanguageModules()) {
@ -190,19 +183,15 @@ public class EldXsdXmlWriter {
} }
b = new StringBuffer(COMMENT_SEPERATOR.length()); b = new StringBuffer(COMMENT_SEPERATOR.length());
b.append("\n\tProviderName:\t"); b.append("\n\tID:\t\t"); b.append(module.getId());
b.append(module.getProviderName()); b.append("\n\tProviderName:\t"); b.append(module.getProviderName());
b.append("\n\tModuleName:\t\t"); b.append("\n\tProviderHost:\t"); b.append(module.getProviderHost());
b.append(module.getName()); b.append("\n\tNamespaces:\t\t"); b.append(module.getElementNamespaceContexts().size());
b.append("\n\tNamespaces:\t\t"); b.append("\n\tUri:\t\t\t"); b.append(ns.getUri());
b.append(module.getElementNamespaceContexts().size()); b.append("\n\tUri schema:\t"); b.append(ns.getSchemaUri());
b.append("\n\tNamespace:\t\t"); b.append("\n\tCreated on:\t\t"); b.append(new Date());
b.append(ns.getUri());
b.append("\n\tCreated on:\t\t");
b.append(new Date());
b.append("\n"); b.append("\n");
msg = b.toString().toCharArray(); writeComment(b.toString());
xmlWriter.comment(msg,0,msg.length);
xmlWriter.startPrefixMapping("", SCHEMA_URI); xmlWriter.startPrefixMapping("", SCHEMA_URI);
@ -234,6 +223,7 @@ public class EldXsdXmlWriter {
public void endSchema() throws SAXException { public void endSchema() throws SAXException {
xmlWriter.endElement (SCHEMA_URI, "schema" , ""); xmlWriter.endElement (SCHEMA_URI, "schema" , "");
writeIgnorableWhitespace(XMLConstants.CHAR_NEWLINE);
xmlWriter.endDocument(); xmlWriter.endDocument();
} }
@ -241,13 +231,13 @@ public class EldXsdXmlWriter {
AttributesImpl atts = new AttributesImpl(); AttributesImpl atts = new AttributesImpl();
if (nsWrite.getLanguageRoot()!=null && nsWrite.getLanguageRoot()) { if (nsWrite.getLanguageRoot()!=null && nsWrite.getLanguageRoot()) {
atts.addAttribute ("", "name", "", "", ec.getTag()); atts.addAttribute ("", "name", "", "", ec.getId());
xmlWriter.startElement (SCHEMA_URI, "element", "", atts); // Only in the language root xsd there is an element. xmlWriter.startElement (SCHEMA_URI, "element", "", atts); // Only in the language root xsd there is an element.
atts = new AttributesImpl(); atts = new AttributesImpl();
xmlWriter.startElement (SCHEMA_URI, "complexType", "", atts); xmlWriter.startElement (SCHEMA_URI, "complexType", "", atts);
} else { } else {
atts.addAttribute ("", "name", "", "", ec.getTag()+"Type"); atts.addAttribute ("", "name", "", "", ec.getId()+"Type");
xmlWriter.startElement (SCHEMA_URI, "complexType", "", atts); xmlWriter.startElement (SCHEMA_URI, "complexType", "", atts);
} }
@ -289,8 +279,15 @@ public class EldXsdXmlWriter {
if (eca.getRequired()!=null && eca.getRequired()) { if (eca.getRequired()!=null && eca.getRequired()) {
atts.addAttribute ("", "use", "", "", "required"); atts.addAttribute ("", "use", "", "", "required");
} }
xmlWriter.startElement (SCHEMA_URI, "attribute", "", atts); writeElementAttribute(eca,atts);
xmlWriter.endElement(SCHEMA_URI, "attribute", "");
for (String alias:eca.getAttributeAliases()) {
attrNames.add(alias);
atts = new AttributesImpl();
atts.addAttribute ("", "name", "", "", alias);
atts.addAttribute ("", "type", "", "", "string");
writeElementAttribute(null,atts);
}
} }
for (X4OLanguageModule mod:language.getLanguageModules()) { for (X4OLanguageModule mod:language.getLanguageModules()) {
@ -299,16 +296,13 @@ public class EldXsdXmlWriter {
atts = new AttributesImpl(); atts = new AttributesImpl();
atts.addAttribute ("", "name", "", "", eah.getAttributeName()); atts.addAttribute ("", "name", "", "", eah.getAttributeName());
atts.addAttribute ("", "type", "", "", "string"); atts.addAttribute ("", "type", "", "", "string");
xmlWriter.startElement (SCHEMA_URI, "attribute", "", atts); writeElementAttribute(eah,atts);
xmlWriter.endElement(SCHEMA_URI, "attribute", "");
} }
} }
if (ec.getAutoAttributes()!=null && ec.getAutoAttributes()==false) { if (ec.getAutoAttributes()!=null && ec.getAutoAttributes()==false) {
// oke, reverse this if and rm whitespace. // oke, reverse this if and rm whitespace.
char[] msg; writeIgnorableWhitespace(" ");
msg = " ".toCharArray();
xmlWriter.ignorableWhitespace(msg,0,msg.length);
} else { } else {
@ -374,8 +368,8 @@ public class EldXsdXmlWriter {
List<String> refElements = new ArrayList<String>(20); List<String> refElements = new ArrayList<String>(20);
for (ElementClass checkClass:ns.getElementClasses()) { for (ElementClass checkClass:ns.getElementClasses()) {
List<String> parents = checkClass.getElementParents(nsWrite.getUri()); List<String> parents = checkClass.getElementParents(nsWrite.getUri());
if (parents!=null && parents.contains(ecWrite.getTag())) { if (parents!=null && parents.contains(ecWrite.getId())) {
refElements.add(checkClass.getTag()); refElements.add(checkClass.getId());
continue; continue;
} }
if (checkClass.getObjectClass()==null) { if (checkClass.getObjectClass()==null) {
@ -383,8 +377,8 @@ public class EldXsdXmlWriter {
} }
for (ElementInterface ei:language.findElementInterfaces(checkClass.getObjectClass())) { for (ElementInterface ei:language.findElementInterfaces(checkClass.getObjectClass())) {
parents = ei.getElementParents(nsWrite.getUri()); parents = ei.getElementParents(nsWrite.getUri());
if (parents!=null && parents.contains(ecWrite.getTag())) { if (parents!=null && parents.contains(ecWrite.getId())) {
refElements.add(checkClass.getTag()); refElements.add(checkClass.getId());
break; break;
} }
} }
@ -395,7 +389,7 @@ public class EldXsdXmlWriter {
Class<?> checkObjectClass = checkClass.getObjectClass(); Class<?> checkObjectClass = checkClass.getObjectClass();
List<ElementBindingHandler> b = language.findElementBindingHandlers(objectClass,checkObjectClass); List<ElementBindingHandler> b = language.findElementBindingHandlers(objectClass,checkObjectClass);
if (b.isEmpty()==false) { if (b.isEmpty()==false) {
refElements.add(checkClass.getTag()); refElements.add(checkClass.getId());
} }
} }
@ -429,23 +423,57 @@ public class EldXsdXmlWriter {
return; // is done in writeElementClass return; // is done in writeElementClass
} }
AttributesImpl atts = new AttributesImpl(); AttributesImpl atts = new AttributesImpl();
atts.addAttribute ("", "name", "", "", ec.getTag()); atts.addAttribute ("", "name", "", "", ec.getId());
atts.addAttribute ("", "type", "", "", "this:"+ec.getTag()+"Type"); atts.addAttribute ("", "type", "", "", "this:"+ec.getId()+"Type");
xmlWriter.startElement(SCHEMA_URI, "element", "", atts); // Only in the language root xsd there is an element. xmlWriter.startElement(SCHEMA_URI, "element", "", atts);
writeElementMetaBase(ec);
if (ec.getDescription()!=null) {
atts = new AttributesImpl();
xmlWriter.startElement(SCHEMA_URI, "annotation", "", atts);
atts = new AttributesImpl();
atts.addAttribute ("", "xml:lang", "", "", "en");
xmlWriter.startElement(SCHEMA_URI, "documentation", "", atts);
char[] msg = ec.getDescription().toCharArray();
xmlWriter.characters(msg,0,msg.length);
xmlWriter.endElement(SCHEMA_URI, "documentation", "");
xmlWriter.endElement(SCHEMA_URI, "annotation", "");
}
xmlWriter.endElement(SCHEMA_URI, "element", ""); xmlWriter.endElement(SCHEMA_URI, "element", "");
} }
private void writeElementAttribute(ElementMetaBase base,AttributesImpl atts) throws SAXException {
xmlWriter.startElement (SCHEMA_URI, "attribute", "", atts);
writeElementMetaBase(base);
xmlWriter.endElement(SCHEMA_URI, "attribute", "");
}
private void writeElementMetaBase(ElementMetaBase base) throws SAXException {
if (base==null) {
return;
}
if (base.getDescription()==null) {
return;
}
AttributesImpl atts = new AttributesImpl();
xmlWriter.startElement(SCHEMA_URI, "annotation", "", atts);
atts = new AttributesImpl();
atts.addAttribute ("", "xml:lang", "", "", "en");
xmlWriter.startElement(SCHEMA_URI, "documentation", "", atts);
writeCharacters(base.getDescription());
xmlWriter.endElement(SCHEMA_URI, "documentation", "");
xmlWriter.endElement(SCHEMA_URI, "annotation", "");
}
private void writeCharacters(String text) throws SAXException {
if (text==null) {
return;
}
char[] msg = text.toCharArray();
xmlWriter.characters(msg,0,msg.length);
}
private void writeComment(String text) throws SAXException {
if (text==null) {
return;
}
char[] msg = text.toCharArray();
xmlWriter.comment(msg,0,msg.length);
}
private void writeIgnorableWhitespace(String text) throws SAXException {
if (text==null) {
return;
}
char[] msg = text.toCharArray();
xmlWriter.ignorableWhitespace(msg,0,msg.length);
}
} }

View file

@ -34,7 +34,6 @@ import java.util.List;
*/ */
public abstract class AbstractElementClass extends AbstractElementClassBase implements ElementClass { public abstract class AbstractElementClass extends AbstractElementClassBase implements ElementClass {
private String tag = null;
private Class<?> objectClass = null; private Class<?> objectClass = null;
private Class<?> elementClass = null; private Class<?> elementClass = null;
private Boolean autoAttributes = true; private Boolean autoAttributes = true;
@ -47,20 +46,6 @@ public abstract class AbstractElementClass extends AbstractElementClassBase impl
skipPhases = new ArrayList<String>(3); skipPhases = new ArrayList<String>(3);
} }
/**
* @see ElementClass#getTag()
*/
public String getTag() {
return tag;
}
/**
* @see ElementClass#setTag(String)
*/
public void setTag(String tag) {
this.tag = tag;
}
/** /**
* @see ElementClass#getElementClass() * @see ElementClass#getElementClass()
*/ */

View file

@ -81,10 +81,10 @@ public abstract class AbstractElementNamespaceContext extends AbstractElementMet
* @see org.x4o.xml.element.ElementNamespaceContext#addElementClass(org.x4o.xml.element.ElementClass) * @see org.x4o.xml.element.ElementNamespaceContext#addElementClass(org.x4o.xml.element.ElementClass)
*/ */
public void addElementClass(ElementClass elementClass) { public void addElementClass(ElementClass elementClass) {
if (elementClass.getTag()==null) { if (elementClass.getId()==null) {
throw new NullPointerException("ElementClass not correctly configured getTag is null."); throw new NullPointerException("ElementClass not correctly configured getId is null.");
} }
elementClasses.put(elementClass.getTag(), elementClass); elementClasses.put(elementClass.getId(), elementClass);
} }
/** /**

View file

@ -33,19 +33,7 @@ import java.util.List;
* @version 1.0 Aug 11, 2005 * @version 1.0 Aug 11, 2005
*/ */
public interface ElementClass extends ElementClassBase { public interface ElementClass extends ElementClassBase {
/**
* Gets the xml tag the Element should handle.
* @return the tag
*/
String getTag();
/**
* Sets the XML tag the Element should handle.
* @param tag the tag to set
*/
void setTag(String tag);
/** /**
* Gets the ElementClass. * Gets the ElementClass.
* @return the elementClass * @return the elementClass

View file

@ -171,17 +171,17 @@ public class DefaultX4OWriter<T> extends AbstractX4OWriter<T> {
} }
String elementUri = findElementUri(element); String elementUri = findElementUri(element);
writer.startElement(elementUri, element.getElementClass().getTag(), "", atts); writer.startElement(elementUri, element.getElementClass().getId(), "", atts);
for (Element e:element.getChilderen()) { for (Element e:element.getChilderen()) {
writeTree(writer,e); writeTree(writer,e);
} }
writer.endElement(elementUri, element.getElementClass().getTag(), ""); writer.endElement(elementUri, element.getElementClass().getId(), "");
} }
private String findElementUri(Element e) { private String findElementUri(Element e) {
for (X4OLanguageModule mod:getLanguageContext().getLanguage().getLanguageModules()) { for (X4OLanguageModule mod:getLanguageContext().getLanguage().getLanguageModules()) {
for (ElementNamespaceContext c:mod.getElementNamespaceContexts()) { for (ElementNamespaceContext c:mod.getElementNamespaceContexts()) {
ElementClass ec = c.getElementClass(e.getElementClass().getTag()); ElementClass ec = c.getElementClass(e.getElementClass().getId());
if (ec!=null) { if (ec!=null) {
return c.getUri(); return c.getUri();
} }

View file

@ -220,8 +220,9 @@ public class X4ODebugWriter {
for (X4OLanguageModule module:elementLanguage.getLanguage().getLanguageModules()) { for (X4OLanguageModule module:elementLanguage.getLanguage().getLanguageModules()) {
AttributesImpl atts = new AttributesImpl(); AttributesImpl atts = new AttributesImpl();
atts.addAttribute ("", "className", "", "", module.getClass().getName()); atts.addAttribute ("", "className", "", "", module.getClass().getName());
atts.addAttribute ("", "name", "", "", module.getName()); atts.addAttribute ("", "id", "", "", module.getId());
atts.addAttribute ("", "providerName", "", "", module.getProviderName()); atts.addAttribute ("", "providerName", "", "", module.getProviderName());
atts.addAttribute ("", "providerHost", "", "", module.getProviderHost());
if (module.getLanguageModuleLoader()==null) { if (module.getLanguageModuleLoader()==null) {
atts.addAttribute ("", "elementLanguageModuleLoaderClassName", "", "", "null"); atts.addAttribute ("", "elementLanguageModuleLoaderClassName", "", "", "null");
} else { } else {
@ -366,12 +367,12 @@ public class X4ODebugWriter {
private StringBuffer getElementPath(Element element,StringBuffer buff) { private StringBuffer getElementPath(Element element,StringBuffer buff) {
if (element.getParent()==null) { if (element.getParent()==null) {
buff.append('/'); // root slash buff.append('/'); // root slash
buff.append(element.getElementClass().getTag()); buff.append(element.getElementClass().getId());
return buff; return buff;
} }
buff = getElementPath(element.getParent(),buff); buff = getElementPath(element.getParent(),buff);
buff.append('/'); buff.append('/');
buff.append(element.getElementClass().getTag()); buff.append(element.getElementClass().getId());
return buff; return buff;
} }
@ -435,7 +436,9 @@ public class X4ODebugWriter {
private void debugElementClass(ElementClass elementClass) throws SAXException { private void debugElementClass(ElementClass elementClass) throws SAXException {
AttributesImpl atts = new AttributesImpl(); AttributesImpl atts = new AttributesImpl();
atts.addAttribute ("", "tag", "", "", elementClass.getTag()); atts.addAttribute ("", "id", "", "", elementClass.getId());
atts.addAttribute ("", "autoAttributes", "", "", ""+elementClass.getAutoAttributes());
//atts.addAttribute ("", "schemaContentBase", "", "", ""+elementClass.getSchemaContentBase());
atts.addAttribute ("", "description", "", "", elementClass.getDescription()); atts.addAttribute ("", "description", "", "", elementClass.getDescription());
atts.addAttribute ("", "objectClassName", "", "", ""+elementClass.getObjectClass()); atts.addAttribute ("", "objectClassName", "", "", ""+elementClass.getObjectClass());
atts.addAttribute ("", "className", "", "", elementClass.getClass().getName()); atts.addAttribute ("", "className", "", "", elementClass.getClass().getName());

View file

@ -182,7 +182,7 @@ public class X4OTagHandler extends DefaultHandler2 {
logger.finest("XMLTAG-END: "+namespaceUri+":"+tag); logger.finest("XMLTAG-END: "+namespaceUri+":"+tag);
} }
if (overrideSaxHandler!=null) { if (overrideSaxHandler!=null) {
if (overrideSaxElement.getElementClass().getTag().equals(tag)) { if (overrideSaxElement.getElementClass().getId().equals(tag)) {
overrideSaxHandler.endDocument(); overrideSaxHandler.endDocument();
overrideSaxHandler = null; overrideSaxHandler = null;
overrideSaxElement = null; // elementStack code make sure doElementEnd is runned on override element. overrideSaxElement = null; // elementStack code make sure doElementEnd is runned on override element.
@ -229,7 +229,7 @@ public class X4OTagHandler extends DefaultHandler2 {
try { try {
e.doCharacters(text); e.doCharacters(text);
} catch (ElementException ee) { } catch (ElementException ee) {
throw new SAXParseException("Error while doCharacters element: '"+e.getElementClass().getTag()+"' "+ee.getMessage(),locator,ee); throw new SAXParseException("Error while doCharacters element: '"+e.getElementClass().getId()+"' "+ee.getMessage(),locator,ee);
} }
} }
@ -254,7 +254,7 @@ public class X4OTagHandler extends DefaultHandler2 {
try { try {
e.doIgnorableWhitespace(text); e.doIgnorableWhitespace(text);
} catch (ElementException ee) { } catch (ElementException ee) {
throw new SAXParseException("Error while doIgnorableWhitespace element: '"+e.getElementClass().getTag()+"' "+ee.getMessage(),locator,ee); throw new SAXParseException("Error while doIgnorableWhitespace element: '"+e.getElementClass().getId()+"' "+ee.getMessage(),locator,ee);
} }
} }
@ -279,7 +279,7 @@ public class X4OTagHandler extends DefaultHandler2 {
try { try {
e.doComment(text); e.doComment(text);
} catch (ElementException ee) { } catch (ElementException ee) {
throw new SAXParseException("Error while doComment element: '"+e.getElementClass().getTag()+"' "+ee.getMessage(),locator,ee); throw new SAXParseException("Error while doComment element: '"+e.getElementClass().getId()+"' "+ee.getMessage(),locator,ee);
} }
} }

View file

@ -45,23 +45,15 @@ import org.x4o.xml.element.ElementNamespaceContext;
public abstract class AbstractX4OLanguageModule extends AbstractElementMetaBase implements X4OLanguageModule { public abstract class AbstractX4OLanguageModule extends AbstractElementMetaBase implements X4OLanguageModule {
private Logger logger = null; private Logger logger = null;
private String name=null;
private String providerName=null; private String providerName=null;
private String providerHost=null;
private String sourceResource = null; private String sourceResource = null;
/** The globalAttribute handlers */
private List<ElementAttributeHandler> elementAttributeHandlers = null; private List<ElementAttributeHandler> elementAttributeHandlers = null;
/** The binding rules */
private List<ElementBindingHandler> elementBindingHandlers = null; private List<ElementBindingHandler> elementBindingHandlers = null;
private List<ElementConfiguratorGlobal> elementConfiguratorGlobals = null; private List<ElementConfiguratorGlobal> elementConfiguratorGlobals = null;
private List<ElementInterface> elementInterfaces = null; private List<ElementInterface> elementInterfaces = null;
private Map<String,ElementNamespaceContext> elementNamespaceContexts = null; private Map<String,ElementNamespaceContext> elementNamespaceContexts = null;
private X4OLanguageModuleLoader elementLanguageModuleLoader = null; private X4OLanguageModuleLoader elementLanguageModuleLoader = null;
/** /**
@ -76,35 +68,35 @@ public abstract class AbstractX4OLanguageModule extends AbstractElementMetaBase
elementInterfaces = new ArrayList<ElementInterface>(20); elementInterfaces = new ArrayList<ElementInterface>(20);
elementNamespaceContexts = new HashMap<String,ElementNamespaceContext>(10); elementNamespaceContexts = new HashMap<String,ElementNamespaceContext>(10);
} }
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/** /**
* @return the providerName * @return the providerName
*/ */
public String getProviderName() { public String getProviderName() {
return providerName; return providerName;
} }
/** /**
* @param providerName the providerName to set * @param providerName the providerName to set
*/ */
public void setProviderName(String providerName) { public void setProviderName(String providerName) {
this.providerName = providerName; this.providerName = providerName;
} }
/**
* @return the providerHost
*/
public String getProviderHost() {
return providerHost;
}
/**
* @param providerHost the providerHost to set
*/
public void setProviderHost(String providerHost) {
this.providerHost = providerHost;
}
/** /**
* @see org.x4o.xml.lang.X4OLanguageModule#addElementAttributeHandler(ElementAttributeHandler) * @see org.x4o.xml.lang.X4OLanguageModule#addElementAttributeHandler(ElementAttributeHandler)
*/ */
@ -208,20 +200,6 @@ public abstract class AbstractX4OLanguageModule extends AbstractElementMetaBase
if (elementNamespaceContext.getUri()==null) { if (elementNamespaceContext.getUri()==null) {
throw new NullPointerException("Can add ElementNamespaceContext without uri."); throw new NullPointerException("Can add ElementNamespaceContext without uri.");
} }
if (elementNamespaceContext.getId()==null) {
StringBuffer buf = new StringBuffer(30);
for (char c:elementNamespaceContext.getUri().toLowerCase().toCharArray()) {
if (Character.isLetter(c)) {buf.append(c);}
if (Character.isDigit(c)) {buf.append(c);}
}
String id = buf.toString();
if (id.startsWith("http")) {id = id.substring(4);}
elementNamespaceContext.setId(id);
}
// TODO: no language here so move to EL default on eld attribute tag
//if (elementNamespaceContext.getSchemaUri()==null) {
// elementNamespaceContext.setSchemaUri(elementNamespaceContext.getUri()+elementNamespaceContext.)
//}
logger.fine("Adding namespaceUri: "+elementNamespaceContext.getUri()); logger.fine("Adding namespaceUri: "+elementNamespaceContext.getUri());
elementNamespaceContexts.put(elementNamespaceContext.getUri(), elementNamespaceContext); elementNamespaceContexts.put(elementNamespaceContext.getUri(), elementNamespaceContext);
} }

View file

@ -140,7 +140,7 @@ public class DefaultX4OLanguage implements X4OLanguageLocal {
for (ElementClass ec:nsContext.getElementClasses()) { for (ElementClass ec:nsContext.getElementClasses()) {
if (ec.getObjectClass()!=null && ec.getObjectClass().equals(objectClass)) { if (ec.getObjectClass()!=null && ec.getObjectClass().equals(objectClass)) {
try { try {
return nsContext.getElementNamespaceInstanceProvider().createElementInstance(context, ec.getTag()); return nsContext.getElementNamespaceInstanceProvider().createElementInstance(context, ec.getId());
} catch (ElementNamespaceInstanceProviderException e) { } catch (ElementNamespaceInstanceProviderException e) {
throw new RuntimeException(e.getMessage(),e); // TODO: fix me throw new RuntimeException(e.getMessage(),e); // TODO: fix me
} }

View file

@ -41,16 +41,6 @@ import org.x4o.xml.element.ElementNamespaceContext;
*/ */
public interface X4OLanguageModule extends ElementMetaBase { public interface X4OLanguageModule extends ElementMetaBase {
/**
* @return the Name.
*/
String getName();
/**
* @param name the module name to set.
*/
void setName(String name);
/** /**
* @return the providerName. * @return the providerName.
*/ */
@ -61,6 +51,16 @@ public interface X4OLanguageModule extends ElementMetaBase {
*/ */
void setProviderName(String providerName); void setProviderName(String providerName);
/**
* @return the providerHost
*/
public String getProviderHost();
/**
* @param providerHost the providerHost to set
*/
public void setProviderHost(String providerHost);
/** /**
* Adds an ElementAttributeHandler. * Adds an ElementAttributeHandler.
* @param elementAttributeHandler Adds an ElmentAttributeHandler. * @param elementAttributeHandler Adds an ElmentAttributeHandler.

View file

@ -981,11 +981,11 @@ public class X4OPhaseLanguageRead {
handler.startPrefixMapping(prefix, nameSpace); handler.startPrefixMapping(prefix, nameSpace);
startedPrefix.add(prefix); startedPrefix.add(prefix);
} }
handler.startElement (nameSpace, element.getElementClass().getTag(), "", atts); handler.startElement (nameSpace, element.getElementClass().getId(), "", atts);
for (Element e:element.getAllChilderen()) { for (Element e:element.getAllChilderen()) {
printXML(e); printXML(e);
} }
handler.endElement (nameSpace, element.getElementClass().getTag(), ""); handler.endElement (nameSpace, element.getElementClass().getId(), "");
} }
}; };
return result; return result;

View file

@ -144,7 +144,7 @@ public class X4OPhaseLanguageWrite {
if (nsContext.getLanguageRoot()!=null && nsContext.getLanguageRoot()) { if (nsContext.getLanguageRoot()!=null && nsContext.getLanguageRoot()) {
for (ElementClass ec:nsContext.getElementClasses()) { for (ElementClass ec:nsContext.getElementClasses()) {
if (ec.getObjectClass()!=null && ec.getObjectClass().equals(objectClass)) { if (ec.getObjectClass()!=null && ec.getObjectClass().equals(objectClass)) {
return nsContext.getElementNamespaceInstanceProvider().createElementInstance(languageContext, ec.getTag()); return nsContext.getElementNamespaceInstanceProvider().createElementInstance(languageContext, ec.getId());
} }
} }
} }
@ -154,7 +154,7 @@ public class X4OPhaseLanguageWrite {
for (ElementNamespaceContext nsContext:modContext.getElementNamespaceContexts()) { for (ElementNamespaceContext nsContext:modContext.getElementNamespaceContexts()) {
for (ElementClass ec:nsContext.getElementClasses()) { for (ElementClass ec:nsContext.getElementClasses()) {
if (ec.getObjectClass()!=null && ec.getObjectClass().equals(objectClass)) { if (ec.getObjectClass()!=null && ec.getObjectClass().equals(objectClass)) {
return nsContext.getElementNamespaceInstanceProvider().createElementInstance(languageContext, ec.getTag()); return nsContext.getElementNamespaceInstanceProvider().createElementInstance(languageContext, ec.getId());
} }
} }
} }

View file

@ -1,13 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- ===== Automatic generated schema for language: cel ===== --> <!-- ===== Automatic generated schema for language: cel ===== -->
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- <!--
ProviderName: cel.x4o.org ID: cel-module
ModuleName: Core Element Languag Module ProviderName: Core Element Languag Module
ProviderHost: cel.x4o.org
Namespaces: 2 Namespaces: 2
Namespace: http://cel.x4o.org/xml/ns/cel-core Namespace: http://cel.x4o.org/xml/ns/cel-core
Created on: Sat Apr 27 20:01:59 CEST 2013 Created on: Sun Apr 28 11:41:33 CEST 2013
--> -->
<schema xmlns="http://www.w3.org/2001/XMLSchema" <schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:this="http://cel.x4o.org/xml/ns/cel-core" xmlns:this="http://cel.x4o.org/xml/ns/cel-core"
@ -19,8 +20,8 @@
</choice> </choice>
<attribute name="uri" type="string" use="required"/> <attribute name="uri" type="string" use="required"/>
<attribute name="name" type="string"/> <attribute name="name" type="string"/>
<attribute name="prefixMapping" type="string"/>
<attribute name="languageRoot" type="boolean"/> <attribute name="languageRoot" type="boolean"/>
<attribute name="prefixMapping" type="string"/>
<attribute name="elementNamespaceInstanceProvider" type="string"/> <attribute name="elementNamespaceInstanceProvider" type="string"/>
<attribute name="schemaUri" type="string"/> <attribute name="schemaUri" type="string"/>
<attribute name="schemaResource" type="string"/> <attribute name="schemaResource" type="string"/>
@ -44,7 +45,6 @@
</choice> </choice>
<attribute name="objectClass" type="string"/> <attribute name="objectClass" type="string"/>
<attribute name="elementClass" type="string"/> <attribute name="elementClass" type="string"/>
<attribute name="tag" type="string"/>
<attribute name="schemaContentComplex" type="boolean"/> <attribute name="schemaContentComplex" type="boolean"/>
<attribute name="schemaContentMixed" type="boolean"/> <attribute name="schemaContentMixed" type="boolean"/>
<attribute name="schemaContentBase" type="string"/> <attribute name="schemaContentBase" type="string"/>
@ -60,6 +60,11 @@
<attribute name="configAction" type="string"/> <attribute name="configAction" type="string"/>
<anyAttribute/> <anyAttribute/>
</complexType> </complexType>
<complexType name="attributeAliasType">
<choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="name" type="string" use="required"/>
<anyAttribute/>
</complexType>
<complexType name="configuratorType"> <complexType name="configuratorType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/> <element name="description" type="this:descriptionType"/>
@ -77,17 +82,18 @@
</complexType> </complexType>
<complexType name="attributeType"> <complexType name="attributeType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="attributeAlias" type="this:attributeAliasType"/>
<element name="classConverter" type="this:classConverterType"/> <element name="classConverter" type="this:classConverterType"/>
<element name="description" type="this:descriptionType"/> <element name="description" type="this:descriptionType"/>
</choice> </choice>
<attribute name="name" type="string"/> <attribute name="name" type="string"/>
<attribute name="required" type="boolean"/>
<attribute name="defaultValue" type="string"/>
<attribute name="runConverters" type="boolean"/>
<attribute name="objectConverter" type="string"/>
<attribute name="runBeanValue" type="boolean"/> <attribute name="runBeanValue" type="boolean"/>
<attribute name="runResolveEL" type="boolean"/> <attribute name="runResolveEL" type="boolean"/>
<attribute name="writeOrder" type="integer"/> <attribute name="writeOrder" type="integer"/>
<attribute name="objectConverter" type="string"/>
<attribute name="runConverters" type="boolean"/>
<attribute name="required" type="boolean"/>
<attribute name="defaultValue" type="string"/>
<attribute name="description" type="string"/> <attribute name="description" type="string"/>
<attribute name="id" type="string"/> <attribute name="id" type="string"/>
</complexType> </complexType>
@ -144,6 +150,12 @@
</documentation> </documentation>
</annotation> </annotation>
</element> </element>
<element name="attributeAlias" type="this:attributeAliasType">
<annotation>
<documentation xml:lang="en">Adds an attribute alias.
</documentation>
</annotation>
</element>
<element name="configurator" type="this:configuratorType"> <element name="configurator" type="this:configuratorType">
<annotation> <annotation>
<documentation xml:lang="en">Define generic configurator for language. <documentation xml:lang="en">Define generic configurator for language.
@ -186,4 +198,4 @@
</documentation> </documentation>
</annotation> </annotation>
</element> </element>
</schema> </schema>

View file

@ -1,13 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- ===== Automatic generated schema for language: cel ===== --> <!-- ===== Automatic generated schema for language: cel ===== -->
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- <!--
ProviderName: cel.x4o.org ID: cel-module
ModuleName: Core Element Languag Module ProviderName: Core Element Languag Module
ProviderHost: cel.x4o.org
Namespaces: 2 Namespaces: 2
Namespace: http://cel.x4o.org/xml/ns/cel-root Namespace: http://cel.x4o.org/xml/ns/cel-root
Created on: Sat Apr 27 20:01:59 CEST 2013 Created on: Sun Apr 28 11:41:33 CEST 2013
--> -->
<schema xmlns="http://www.w3.org/2001/XMLSchema" <schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:cel-core="http://cel.x4o.org/xml/ns/cel-core" xmlns:cel-core="http://cel.x4o.org/xml/ns/cel-core"
@ -23,12 +24,12 @@
<element ref="cel-core:elementInterface"/> <element ref="cel-core:elementInterface"/>
<element ref="cel-core:namespace"/> <element ref="cel-core:namespace"/>
</choice> </choice>
<attribute name="name" type="string"/> <attribute name="id" type="string" use="required"/>
<attribute name="providerHost" type="string" use="required"/>
<attribute name="sourceResource" type="string"/> <attribute name="sourceResource" type="string"/>
<attribute name="languageModuleLoader" type="string"/> <attribute name="languageModuleLoader" type="string"/>
<attribute name="providerName" type="string"/> <attribute name="providerName" type="string"/>
<attribute name="description" type="string"/> <attribute name="description" type="string"/>
<attribute name="id" type="string"/>
</complexType> </complexType>
</element> </element>
</schema> </schema>

View file

@ -1,13 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- ===== Automatic generated schema for language: eld ===== --> <!-- ===== Automatic generated schema for language: eld ===== -->
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- <!--
ProviderName: eld.x4o.org ID: eld-module
ModuleName: Element Language Definition ProviderName: Element Language Definition
ProviderHost: eld.x4o.org
Namespaces: 3 Namespaces: 3
Namespace: http://eld.x4o.org/xml/ns/eld-conv Uri: http://eld.x4o.org/xml/ns/eld-conv
Created on: Sat Apr 27 20:06:33 CEST 2013 Uri schema: http://eld.x4o.org/xml/ns/eld-conv-0.8.xsd
Created on: Sun Apr 28 11:56:32 CEST 2013
--> -->
<schema xmlns="http://www.w3.org/2001/XMLSchema" <schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:this="http://eld.x4o.org/xml/ns/eld-conv" xmlns:this="http://eld.x4o.org/xml/ns/eld-conv"
@ -25,7 +27,12 @@
</complexType> </complexType>
<complexType name="beanConverterType"> <complexType name="beanConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/> <choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="bean.class" type="string"/> <attribute name="bean.class" type="string">
<annotation>
<documentation xml:lang="en">The class name of the converter to load.
</documentation>
</annotation>
</attribute>
<anyAttribute/> <anyAttribute/>
</complexType> </complexType>
<complexType name="stringSplitConverterStepType"> <complexType name="stringSplitConverterStepType">
@ -42,10 +49,30 @@
<element name="stringSplitConverter" type="this:stringSplitConverterType"/> <element name="stringSplitConverter" type="this:stringSplitConverterType"/>
<element name="urlConverter" type="this:urlConverterType"/> <element name="urlConverter" type="this:urlConverterType"/>
</choice> </choice>
<attribute name="toMethod" type="string"/> <attribute name="toMethod" type="string">
<attribute name="fromOrder" type="string" use="required"/> <annotation>
<attribute name="fromMethod" type="string" use="required"/> <documentation xml:lang="en">The convert 'to' method step.
<attribute name="toOrder" type="string" use="required"/> </documentation>
</annotation>
</attribute>
<attribute name="fromOrder" type="string" use="required">
<annotation>
<documentation xml:lang="en">The convert 'from' order.
</documentation>
</annotation>
</attribute>
<attribute name="fromMethod" type="string" use="required">
<annotation>
<documentation xml:lang="en">The convert 'from' method step.
</documentation>
</annotation>
</attribute>
<attribute name="toOrder" type="string" use="required">
<annotation>
<documentation xml:lang="en">The convert 'to' order.
</documentation>
</annotation>
</attribute>
<attribute name="objectConverter" type="string"/> <attribute name="objectConverter" type="string"/>
</complexType> </complexType>
<complexType name="doubleConverterType"> <complexType name="doubleConverterType">
@ -61,11 +88,36 @@
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="stringSplitConverterStep" type="this:stringSplitConverterStepType"/> <element name="stringSplitConverterStep" type="this:stringSplitConverterStepType"/>
</choice> </choice>
<attribute name="useNativeType" type="string"/> <attribute name="useNativeType" type="string">
<attribute name="singleToMethod" type="string"/> <annotation>
<attribute name="splitSize" type="string" use="required"/> <documentation xml:lang="en">Set to true to convert to native data type.
<attribute name="split" type="string" use="required"/> </documentation>
<attribute name="classTo" type="string" use="required"/> </annotation>
</attribute>
<attribute name="singleToMethod" type="string">
<annotation>
<documentation xml:lang="en">Shortcut to use only this method for the 'to' convert.
</documentation>
</annotation>
</attribute>
<attribute name="splitSize" type="string" use="required">
<annotation>
<documentation xml:lang="en">The split value expected size.
</documentation>
</annotation>
</attribute>
<attribute name="split" type="string" use="required">
<annotation>
<documentation xml:lang="en">The split regex.
</documentation>
</annotation>
</attribute>
<attribute name="classTo" type="string" use="required">
<annotation>
<documentation xml:lang="en">The class name to convert the string to.
</documentation>
</annotation>
</attribute>
</complexType> </complexType>
<complexType name="integerConverterType"> <complexType name="integerConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/> <choice minOccurs="0" maxOccurs="unbounded"/>
@ -98,4 +150,4 @@
<element name="floatConverter" type="this:floatConverterType"/> <element name="floatConverter" type="this:floatConverterType"/>
<element name="characterConverter" type="this:characterConverterType"/> <element name="characterConverter" type="this:characterConverterType"/>
<element name="enumConverter" type="this:enumConverterType"/> <element name="enumConverter" type="this:enumConverterType"/>
</schema> </schema>

View file

@ -1,13 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- ===== Automatic generated schema for language: eld ===== --> <!-- ===== Automatic generated schema for language: eld ===== -->
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- <!--
ProviderName: eld.x4o.org ID: eld-module
ModuleName: Element Language Definition ProviderName: Element Language Definition
ProviderHost: eld.x4o.org
Namespaces: 3 Namespaces: 3
Namespace: http://eld.x4o.org/xml/ns/eld-lang Uri: http://eld.x4o.org/xml/ns/eld-lang
Created on: Sat Apr 27 20:06:33 CEST 2013 Uri schema: http://eld.x4o.org/xml/ns/eld-lang-0.8.xsd
Created on: Sun Apr 28 11:56:32 CEST 2013
--> -->
<schema xmlns="http://www.w3.org/2001/XMLSchema" <schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv" xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv"
@ -19,15 +21,20 @@
<element name="description" type="this:descriptionType"/> <element name="description" type="this:descriptionType"/>
<element name="element" type="this:elementType"/> <element name="element" type="this:elementType"/>
</choice> </choice>
<attribute name="uri" type="string" use="required"/> <attribute name="id" type="string" use="required">
<annotation>
<documentation xml:lang="en">The namespace id.
</documentation>
</annotation>
</attribute>
<attribute name="name" type="string"/> <attribute name="name" type="string"/>
<attribute name="prefixMapping" type="string"/>
<attribute name="languageRoot" type="boolean"/>
<attribute name="elementNamespaceInstanceProvider" type="string"/> <attribute name="elementNamespaceInstanceProvider" type="string"/>
<attribute name="uri" type="string"/>
<attribute name="schemaUri" type="string"/> <attribute name="schemaUri" type="string"/>
<attribute name="schemaResource" type="string"/> <attribute name="schemaResource" type="string"/>
<attribute name="schemaPrefix" type="string"/> <attribute name="schemaPrefix" type="string"/>
<attribute name="id" type="string"/> <attribute name="prefixMapping" type="string"/>
<attribute name="languageRoot" type="boolean"/>
<attribute name="description" type="string"/> <attribute name="description" type="string"/>
</complexType> </complexType>
<complexType name="descriptionType"> <complexType name="descriptionType">
@ -39,7 +46,12 @@
</complexType> </complexType>
<complexType name="elementSkipPhaseType"> <complexType name="elementSkipPhaseType">
<choice minOccurs="0" maxOccurs="unbounded"/> <choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="name" type="string" use="required"/> <attribute name="name" type="string" use="required">
<annotation>
<documentation xml:lang="en">The name of the phase to skip.
</documentation>
</annotation>
</attribute>
<anyAttribute/> <anyAttribute/>
</complexType> </complexType>
<complexType name="elementType"> <complexType name="elementType">
@ -52,60 +64,145 @@
<element name="elementParent" type="this:elementParentType"/> <element name="elementParent" type="this:elementParentType"/>
<element name="elementSkipPhase" type="this:elementSkipPhaseType"/> <element name="elementSkipPhase" type="this:elementSkipPhaseType"/>
</choice> </choice>
<attribute name="objectClass" type="string"/> <attribute name="id" type="string">
<attribute name="elementClass" type="string"/> <annotation>
<documentation xml:lang="en">The attribute id. (with tag as alias)
</documentation>
</annotation>
</attribute>
<attribute name="tag" type="string"/> <attribute name="tag" type="string"/>
<attribute name="schemaContentMixed" type="boolean"/> <attribute name="objectClass" type="string">
<annotation>
<documentation xml:lang="en">The class of the wrapped object.
</documentation>
</annotation>
</attribute>
<attribute name="elementClass" type="string">
<annotation>
<documentation xml:lang="en">An custom element class to config object.
</documentation>
</annotation>
</attribute>
<attribute name="schemaContentComplex" type="boolean"/> <attribute name="schemaContentComplex" type="boolean"/>
<attribute name="autoAttributes" type="boolean"/> <attribute name="autoAttributes" type="boolean"/>
<attribute name="schemaContentMixed" type="boolean"/>
<attribute name="schemaContentBase" type="string"/> <attribute name="schemaContentBase" type="string"/>
<attribute name="id" type="string"/>
<attribute name="description" type="string"/> <attribute name="description" type="string"/>
</complexType> </complexType>
<complexType name="attributeAliasType"> <complexType name="attributeAliasType">
<choice minOccurs="0" maxOccurs="unbounded"/> <choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="name" type="string" use="required"/> <attribute name="name" type="string" use="required">
<annotation>
<documentation xml:lang="en">The alias name to add to the attribute.
</documentation>
</annotation>
</attribute>
<anyAttribute/> <anyAttribute/>
</complexType> </complexType>
<complexType name="configuratorGlobalType"> <complexType name="configuratorGlobalType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/> <element name="description" type="this:descriptionType"/>
</choice> </choice>
<attribute name="id" type="string" use="required"/> <attribute name="id" type="string" use="required">
<attribute name="bean.class" type="string" use="required"/> <annotation>
<attribute name="configAction" type="string"/> <documentation xml:lang="en">The global element configurator id.
</documentation>
</annotation>
</attribute>
<attribute name="bean.class" type="string" use="required">
<annotation>
<documentation xml:lang="en">The class of the element configurator.
</documentation>
</annotation>
</attribute>
<attribute name="configAction" type="string">
<annotation>
<documentation xml:lang="en">If set to true then run in config phase.
</documentation>
</annotation>
</attribute>
<anyAttribute/> <anyAttribute/>
</complexType> </complexType>
<complexType name="configuratorType"> <complexType name="configuratorType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/> <element name="description" type="this:descriptionType"/>
</choice> </choice>
<attribute name="id" type="string" use="required"/> <attribute name="id" type="string" use="required">
<attribute name="bean.class" type="string" use="required"/> <annotation>
<attribute name="configAction" type="string"/> <documentation xml:lang="en">The element configurator id.
</documentation>
</annotation>
</attribute>
<attribute name="bean.class" type="string" use="required">
<annotation>
<documentation xml:lang="en">The class of the global element configurator.
</documentation>
</annotation>
</attribute>
<attribute name="configAction" type="string">
<annotation>
<documentation xml:lang="en">If set to true then run in config phase.
</documentation>
</annotation>
</attribute>
<anyAttribute/> <anyAttribute/>
</complexType> </complexType>
<complexType name="attributeFromBodyType"> <complexType name="attributeFromBodyType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/> <element name="description" type="this:descriptionType"/>
</choice> </choice>
<attribute name="bodyType" type="string"/> <attribute name="bodyType" type="string">
<attribute name="id" type="string" use="required"/> <annotation>
<attribute name="name" type="string" use="required"/> <documentation xml:lang="en">See org.x4o.xml.element.Element.ElementType for options defaults to 'characters'.
</documentation>
</annotation>
</attribute>
<attribute name="id" type="string" use="required">
<annotation>
<documentation xml:lang="en">The id for this configurator.
</documentation>
</annotation>
</attribute>
<attribute name="name" type="string" use="required">
<annotation>
<documentation xml:lang="en">The attribute name to fill the value.
</documentation>
</annotation>
</attribute>
</complexType> </complexType>
<complexType name="attributeHandlerType"> <complexType name="attributeHandlerType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="attributeHandlerNextAttribute" type="this:attributeHandlerNextAttributeType"/> <element name="attributeHandlerNextAttribute" type="this:attributeHandlerNextAttributeType"/>
<element name="description" type="this:descriptionType"/> <element name="description" type="this:descriptionType"/>
</choice> </choice>
<attribute name="attributeName" type="string" use="required"/> <attribute name="attributeName" type="string" use="required">
<attribute name="id" type="string" use="required"/> <annotation>
<attribute name="bean.class" type="string" use="required"/> <documentation xml:lang="en">The xml attribute name.
</documentation>
</annotation>
</attribute>
<attribute name="id" type="string" use="required">
<annotation>
<documentation xml:lang="en">The atttribute handler id.
</documentation>
</annotation>
</attribute>
<attribute name="bean.class" type="string" use="required">
<annotation>
<documentation xml:lang="en">The class of the attribute handler.
</documentation>
</annotation>
</attribute>
<anyAttribute/> <anyAttribute/>
</complexType> </complexType>
<complexType name="attributeHandlerNextAttributeType"> <complexType name="attributeHandlerNextAttributeType">
<choice minOccurs="0" maxOccurs="unbounded"/> <choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="attributeName" type="string" use="required"/> <attribute name="attributeName" type="string" use="required">
<annotation>
<documentation xml:lang="en">The attribute name to run after this attribute.
</documentation>
</annotation>
</attribute>
<anyAttribute/> <anyAttribute/>
</complexType> </complexType>
<complexType name="attributeType"> <complexType name="attributeType">
@ -126,41 +223,86 @@
<element name="bean" type="this:beanType"/> <element name="bean" type="this:beanType"/>
<element name="description" type="this:descriptionType"/> <element name="description" type="this:descriptionType"/>
</choice> </choice>
<attribute name="id" type="string">
<annotation>
<documentation xml:lang="en">The attribute id. (with name as alias)
</documentation>
</annotation>
</attribute>
<attribute name="name" type="string"/> <attribute name="name" type="string"/>
<attribute name="defaultValue" type="string"/>
<attribute name="required" type="boolean"/> <attribute name="required" type="boolean"/>
<attribute name="writeOrder" type="integer"/> <attribute name="defaultValue" type="string"/>
<attribute name="runBeanValue" type="boolean"/>
<attribute name="runResolveEL" type="boolean"/>
<attribute name="runConverters" type="boolean"/>
<attribute name="objectConverter" type="string"/> <attribute name="objectConverter" type="string"/>
<attribute name="id" type="string"/> <attribute name="runBeanValue" type="boolean"/>
<attribute name="writeOrder" type="integer"/>
<attribute name="runConverters" type="boolean"/>
<attribute name="runResolveEL" type="boolean"/>
<attribute name="description" type="string"/> <attribute name="description" type="string"/>
</complexType> </complexType>
<complexType name="bindingHandlerType"> <complexType name="bindingHandlerType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/> <element name="description" type="this:descriptionType"/>
</choice> </choice>
<attribute name="id" type="string" use="required"/> <attribute name="id" type="string" use="required">
<attribute name="bean.class" type="string" use="required"/> <annotation>
<documentation xml:lang="en">The binding handler id.
</documentation>
</annotation>
</attribute>
<attribute name="bean.class" type="string" use="required">
<annotation>
<documentation xml:lang="en">The class of the binding handler.
</documentation>
</annotation>
</attribute>
<anyAttribute/> <anyAttribute/>
</complexType> </complexType>
<complexType name="beanType"> <complexType name="beanType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="attributeHandlerNextAttribute" type="this:attributeHandlerNextAttributeType"/> <element name="attributeHandlerNextAttribute" type="this:attributeHandlerNextAttributeType"/>
</choice> </choice>
<attribute name="bean.class" type="string"/> <attribute name="bean.class" type="string">
<annotation>
<documentation xml:lang="en">The class name of the the class to load.
</documentation>
</annotation>
</attribute>
<anyAttribute/> <anyAttribute/>
</complexType> </complexType>
<complexType name="classBindingHandlerType"> <complexType name="classBindingHandlerType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/> <element name="description" type="this:descriptionType"/>
</choice> </choice>
<attribute name="id" type="string" use="required"/> <attribute name="id" type="string" use="required">
<attribute name="childClass" type="string" use="required"/> <annotation>
<attribute name="parentClass" type="string" use="required"/> <documentation xml:lang="en">The id for this binding handler.
<attribute name="getMethod" type="string" use="required"/> </documentation>
<attribute name="addMethod" type="string" use="required"/> </annotation>
</attribute>
<attribute name="childClass" type="string" use="required">
<annotation>
<documentation xml:lang="en">The child class.
</documentation>
</annotation>
</attribute>
<attribute name="parentClass" type="string" use="required">
<annotation>
<documentation xml:lang="en">The parent class.
</documentation>
</annotation>
</attribute>
<attribute name="getMethod" type="string" use="required">
<annotation>
<documentation xml:lang="en">The method name of the method used to get the childeren of the parent.
</documentation>
</annotation>
</attribute>
<attribute name="addMethod" type="string" use="required">
<annotation>
<documentation xml:lang="en">The method name of the method used to add the child to the parent.
</documentation>
</annotation>
</attribute>
</complexType> </complexType>
<complexType name="elementInterfaceType"> <complexType name="elementInterfaceType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
@ -173,14 +315,34 @@
<element name="description" type="this:descriptionType"/> <element name="description" type="this:descriptionType"/>
<element name="elementParent" type="this:elementParentType"/> <element name="elementParent" type="this:elementParentType"/>
</choice> </choice>
<attribute name="id" type="string" use="required"/> <attribute name="id" type="string" use="required">
<attribute name="interfaceClass" type="string" use="required"/> <annotation>
<documentation xml:lang="en">The interface id.
</documentation>
</annotation>
</attribute>
<attribute name="interfaceClass" type="string" use="required">
<annotation>
<documentation xml:lang="en">The interface class.
</documentation>
</annotation>
</attribute>
<attribute name="description" type="string"/> <attribute name="description" type="string"/>
</complexType> </complexType>
<complexType name="elementParentType"> <complexType name="elementParentType">
<choice minOccurs="0" maxOccurs="unbounded"/> <choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="tag" type="string"/> <attribute name="tag" type="string">
<attribute name="uri" type="string"/> <annotation>
<documentation xml:lang="en">The parent tag to have object for.
</documentation>
</annotation>
</attribute>
<attribute name="uri" type="string">
<annotation>
<documentation xml:lang="en">The element namespace uri if non local parent.
</documentation>
</annotation>
</attribute>
<anyAttribute/> <anyAttribute/>
</complexType> </complexType>
<element name="namespace" type="this:namespaceType"> <element name="namespace" type="this:namespaceType">
@ -279,4 +441,4 @@
</documentation> </documentation>
</annotation> </annotation>
</element> </element>
</schema> </schema>

View file

@ -28,8 +28,8 @@
xmlns="http://cel.x4o.org/xml/ns/cel-core" xmlns="http://cel.x4o.org/xml/ns/cel-core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://cel.x4o.org/xml/ns/cel-root http://cel.x4o.org/xml/ns/cel-root-1.0.xsd" xsi:schemaLocation="http://cel.x4o.org/xml/ns/cel-root http://cel.x4o.org/xml/ns/cel-root-1.0.xsd"
name="Element Language Definition" providerName="Element Language Definition"
providerName="eld.x4o.org" providerHost="eld.x4o.org"
id="eld-module" id="eld-module"
> >
<description>The full element language definition(eld) which is used to define xml languages.</description> <description>The full element language definition(eld) which is used to define xml languages.</description>
@ -52,11 +52,17 @@
id="eld-root" id="eld-root"
> >
<description>Single root namespace so xsd schema generation works correct.</description> <description>Single root namespace so xsd schema generation works correct.</description>
<element tag="module" objectClass="${parentLanguageConfiguration.defaultElementLanguageModule}" elementClass="org.x4o.xml.eld.lang.ModuleElement"> <element id="module" objectClass="${parentLanguageConfiguration.defaultElementLanguageModule}" elementClass="org.x4o.xml.eld.lang.ModuleElement">
<description>The module root element.</description>
<attribute id="id" required="true"> <attribute id="id" required="true">
<description>The module id.</description> <description>The module id.</description>
</attribute> </attribute>
<description>The module root element.</description> <attribute id="providerHost" required="true">
<description>The provider host like langx.someorg.domain for uri/etc defaults.</description>
</attribute>
<attribute id="providerName">
<description>The provider name in normal en:lang.</description>
</attribute>
</element> </element>
</namespace> </namespace>
@ -71,24 +77,28 @@
<description>Some basic language definitions and some helper tags.</description> <description>Some basic language definitions and some helper tags.</description>
<!-- First copy some core elements over from parent config --> <!-- First copy some core elements over from parent config -->
<element tag="namespace" objectClass="${parentLanguageConfiguration.defaultElementNamespaceContext}"> <element id="namespace" objectClass="${parentLanguageConfiguration.defaultElementNamespaceContext}">
<description>Defines an namespace for the language.</description> <description>Defines an namespace for the language.</description>
<attribute id="uri" required="true"> <attribute id="id" required="true">
<description>The namespace id.</description> <description>The namespace id.</description>
</attribute> </attribute>
</element> </element>
<element tag="element" objectClass="${parentLanguageConfiguration.defaultElementClass}"> <element id="element" objectClass="${parentLanguageConfiguration.defaultElementClass}">
<description>The xml element.</description> <description>The xml element.</description>
<attribute id="id">
<attributeAlias name="tag"/>
<description>The attribute id. (with tag as alias)</description>
</attribute>
<attribute id="objectClass"> <attribute id="objectClass">
<description>The class of the wrapped object.</description> <description>The class of the wrapped object.</description>
<classConverter/> <classConverter/>
</attribute> </attribute>
<attribute id="elementClass"> <attribute id="elementClass">
<description>An custom element class to config object.</description> <description>An custom element class to config object.</description>
<classConverter/> <classConverter/>
</attribute> </attribute>
</element> </element>
<element tag="elementInterface" objectClass="${parentLanguageConfiguration.defaultElementInterface}"> <element id="elementInterface" objectClass="${parentLanguageConfiguration.defaultElementInterface}">
<description>Config element objects by java interface.</description> <description>Config element objects by java interface.</description>
<attribute id="id" required="true"> <attribute id="id" required="true">
<description>The interface id.</description> <description>The interface id.</description>
@ -98,13 +108,17 @@
<classConverter/> <classConverter/>
</attribute> </attribute>
</element> </element>
<element tag="attribute" objectClass="${parentLanguageConfiguration.defaultElementClassAttribute}"> <element id="attribute" objectClass="${parentLanguageConfiguration.defaultElementClassAttribute}">
<description>XML Element Attribute tag.</description> <description>XML Element Attribute tag.</description>
<attribute id="id">
<attributeAlias name="name"/>
<description>The attribute id. (with name as alias)</description>
</attribute>
</element> </element>
<!-- Create some support elements to make language readable. --> <!-- Create some support elements to make language readable. -->
<element tag="bindingHandler" elementClass="org.x4o.xml.eld.lang.BeanElement"> <element id="bindingHandler" elementClass="org.x4o.xml.eld.lang.BeanElement">
<description>Define an className in bean.class for an ElementBindingHandler interface.</description> <description>Define an className in bean.class for an ElementBindingHandler interface.</description>
<attribute id="id" required="true"> <attribute id="id" required="true">
<description>The binding handler id.</description> <description>The binding handler id.</description>
@ -116,7 +130,7 @@
<elementParent tag="elementInterface"/> <elementParent tag="elementInterface"/>
</element> </element>
<element tag="attributeHandler" elementClass="org.x4o.xml.eld.lang.BeanElement"> <element id="attributeHandler" elementClass="org.x4o.xml.eld.lang.BeanElement">
<description>Define an className in bean.class for an ElementAttributeHandler.</description> <description>Define an className in bean.class for an ElementAttributeHandler.</description>
<attribute id="id" required="true"> <attribute id="id" required="true">
<description>The atttribute handler id.</description> <description>The atttribute handler id.</description>
@ -130,7 +144,7 @@
<elementParent tag="module" uri="http://eld.x4o.org/xml/ns/eld-root"/> <elementParent tag="module" uri="http://eld.x4o.org/xml/ns/eld-root"/>
</element> </element>
<element tag="configuratorGlobal" elementClass="org.x4o.xml.eld.lang.BeanElement"> <element id="configuratorGlobal" elementClass="org.x4o.xml.eld.lang.BeanElement">
<description>Define an className in bean.class for an ElementConfiguratorGlobal.</description> <description>Define an className in bean.class for an ElementConfiguratorGlobal.</description>
<attribute id="id" required="true"> <attribute id="id" required="true">
<description>The global element configurator id.</description> <description>The global element configurator id.</description>
@ -144,7 +158,7 @@
<elementParent tag="module" uri="http://eld.x4o.org/xml/ns/eld-root"/> <elementParent tag="module" uri="http://eld.x4o.org/xml/ns/eld-root"/>
</element> </element>
<element tag="configurator" elementClass="org.x4o.xml.eld.lang.BeanElement"> <element id="configurator" elementClass="org.x4o.xml.eld.lang.BeanElement">
<description>Define an className in bean.class for an ElementConfigurator.</description> <description>Define an className in bean.class for an ElementConfigurator.</description>
<attribute id="id" required="true"> <attribute id="id" required="true">
<description>The element configurator id.</description> <description>The element configurator id.</description>
@ -159,7 +173,7 @@
<elementParent tag="element"/> <elementParent tag="element"/>
</element> </element>
<element tag="description" elementClass="org.x4o.xml.eld.lang.DescriptionElement" schemaContentBase="string"> <element id="description" elementClass="org.x4o.xml.eld.lang.DescriptionElement" schemaContentBase="string">
<description>An ELD elementDescription field which lets you type text like this one in xml characters instead of an attribute.</description> <description>An ELD elementDescription field which lets you type text like this one in xml characters instead of an attribute.</description>
<elementParent tag="module" uri="http://eld.x4o.org/xml/ns/eld-root"/> <elementParent tag="module" uri="http://eld.x4o.org/xml/ns/eld-root"/>
<elementParent tag="namespace"/> <elementParent tag="namespace"/>
@ -177,7 +191,7 @@
<!-- Add some special tags which do actions. --> <!-- Add some special tags which do actions. -->
<element tag="elementParent" elementClass="org.x4o.xml.eld.lang.ElementClassAddParentElement"> <element id="elementParent" elementClass="org.x4o.xml.eld.lang.ElementClassAddParentElement">
<description>Adds an parent element tag for xsd</description> <description>Adds an parent element tag for xsd</description>
<elementParent tag="element"/> <elementParent tag="element"/>
<elementParent tag="elementInterface"/> <elementParent tag="elementInterface"/>
@ -189,7 +203,7 @@
</attribute> </attribute>
</element> </element>
<element tag="elementSkipPhase" elementClass="org.x4o.xml.eld.lang.SkipPhaseElement"> <element id="elementSkipPhase" elementClass="org.x4o.xml.eld.lang.SkipPhaseElement">
<description>Adds an phase to skip to the parent element.</description> <description>Adds an phase to skip to the parent element.</description>
<attribute id="name" required="true"> <attribute id="name" required="true">
<description>The name of the phase to skip.</description> <description>The name of the phase to skip.</description>
@ -197,7 +211,7 @@
<elementParent tag="element"/> <elementParent tag="element"/>
</element> </element>
<element tag="attributeHandlerNextAttribute" elementClass="org.x4o.xml.eld.lang.NextAttributeElement"> <element id="attributeHandlerNextAttribute" elementClass="org.x4o.xml.eld.lang.NextAttributeElement">
<description>Defines the parameter order.</description> <description>Defines the parameter order.</description>
<attribute id="attributeName" required="true"> <attribute id="attributeName" required="true">
<description>The attribute name to run after this attribute.</description> <description>The attribute name to run after this attribute.</description>
@ -206,7 +220,7 @@
<elementParent tag="bean"/> <elementParent tag="bean"/>
</element> </element>
<element tag="attributeAlias" elementClass="org.x4o.xml.eld.lang.AttributeAliasElement"> <element id="attributeAlias" elementClass="org.x4o.xml.eld.lang.AttributeAliasElement">
<description>Defines an alias for an attribute name.</description> <description>Defines an alias for an attribute name.</description>
<attribute id="name" required="true"> <attribute id="name" required="true">
<description>The alias name to add to the attribute.</description> <description>The alias name to add to the attribute.</description>
@ -214,7 +228,7 @@
<elementParent tag="attribute"/> <elementParent tag="attribute"/>
</element> </element>
<element tag="attributeFromBody" objectClass="org.x4o.xml.eld.lang.AttributeFromBodyConfigurator" autoAttributes="false"> <element id="attributeFromBody" objectClass="org.x4o.xml.eld.lang.AttributeFromBodyConfigurator" autoAttributes="false">
<description>Defines an alias for an attribute name.</description> <description>Defines an alias for an attribute name.</description>
<attribute id="id" required="true"> <attribute id="id" required="true">
<description>The id for this configurator.</description> <description>The id for this configurator.</description>
@ -227,7 +241,7 @@
</attribute> </attribute>
</element> </element>
<element tag="classBindingHandler" objectClass="org.x4o.xml.eld.lang.ElementRefectionBindingHandler" <element id="classBindingHandler" objectClass="org.x4o.xml.eld.lang.ElementRefectionBindingHandler"
autoAttributes="false" autoAttributes="false"
> >
<description>Lets you dynamicly bind to object togecher.</description> <description>Lets you dynamicly bind to object togecher.</description>
@ -253,7 +267,7 @@
<!-- Config some helper elements --> <!-- Config some helper elements -->
<!-- Helper elements for eld --> <!-- Helper elements for eld -->
<element tag="bean" elementClass="org.x4o.xml.eld.lang.BeanElement"> <element id="bean" elementClass="org.x4o.xml.eld.lang.BeanElement">
<!-- BIG NOTE: maybe beanElement most go to meta to have clean impl. --> <!-- BIG NOTE: maybe beanElement most go to meta to have clean impl. -->
<description>Loads bean into the Element</description> <description>Loads bean into the Element</description>
<attribute id="bean.class"> <attribute id="bean.class">
@ -276,7 +290,7 @@
> >
<description>Basic set of attribute value converters.</description> <description>Basic set of attribute value converters.</description>
<element tag="beanConverter" elementClass="org.x4o.xml.eld.lang.BeanElement"> <element id="beanConverter" elementClass="org.x4o.xml.eld.lang.BeanElement">
<description>Define an loadable in bean.class for an ObjectConverter.</description> <description>Define an loadable in bean.class for an ObjectConverter.</description>
<attribute id="bean.class"> <attribute id="bean.class">
<description>The class name of the converter to load.</description> <description>The class name of the converter to load.</description>
@ -284,18 +298,18 @@
<elementParent tag="attribute" uri="http://eld.x4o.org/xml/ns/eld-lang"/> <elementParent tag="attribute" uri="http://eld.x4o.org/xml/ns/eld-lang"/>
<!-- todo: make converter which loads converter so xsd is correct. --> <!-- todo: make converter which loads converter so xsd is correct. -->
</element> </element>
<element tag="booleanConverter" objectClass="org.x4o.xml.conv.text.BooleanConverter" /> <element id="booleanConverter" objectClass="org.x4o.xml.conv.text.BooleanConverter" />
<element tag="byteConverter" objectClass="org.x4o.xml.conv.text.ByteConverter" /> <element id="byteConverter" objectClass="org.x4o.xml.conv.text.ByteConverter" />
<element tag="characterConverter" objectClass="org.x4o.xml.conv.text.CharacterConverter" /> <element id="characterConverter" objectClass="org.x4o.xml.conv.text.CharacterConverter" />
<element tag="doubleConverter" objectClass="org.x4o.xml.conv.text.DoubleConverter" /> <element id="doubleConverter" objectClass="org.x4o.xml.conv.text.DoubleConverter" />
<element tag="floatConverter" objectClass="org.x4o.xml.conv.text.FloatConverter" /> <element id="floatConverter" objectClass="org.x4o.xml.conv.text.FloatConverter" />
<element tag="integerConverter" objectClass="org.x4o.xml.conv.text.IntegerConverter" /> <element id="integerConverter" objectClass="org.x4o.xml.conv.text.IntegerConverter" />
<element tag="longConverter" objectClass="org.x4o.xml.conv.text.LongConverter" /> <element id="longConverter" objectClass="org.x4o.xml.conv.text.LongConverter" />
<element tag="urlConverter" objectClass="org.x4o.xml.conv.text.URLConverter" /> <element id="urlConverter" objectClass="org.x4o.xml.conv.text.URLConverter" />
<element tag="classConverter" objectClass="org.x4o.xml.conv.text.ClassConverter" /> <element id="classConverter" objectClass="org.x4o.xml.conv.text.ClassConverter" />
<element tag="enumConverter" objectClass="org.x4o.xml.conv.text.EnumConverter" /> <element id="enumConverter" objectClass="org.x4o.xml.conv.text.EnumConverter" />
<element tag="stringSplitConverter" objectClass="org.x4o.xml.conv.text.StringSplitConverter"> <element id="stringSplitConverter" objectClass="org.x4o.xml.conv.text.StringSplitConverter">
<attribute id="classTo" required="true"> <attribute id="classTo" required="true">
<description>The class name to convert the string to.</description> <description>The class name to convert the string to.</description>
<classConverter/> <classConverter/>
@ -305,7 +319,7 @@
<attribute id="singleToMethod" description="Shortcut to use only this method for the 'to' convert."/> <attribute id="singleToMethod" description="Shortcut to use only this method for the 'to' convert."/>
<attribute id="useNativeType" description="Set to true to convert to native data type."/> <attribute id="useNativeType" description="Set to true to convert to native data type."/>
</element> </element>
<element tag="stringSplitConverterStep" objectClass="org.x4o.xml.conv.text.StringSplitConverterStep"> <element id="stringSplitConverterStep" objectClass="org.x4o.xml.conv.text.StringSplitConverterStep">
<attribute id="fromMethod" required="true" description="The convert 'from' method step."/> <attribute id="fromMethod" required="true" description="The convert 'from' method step."/>
<attribute id="toMethod" required="false" description="The convert 'to' method step."/> <attribute id="toMethod" required="false" description="The convert 'to' method step."/>
<attribute id="fromOrder" required="true" description="The convert 'from' order."/> <attribute id="fromOrder" required="true" description="The convert 'from' order."/>

View file

@ -1,13 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- ===== Automatic generated schema for language: eld ===== --> <!-- ===== Automatic generated schema for language: eld ===== -->
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- <!--
ProviderName: eld.x4o.org ID: eld-module
ModuleName: Element Language Definition ProviderName: Element Language Definition
ProviderHost: eld.x4o.org
Namespaces: 3 Namespaces: 3
Namespace: http://eld.x4o.org/xml/ns/eld-root Uri: http://eld.x4o.org/xml/ns/eld-root
Created on: Sat Apr 27 20:06:33 CEST 2013 Uri schema: http://eld.x4o.org/xml/ns/eld-root-1.0.xsd
Created on: Sun Apr 28 11:56:32 CEST 2013
--> -->
<schema xmlns="http://www.w3.org/2001/XMLSchema" <schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv" xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv"
@ -27,12 +29,27 @@
<element ref="lang:elementInterface"/> <element ref="lang:elementInterface"/>
<element ref="lang:namespace"/> <element ref="lang:namespace"/>
</choice> </choice>
<attribute name="id" type="string" use="required"/> <attribute name="id" type="string" use="required">
<attribute name="name" type="string"/> <annotation>
<attribute name="providerName" type="string"/> <documentation xml:lang="en">The module id.
<attribute name="sourceResource" type="string"/> </documentation>
</annotation>
</attribute>
<attribute name="providerName" type="string">
<annotation>
<documentation xml:lang="en">The provider name in normal en:lang.
</documentation>
</annotation>
</attribute>
<attribute name="providerHost" type="string" use="required">
<annotation>
<documentation xml:lang="en">The provider host like langx.someorg.domain for uri/etc defaults.
</documentation>
</annotation>
</attribute>
<attribute name="languageModuleLoader" type="string"/> <attribute name="languageModuleLoader" type="string"/>
<attribute name="sourceResource" type="string"/>
<attribute name="description" type="string"/> <attribute name="description" type="string"/>
</complexType> </complexType>
</element> </element>
</schema> </schema>

View file

@ -63,6 +63,8 @@ public class X4OWriterTest extends TestCase {
writer.writeFile(root, outputFile); writer.writeFile(root, outputFile);
String text = new Scanner( outputFile ).useDelimiter("\\A").next(); String text = new Scanner( outputFile ).useDelimiter("\\A").next();
outputFile.delete();
//System.out.println("Output: '\n"+text+"\n' end in "+outputFile.getAbsolutePath());
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
assertTrue(text.contains("http://test.x4o.org/xml/ns/test-root")); assertTrue(text.contains("http://test.x4o.org/xml/ns/test-root"));
@ -71,10 +73,6 @@ public class X4OWriterTest extends TestCase {
assertTrue(text.contains("privateIntegerTypeField=\"123\"")); assertTrue(text.contains("privateIntegerTypeField=\"123\""));
assertTrue(text.contains("privateDoubleObjectField=\"123.45\"")); assertTrue(text.contains("privateDoubleObjectField=\"123.45\""));
assertTrue(text.contains("privateStringObjectField=\"x4o\"")); assertTrue(text.contains("privateStringObjectField=\"x4o\""));
//System.out.println("Output: '\n"+text+"\n' end in "+outputFile.getAbsolutePath());
outputFile.delete();
} }
public void testWriterSwiXmlOutput() throws Exception { public void testWriterSwiXmlOutput() throws Exception {

View file

@ -29,8 +29,8 @@
xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv" xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://eld.x4o.org/xml/ns/eld-root http://eld.x4o.org/xml/ns/eld-root-1.0.xsd" xsi:schemaLocation="http://eld.x4o.org/xml/ns/eld-root http://eld.x4o.org/xml/ns/eld-root-1.0.xsd"
providerName="swixml2.test.x4o.org" providerHost="swixml2.test.x4o.org"
name="Swixml2 Language" providerName="Swixml2 Language"
id="swixml2-module" id="swixml2-module"
> >
@ -88,25 +88,12 @@
</elementInterface> </elementInterface>
<namespace <namespace id="root" languageRoot="true">
uri="http://swixml.x4o.org/xml/ns/swixml-root" <element tag="frame" objectClass="javax.swing.JFrame">
schemaUri="http://swixml.x4o.org/xml/ns/swixml-root-2.0.xsd" <description>Single element in language root to create nice tree, for imports in xsd namespace aware generated files.</description>
schemaResource="swixml-root-2.0.xsd" </element>
schemaPrefix="sx-root"
name="Root element"
languageRoot="true"
id="sx-root"
>
<!-- Single element in language root to create nice tree, for imports in xsd namespace aware generated files. -->
<element tag="frame" objectClass="javax.swing.JFrame"/>
</namespace> </namespace>
<namespace <namespace id="lang">
uri="http://swixml.x4o.org/xml/ns/swixml-lang"
schemaUri="http://swixml.x4o.org/xml/ns/swixml-lang-2.0.xsd"
schemaResource="swixml-lang-2.0.xsd"
schemaPrefix="sx-lang"
id="sx-lang"
>
<!-- Note frame should not be here(it can but xsd needs root), but else classic xml does not parse without xmlns additions. --> <!-- Note frame should not be here(it can but xsd needs root), but else classic xml does not parse without xmlns additions. -->
<element tag="frame" objectClass="javax.swing.JFrame"/> <element tag="frame" objectClass="javax.swing.JFrame"/>
<element tag="menubar" objectClass="javax.swing.JMenuBar"/> <element tag="menubar" objectClass="javax.swing.JMenuBar"/>

View file

@ -29,8 +29,8 @@
xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv" xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://eld.x4o.org/xml/ns/eld-root http://eld.x4o.org/xml/ns/eld-root-1.0.xsd" xsi:schemaLocation="http://eld.x4o.org/xml/ns/eld-root http://eld.x4o.org/xml/ns/eld-root-1.0.xsd"
providerName="swixml3.test.x4o.org" providerHost="swixml.x4o.org"
name="Swixml3 Language" providerName="Swixml3 Language"
id="swixml3-module" id="swixml3-module"
> >
@ -83,29 +83,14 @@
<conv:beanConverter bean.class="org.x4o.xml.test.swixml.conv.BorderConverter"/> <conv:beanConverter bean.class="org.x4o.xml.test.swixml.conv.BorderConverter"/>
</attribute> </attribute>
</elementInterface> </elementInterface>
<namespace id="root" languageRoot="true">
<namespace <element objectClass="javax.swing.JFrame"/>
uri="http://swixml.x4o.org/xml/ns/swixml-root"
schemaUri="http://swixml.x4o.org/xml/ns/swixml-root-3.0.xsd"
schemaResource="swixml-root-3.0.xsd"
schemaPrefix="sx-root"
name="Root element"
languageRoot="true"
id="sx-root"
>
<element tag="JFrame" objectClass="javax.swing.JFrame"/>
</namespace> </namespace>
<namespace <namespace id="lang">
uri="http://swixml.x4o.org/xml/ns/swixml-lang" <element objectClass="javax.swing.JMenuBar"/>
schemaUri="http://swixml.x4o.org/xml/ns/swixml-lang-3.0.xsd" <element objectClass="javax.swing.JMenu"/>
schemaResource="swixml-lang-3.0.xsd" <element objectClass="javax.swing.JMenuItem">
schemaPrefix="sx-lang"
id="sx-lang"
>
<element tag="JMenubar" objectClass="javax.swing.JMenuBar"/>
<element tag="JMenu" objectClass="javax.swing.JMenu"/>
<element tag="JMenuItem" objectClass="javax.swing.JMenuItem">
<attribute id="accelerator"> <attribute id="accelerator">
<conv:beanConverter bean.class="org.x4o.xml.test.swixml.conv.KeyStrokeConverter"/> <conv:beanConverter bean.class="org.x4o.xml.test.swixml.conv.KeyStrokeConverter"/>
<attributeAlias name="Accelerator"/> <attributeAlias name="Accelerator"/>
@ -114,9 +99,9 @@
<attribute id="Action" runBeanValue="false"/> <attribute id="Action" runBeanValue="false"/>
<configurator id="menuitem-action" bean.class="org.x4o.xml.test.swixml.SwiXmlActionConfigurator"/> <configurator id="menuitem-action" bean.class="org.x4o.xml.test.swixml.SwiXmlActionConfigurator"/>
</element> </element>
<element tag="JMenu.Separator" /> <element id="JMenu.Separator" description="TODO"/>
<element tag="JPanel" objectClass="javax.swing.JPanel"/> <element objectClass="javax.swing.JPanel"/>
<element tag="JSplitPane" objectClass="javax.swing.JSplitPane"> <element objectClass="javax.swing.JSplitPane">
<attribute id="orientation"> <attribute id="orientation">
<conv:beanConverter bean.class="org.x4o.xml.test.swixml.conv.JSplitPaneOrientationConverter"/> <conv:beanConverter bean.class="org.x4o.xml.test.swixml.conv.JSplitPaneOrientationConverter"/>
</attribute> </attribute>
@ -125,16 +110,16 @@
</attribute> </attribute>
</element> </element>
<element tag="JLayeredPane" objectClass="javax.swing.JLayeredPane"/> <element objectClass="javax.swing.JLayeredPane"/>
<element tag="JRootPane" objectClass="javax.swing.JRootPane"/> <element objectClass="javax.swing.JRootPane"/>
<element tag="JScrollPane" objectClass="javax.swing.JScrollPane"/> <element objectClass="javax.swing.JScrollPane"/>
<element tag="JTree" objectClass="javax.swing.JTree"/> <element objectClass="javax.swing.JTree"/>
<element tag="JButton" objectClass="javax.swing.JButton"/> <element objectClass="javax.swing.JButton"/>
<element tag="JTable" objectClass="javax.swing.JTable"/> <element objectClass="javax.swing.JTable"/>
<element tag="JTextArea" objectClass="javax.swing.JTextArea"/> <element objectClass="javax.swing.JTextArea"/>
<element tag="JLabel" objectClass="javax.swing.JLabel"/> <element objectClass="javax.swing.JLabel"/>
<element tag="JTextField" objectClass="javax.swing.JTextField"/> <element objectClass="javax.swing.JTextField"/>
<element tag="JDesktopPane" objectClass="javax.swing.JDesktopPane"/> <element objectClass="javax.swing.JDesktopPane"/>
<element tag="JInternalFrame" objectClass="javax.swing.JInternalFrame"/> <element objectClass="javax.swing.JInternalFrame"/>
</namespace> </namespace>
</root:module> </root:module>

View file

@ -29,8 +29,8 @@
xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv" xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://eld.x4o.org/xml/ns/eld-root http://eld.x4o.org/xml/ns/eld-root-1.0.xsd" xsi:schemaLocation="http://eld.x4o.org/xml/ns/eld-root http://eld.x4o.org/xml/ns/eld-root-1.0.xsd"
providerName="test.x4o.org" providerName="test Language"
name="Test Language" providerHost="test.x4o.org"
id="test-module" id="test-module"
> >

View file

@ -29,6 +29,34 @@
xsi:schemaLocation="http://language.x4o.org/xml/ns/drivers http://language.x4o.org/xml/ns/drivers-1.0.xsd" xsi:schemaLocation="http://language.x4o.org/xml/ns/drivers http://language.x4o.org/xml/ns/drivers-1.0.xsd"
> >
<driver language="test" className="org.x4o.xml.test.TestDriver"/> <driver language="test" className="org.x4o.xml.test.TestDriver"/>
<!--
<languageResourcePathPrefix>META-INF</languageResourcePathPrefix>
<languageResourceModulesFileName>-modules.xml</languageResourceModulesFileName>
<defaultElementNamespaceContext>org.x4o.xml.element.DefaultElementNamespaceContext</defaultElementNamespaceContext>
<defaultElementInterface>org.x4o.xml.element.DefaultElementInterface</defaultElementInterface>
<defaultElement>org.x4o.xml.element.DefaultElement</defaultElement>
<defaultElementClass>org.x4o.xml.element.DefaultElementClass</defaultElementClass>
<defaultElementClassAttribute></defaultElementClassAttribute>
<defaultElementLanguageModule></defaultElementLanguageModule>
<defaultElementBodyComment></defaultElementBodyComment>
<defaultElementBodyCharacters></defaultElementBodyCharacters>
<defaultElementBodyWhitespace></defaultElementBodyWhitespace>
<defaultElementNamespaceInstanceProvider></defaultElementNamespaceInstanceProvider>
<defaultElementAttributeValueParser></defaultElementAttributeValueParser>
<defaultElementObjectPropertyValue></defaultElementObjectPropertyValue>
<defaultElementAttributeHandlerComparator></defaultElementAttributeHandlerComparator>
<properties>
<property key="" value=""/>
</properties>
<lockLanguage>true</lockLanguage>
<secure-resources>
<secure-resource resource="META-INF/test/test-modules.xml" hash="887486557" hashType="MD5"/>
<secure-resource resource="META-INF/test/test-lang.eld" hash="238758509486557" hashType="MD5"/>
</secure-resources>
</driver>
-->
<driver language="swixml" className="org.x4o.xml.test.swixml.SwiXmlDriver"/> <driver language="swixml" className="org.x4o.xml.test.swixml.SwiXmlDriver"/>
<defaultDriver language="junit-defp"/> <defaultDriver language="junit-defp"/>
</drivers> </drivers>

View file

@ -30,7 +30,7 @@
xsi:schemaLocation="http://test.x4o.org/xml/ns/test-root test-root-1.0.xsd" xsi:schemaLocation="http://test.x4o.org/xml/ns/test-root test-root-1.0.xsd"
name="mainframe" size="800,600" title="SWIXML-X4O" plaf="com.sun.java.swing.plaf.windows.WindowsLookAndFeel" defaultCloseOperation="3" name="mainframe" size="800,600" title="SWIXML-X4O" plaf="com.sun.java.swing.plaf.windows.WindowsLookAndFeel" defaultCloseOperation="3"
> >
<JMenubar name="menubar"> <JMenuBar name="menubar">
<JMenu name="filemenu" text="File"> <JMenu name="filemenu" text="File">
<JMenuItem name="mi_new" text="New" icon="icons/new.gif" mnemonic="VK_N" accelerator="control N" Action="newAction"/> <JMenuItem name="mi_new" text="New" icon="icons/new.gif" mnemonic="VK_N" accelerator="control N" Action="newAction"/>
<JMenuItem name="mi_open" text="Open" icon="icons/open.gif" mnemonic="VK_O" Accelerator="control O" ActionCommand="open"/> <JMenuItem name="mi_open" text="Open" icon="icons/open.gif" mnemonic="VK_O" Accelerator="control O" ActionCommand="open"/>
@ -45,7 +45,7 @@
<JMenu text="Help"> <JMenu text="Help">
<JMenuItem name="mi_about" text="About" enabled="true" icon="icons/info.gif" Accelerator="alt A" Action="aboutAction" /> <JMenuItem name="mi_about" text="About" enabled="true" icon="icons/info.gif" Accelerator="alt A" Action="aboutAction" />
</JMenu> </JMenu>
</JMenubar> </JMenuBar>
<JDesktopPane> <JDesktopPane>
<JInternalFrame title="Flow Layout (right aligned)" bounds="10,10,150,150" layout="FlowLayout(FlowLayout.RIGHT)" visible="true" resizable="true"> <JInternalFrame title="Flow Layout (right aligned)" bounds="10,10,150,150" layout="FlowLayout(FlowLayout.RIGHT)" visible="true" resizable="true">
<JButton text="1"/> <JButton text="1"/>

View file

@ -191,7 +191,7 @@ public class EldDocHtmlWriter {
List<X4OLanguageModule> mods = context.getLanguage().getLanguageModules(); List<X4OLanguageModule> mods = context.getLanguage().getLanguageModules();
Collections.sort(mods,new ElementLanguageModuleComparator()); Collections.sort(mods,new ElementLanguageModuleComparator());
for (X4OLanguageModule mod:mods) { for (X4OLanguageModule mod:mods) {
printTableRowOverview(pw,toSafeUri(mod.getId())+"/index.html",mod.getId(),mod.getName()); printTableRowOverview(pw,toSafeUri(mod.getId())+"/index.html",mod.getId(),mod.getDescription());
} }
printTableEnd(pw); printTableEnd(pw);
printBottom(pw,""); printBottom(pw,"");
@ -279,11 +279,11 @@ public class EldDocHtmlWriter {
pw.print("/"); pw.print("/");
pw.print(toSafeUri(node.namespace.getId())); pw.print(toSafeUri(node.namespace.getId()));
pw.print("/"); pw.print("/");
pw.print(toSafeUri(node.elementClass.getTag())); pw.print(toSafeUri(node.elementClass.getId()));
pw.print("/index.html\">"); pw.print("/index.html\">");
pw.print(node.namespace.getId()); pw.print(node.namespace.getId());
pw.print(":"); pw.print(":");
pw.print(node.elementClass.getTag()); pw.print(node.elementClass.getId());
pw.print("</a><br/>\n"); pw.print("</a><br/>\n");
List<TreeNode> childs = findChilderen(node); List<TreeNode> childs = findChilderen(node);
@ -303,7 +303,7 @@ public class EldDocHtmlWriter {
for (ElementClass ec:ns.getElementClasses()) { for (ElementClass ec:ns.getElementClasses()) {
TreeNode n=null; TreeNode n=null;
List<String> tags = ec.getElementParents(node.namespace.getUri()); List<String> tags = ec.getElementParents(node.namespace.getUri());
if (tags!=null && tags.contains(node.elementClass.getTag())) { if (tags!=null && tags.contains(node.elementClass.getId())) {
n = new TreeNode(); n = new TreeNode();
n.context=node.context; n.context=node.context;
n.module=mod; n.module=mod;
@ -318,7 +318,7 @@ public class EldDocHtmlWriter {
// Check interfaces of parent , and see if child tag is there. // Check interfaces of parent , and see if child tag is there.
for (ElementInterface ei:node.context.getLanguage().findElementInterfaces(ec.getObjectClass())) { for (ElementInterface ei:node.context.getLanguage().findElementInterfaces(ec.getObjectClass())) {
List<String> eiTags = ei.getElementParents(node.namespace.getUri()); List<String> eiTags = ei.getElementParents(node.namespace.getUri());
if (eiTags!=null && eiTags.contains(node.elementClass.getTag())) { if (eiTags!=null && eiTags.contains(node.elementClass.getId())) {
n = new TreeNode(); n = new TreeNode();
n.context=node.context; n.context=node.context;
n.module=mod; n.module=mod;
@ -357,7 +357,7 @@ public class EldDocHtmlWriter {
private boolean isInTree(TreeNode node,TreeNode checkNode) { private boolean isInTree(TreeNode node,TreeNode checkNode) {
if ( node.namespace.getUri().equals(checkNode.namespace.getUri()) && if ( node.namespace.getUri().equals(checkNode.namespace.getUri()) &&
node.elementClass.getTag().equals(checkNode.elementClass.getTag()) node.elementClass.getId().equals(checkNode.elementClass.getId())
) { ) {
return true; return true;
} }
@ -376,7 +376,7 @@ public class EldDocHtmlWriter {
List<String> tags = node.elementClass.getElementParents(ns.getUri()); List<String> tags = node.elementClass.getElementParents(ns.getUri());
if (tags!=null) { if (tags!=null) {
for (ElementClass ec:ns.getElementClasses()) { for (ElementClass ec:ns.getElementClasses()) {
if (tags.contains(ec.getTag())) { if (tags.contains(ec.getId())) {
n = new TreeNode(); n = new TreeNode();
n.context=node.context; n.context=node.context;
n.module=mod; n.module=mod;
@ -394,7 +394,7 @@ public class EldDocHtmlWriter {
if (node.elementClass.getObjectClass()!=null) { if (node.elementClass.getObjectClass()!=null) {
for (ElementInterface ei:node.context.getLanguage().findElementInterfaces(node.elementClass.getObjectClass())) { for (ElementInterface ei:node.context.getLanguage().findElementInterfaces(node.elementClass.getObjectClass())) {
List<String> eiTags = ei.getElementParents(ns.getUri()); List<String> eiTags = ei.getElementParents(ns.getUri());
if (eiTags!=null && eiTags.contains(ec.getTag())) { if (eiTags!=null && eiTags.contains(ec.getId())) {
n = new TreeNode(); n = new TreeNode();
n.context=node.context; n.context=node.context;
n.module=mod; n.module=mod;
@ -439,7 +439,7 @@ public class EldDocHtmlWriter {
String pathPrefix = "../"; String pathPrefix = "../";
try { try {
printHeader(pw,"Overview ("+mod.getId()+")",pathPrefix); printHeader(pw,"Overview ("+mod.getId()+")",pathPrefix);
printPageTitle(pw,"Module",mod.getName(),mod.getDescription()); printPageTitle(pw,"Module",mod.getProviderName(),mod.getDescription());
String pathPrefixModule = pathPrefix+toSafeUri(mod.getId())+"/"; String pathPrefixModule = pathPrefix+toSafeUri(mod.getId())+"/";
@ -469,7 +469,7 @@ public class EldDocHtmlWriter {
List<ElementClass> ecs = ns.getElementClasses(); List<ElementClass> ecs = ns.getElementClasses();
Collections.sort(ecs,new ElementClassComparator()); Collections.sort(ecs,new ElementClassComparator());
for (ElementClass ec:ecs) { for (ElementClass ec:ecs) {
printTableRowOverview(pw,toSafeUri(ec.getTag())+"/index.html",ec.getTag(),ec.getDescription()); printTableRowOverview(pw,toSafeUri(ec.getId())+"/index.html",ec.getId(),ec.getDescription());
} }
printTableEnd(pw); printTableEnd(pw);
printBottom(pw,pathPrefix); printBottom(pw,pathPrefix);
@ -496,11 +496,11 @@ public class EldDocHtmlWriter {
public void writeElement(File basePath,ElementClass ec,ElementNamespaceContext ns,X4OLanguageModule mod,X4OLanguageContext context) throws IOException { public void writeElement(File basePath,ElementClass ec,ElementNamespaceContext ns,X4OLanguageModule mod,X4OLanguageContext context) throws IOException {
PrintWriter pw = createPrintWriter(basePath,mod.getId(),ns.getId(),ec.getTag(),"index.html"); PrintWriter pw = createPrintWriter(basePath,mod.getId(),ns.getId(),ec.getId(),"index.html");
String pathPrefix = "../../../"; String pathPrefix = "../../../";
try { try {
printHeader(pw,"Tag ("+ec.getTag()+")",pathPrefix); printHeader(pw,"Tag ("+ec.getId()+")",pathPrefix);
printPageTitle(pw,"Tag",ec.getTag(),ec.getDescription()); printPageTitle(pw,"Tag",ec.getId(),ec.getDescription());
TreeNode node = new TreeNode(); TreeNode node = new TreeNode();
node.context=context; node.context=context;
@ -522,11 +522,11 @@ public class EldDocHtmlWriter {
pw.print("/"); pw.print("/");
pw.print(toSafeUri(n.namespace.getId())); pw.print(toSafeUri(n.namespace.getId()));
pw.print("/"); pw.print("/");
pw.print(toSafeUri(n.elementClass.getTag())); pw.print(toSafeUri(n.elementClass.getId()));
pw.print("/index.html\">"); pw.print("/index.html\">");
pw.print(n.namespace.getId()); pw.print(n.namespace.getId());
pw.print(":"); pw.print(":");
pw.print(n.elementClass.getTag()); pw.print(n.elementClass.getId());
pw.print("</a>\n"); pw.print("</a>\n");
} }
pw.print("</td>\n"); pw.print("</td>\n");
@ -547,11 +547,11 @@ public class EldDocHtmlWriter {
pw.print("/"); pw.print("/");
pw.print(toSafeUri(n.namespace.getId())); pw.print(toSafeUri(n.namespace.getId()));
pw.print("/"); pw.print("/");
pw.print(toSafeUri(n.elementClass.getTag())); pw.print(toSafeUri(n.elementClass.getId()));
pw.print("/index.html\">"); pw.print("/index.html\">");
pw.print(n.namespace.getId()); pw.print(n.namespace.getId());
pw.print(":"); pw.print(":");
pw.print(n.elementClass.getTag()); pw.print(n.elementClass.getId());
pw.print("</a>\n"); pw.print("</a>\n");
} }
pw.print("</td>\n"); pw.print("</td>\n");
@ -561,7 +561,6 @@ public class EldDocHtmlWriter {
printTableStart(pw,"Element Properties"); printTableStart(pw,"Element Properties");
printTableRowSummary(pw,"id",""+ec.getId()); printTableRowSummary(pw,"id",""+ec.getId());
printTableRowSummary(pw,"tag",""+ec.getTag());
printTableRowSummary(pw,"objectClass",""+ec.getObjectClass()); printTableRowSummary(pw,"objectClass",""+ec.getObjectClass());
printTableRowSummary(pw,"elementClass",""+ec.getElementClass()); printTableRowSummary(pw,"elementClass",""+ec.getElementClass());
printTableRowSummary(pw,"autoAttributes",""+ec.getAutoAttributes()); printTableRowSummary(pw,"autoAttributes",""+ec.getAutoAttributes());
@ -640,7 +639,7 @@ public class EldDocHtmlWriter {
} }
public void writeElementConfigurator(File basePath,ElementConfigurator conf,X4OLanguageModule mod,ElementNamespaceContext ns,ElementClass ec) throws IOException { public void writeElementConfigurator(File basePath,ElementConfigurator conf,X4OLanguageModule mod,ElementNamespaceContext ns,ElementClass ec) throws IOException {
PrintWriter pw = createPrintWriter(basePath,mod.getId(),ns.getId(),ec.getTag(),"conf",conf.getId()+".html"); PrintWriter pw = createPrintWriter(basePath,mod.getId(),ns.getId(),ec.getId(),"conf",conf.getId()+".html");
String pathPrefix = "../../../../"; String pathPrefix = "../../../../";
try { try {
printHeader(pw,"Interface Configurator ("+conf.getId()+")",pathPrefix); printHeader(pw,"Interface Configurator ("+conf.getId()+")",pathPrefix);
@ -1036,13 +1035,13 @@ public class EldDocHtmlWriter {
class TreeNodeComparator implements Comparator<TreeNode> { class TreeNodeComparator implements Comparator<TreeNode> {
public int compare(TreeNode o1,TreeNode o2) { public int compare(TreeNode o1,TreeNode o2) {
return o1.elementClass.getTag().compareTo(o2.elementClass.getTag()); return o1.elementClass.getId().compareTo(o2.elementClass.getId());
} }
} }
class ElementClassComparator implements Comparator<ElementClass> { class ElementClassComparator implements Comparator<ElementClass> {
public int compare(ElementClass o1,ElementClass o2) { public int compare(ElementClass o1,ElementClass o2) {
return o1.getTag().compareTo(o2.getTag()); return o1.getId().compareTo(o2.getId());
} }
} }
} }

View file

@ -44,6 +44,12 @@ public class MetaLanguageSiblingLoader implements X4OLanguageModuleLoaderSibling
/** Defines the version of the meta x4o language. */ /** Defines the version of the meta x4o language. */
public static final String META_LANGUAGE_VERSION = "1.0"; public static final String META_LANGUAGE_VERSION = "1.0";
/** Defines the identifier of the meta x4o language host. */
public static final String META_LANGUAGE_HOST = "meta.x4o.org";
/** Defines the identifier of the meta x4o language host. */
public static final String META_LANGUAGE_DESCRIPTION = "X4O Meta XML Language Module.";
/** /**
* Loads an ElementLanguageModule. * Loads an ElementLanguageModule.
* @param language The ElementLanguage to load for. * @param language The ElementLanguage to load for.
@ -53,9 +59,9 @@ public class MetaLanguageSiblingLoader implements X4OLanguageModuleLoaderSibling
*/ */
public void loadLanguageModule(X4OLanguageLocal language,X4OLanguageModule languageModule) throws X4OLanguageModuleLoaderException { public void loadLanguageModule(X4OLanguageLocal language,X4OLanguageModule languageModule) throws X4OLanguageModuleLoaderException {
languageModule.setId(META_LANGUAGE); languageModule.setId(META_LANGUAGE);
languageModule.setName(META_LANGUAGE); languageModule.setProviderHost(META_LANGUAGE_HOST);
languageModule.setProviderName(MetaLanguageSiblingLoader.class.getSimpleName()); languageModule.setProviderName(MetaLanguageSiblingLoader.class.getSimpleName());
languageModule.setDescription("X4O Meta Language"); languageModule.setDescription(META_LANGUAGE_DESCRIPTION);
} }
/** /**

View file

@ -40,6 +40,7 @@
schemaPrefix="mroot" schemaPrefix="mroot"
name="MTest Root Namespace" name="MTest Root Namespace"
languageRoot="true" languageRoot="true"
id="mroot"
> >
<!-- Root Element for nice namespace'ing --> <!-- Root Element for nice namespace'ing -->
<eld:element tag="root" objectClass="java.lang.Object"> <eld:element tag="root" objectClass="java.lang.Object">
@ -53,6 +54,7 @@
schemaResource="mtest-lang-1.0.xsd" schemaResource="mtest-lang-1.0.xsd"
schemaPrefix="mlang" schemaPrefix="mlang"
name="MTest Language Namespace" name="MTest Language Namespace"
id="mlang"
> >
<eld:element tag="date" objectClass="java.util.Date"/> <eld:element tag="date" objectClass="java.util.Date"/>
<eld:element tag="JFrame" objectClass="javax.swing.JFrame"/> <eld:element tag="JFrame" objectClass="javax.swing.JFrame"/>