X4O Formatted x4o driver tests cases

This commit is contained in:
Willem Cazander 2025-11-07 21:58:06 +01:00
parent bd4a04a813
commit ed096a1427
74 changed files with 1640 additions and 1453 deletions

View file

@ -43,14 +43,14 @@ import org.x4o.xml.element.ElementNamespace;
public abstract class AbstractX4OLanguageModule extends AbstractElementMetaBase implements X4OLanguageModuleLocal { public abstract class AbstractX4OLanguageModule extends AbstractElementMetaBase implements X4OLanguageModuleLocal {
private Logger logger = null; private Logger logger = null;
private String providerName=null; private String providerName = null;
private String providerHost=null; private String providerHost = null;
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,ElementNamespace> elementNamespaces = null; private Map<String, ElementNamespace> elementNamespaces = null;
private Map<X4OLanguageModuleLoaderResult,String> loaderResults = null; private Map<X4OLanguageModuleLoaderResult, String> loaderResults = null;
/** /**
* Creates a new empty ElementLanguage. * Creates a new empty ElementLanguage.
@ -61,8 +61,8 @@ public abstract class AbstractX4OLanguageModule extends AbstractElementMetaBase
elementBindingHandlers = new ArrayList<ElementBindingHandler>(4); elementBindingHandlers = new ArrayList<ElementBindingHandler>(4);
elementConfiguratorGlobals = new ArrayList<ElementConfiguratorGlobal>(4); elementConfiguratorGlobals = new ArrayList<ElementConfiguratorGlobal>(4);
elementInterfaces = new ArrayList<ElementInterface>(20); elementInterfaces = new ArrayList<ElementInterface>(20);
elementNamespaces = new HashMap<String,ElementNamespace>(10); elementNamespaces = new HashMap<String, ElementNamespace>(10);
loaderResults = new HashMap<X4OLanguageModuleLoaderResult,String>(10); loaderResults = new HashMap<X4OLanguageModuleLoaderResult, String>(10);
} }
/** /**
@ -97,20 +97,18 @@ public abstract class AbstractX4OLanguageModule extends AbstractElementMetaBase
* @see org.x4o.xml.lang.X4OLanguageModuleLocal#addElementBindingHandler(ElementBindingHandler) * @see org.x4o.xml.lang.X4OLanguageModuleLocal#addElementBindingHandler(ElementBindingHandler)
*/ */
public void addElementBindingHandler(ElementBindingHandler elementBindingHandler) { public void addElementBindingHandler(ElementBindingHandler elementBindingHandler) {
if (elementBindingHandler==null) { if (elementBindingHandler == null) {
throw new NullPointerException("Can't add null binding handler."); throw new NullPointerException("Can't add null binding handler.");
} }
if (elementBindingHandler.getId()==null) { if (elementBindingHandler.getId() == null) {
throw new NullPointerException("Can't add with null id property."); throw new NullPointerException("Can't add with null id property.");
} }
// Check so doc tree does not loop; see EldDocHtmlWriter.findChilderen() // Check so doc tree does not loop; see EldDocHtmlWriter.findChilderen()
/* /*
for (Class<?> cl:elementBindingHandler.getBindChildClasses()) { * for (Class<?> cl:elementBindingHandler.getBindChildClasses()) { if (elementBindingHandler.getBindParentClass().equals(cl)) { throw new
if (elementBindingHandler.getBindParentClass().equals(cl)) { * IllegalStateException("Can't add binding handler: "+elementBindingHandler.getId()+" with same parent as child class."); } }
throw new IllegalStateException("Can't add binding handler: "+elementBindingHandler.getId()+" with same parent as child class."); */
} logger.finer("Adding ElementBindingHandler: " + elementBindingHandler);
}*/
logger.finer("Adding ElementBindingHandler: "+elementBindingHandler);
elementBindingHandlers.add(elementBindingHandler); elementBindingHandlers.add(elementBindingHandler);
} }
@ -125,13 +123,13 @@ public abstract class AbstractX4OLanguageModule extends AbstractElementMetaBase
* @see org.x4o.xml.lang.X4OLanguageModuleLocal#addElementConfiguratorGlobal(ElementConfiguratorGlobal) * @see org.x4o.xml.lang.X4OLanguageModuleLocal#addElementConfiguratorGlobal(ElementConfiguratorGlobal)
*/ */
public void addElementConfiguratorGlobal(ElementConfiguratorGlobal elementConfigurator) { public void addElementConfiguratorGlobal(ElementConfiguratorGlobal elementConfigurator) {
if (elementConfigurator==null) { if (elementConfigurator == null) {
throw new NullPointerException("Can't add null"); throw new NullPointerException("Can't add null");
} }
if (elementConfigurator.getId()==null) { if (elementConfigurator.getId() == null) {
throw new NullPointerException("Can't add with null id property."); throw new NullPointerException("Can't add with null id property.");
} }
logger.finer("Adding ElementConfiguratorGlobal: "+elementConfigurator); logger.finer("Adding ElementConfiguratorGlobal: " + elementConfigurator);
elementConfiguratorGlobals.add(elementConfigurator); elementConfiguratorGlobals.add(elementConfigurator);
} }
@ -146,13 +144,13 @@ public abstract class AbstractX4OLanguageModule extends AbstractElementMetaBase
* @see org.x4o.xml.lang.X4OLanguageModuleLocal#addElementInterface(org.x4o.xml.element.ElementInterface) * @see org.x4o.xml.lang.X4OLanguageModuleLocal#addElementInterface(org.x4o.xml.element.ElementInterface)
*/ */
public void addElementInterface(ElementInterface elementInterface) { public void addElementInterface(ElementInterface elementInterface) {
if (elementInterface==null) { if (elementInterface == null) {
throw new NullPointerException("Can't add null."); throw new NullPointerException("Can't add null.");
} }
if (elementInterface.getId()==null) { if (elementInterface.getId() == null) {
throw new NullPointerException("Can't add with null id property."); throw new NullPointerException("Can't add with null id property.");
} }
if (elementInterface.getInterfaceClass()==null) { if (elementInterface.getInterfaceClass() == null) {
throw new NullPointerException("ElementInterface not correctly configured getInterfaceClass returns null."); throw new NullPointerException("ElementInterface not correctly configured getInterfaceClass returns null.");
} }
elementInterfaces.add(elementInterface); elementInterfaces.add(elementInterface);
@ -169,13 +167,13 @@ public abstract class AbstractX4OLanguageModule extends AbstractElementMetaBase
* @see org.x4o.xml.lang.X4OLanguageModuleLocal#addElementNamespace(org.x4o.xml.element.ElementNamespace) * @see org.x4o.xml.lang.X4OLanguageModuleLocal#addElementNamespace(org.x4o.xml.element.ElementNamespace)
*/ */
public void addElementNamespace(ElementNamespace elementNamespace) { public void addElementNamespace(ElementNamespace elementNamespace) {
if (elementNamespace==null) { if (elementNamespace == null) {
throw new NullPointerException("Can't add null."); throw new NullPointerException("Can't add null.");
} }
if (elementNamespace.getUri()==null) { if (elementNamespace.getUri() == null) {
throw new NullPointerException("Can add ElementNamespace without uri."); throw new NullPointerException("Can add ElementNamespace without uri.");
} }
logger.fine("Adding namespaceUri: "+elementNamespace.getUri()); logger.fine("Adding namespaceUri: " + elementNamespace.getUri());
elementNamespaces.put(elementNamespace.getUri(), elementNamespace); elementNamespaces.put(elementNamespace.getUri(), elementNamespace);
} }

View file

@ -69,7 +69,7 @@ public abstract class AbstractX4OLanguageSession implements X4OLanguageSessionLo
} }
logger = Logger.getLogger(AbstractX4OLanguageSession.class.getName()); logger = Logger.getLogger(AbstractX4OLanguageSession.class.getName());
logger.finest("Creating new ParsingContext"); logger.finest("Creating new ParsingContext");
this.language=language; this.language = language;
dirtyElements = new ArrayList<>(20); dirtyElements = new ArrayList<>(20);
phaseSkip = new ArrayList<>(5); phaseSkip = new ArrayList<>(5);
phaseListeners = new HashMap<>(3); phaseListeners = new HashMap<>(3);
@ -90,7 +90,7 @@ public abstract class AbstractX4OLanguageSession implements X4OLanguageSessionLo
* @see org.x4o.xml.lang.X4OLanguageSessionLocal#setExpressionLanguageContext(javax.el.ELContext) * @see org.x4o.xml.lang.X4OLanguageSessionLocal#setExpressionLanguageContext(javax.el.ELContext)
*/ */
public void setExpressionLanguageContext(ELContext context) { public void setExpressionLanguageContext(ELContext context) {
if (eLContext!=null) { if (eLContext != null) {
throw new IllegalStateException("Can only set elContext once."); throw new IllegalStateException("Can only set elContext once.");
} }
eLContext = context; eLContext = context;
@ -107,7 +107,7 @@ public abstract class AbstractX4OLanguageSession implements X4OLanguageSessionLo
* @see org.x4o.xml.lang.X4OLanguageSessionLocal#setExpressionLanguageFactory(javax.el.ExpressionFactory) * @see org.x4o.xml.lang.X4OLanguageSessionLocal#setExpressionLanguageFactory(javax.el.ExpressionFactory)
*/ */
public void setExpressionLanguageFactory(ExpressionFactory expressionFactory) { public void setExpressionLanguageFactory(ExpressionFactory expressionFactory) {
if (this.expressionFactory!=null) { if (this.expressionFactory != null) {
throw new IllegalStateException("Can only set expressionFactory once."); throw new IllegalStateException("Can only set expressionFactory once.");
} }
this.expressionFactory = expressionFactory; this.expressionFactory = expressionFactory;
@ -124,7 +124,7 @@ public abstract class AbstractX4OLanguageSession implements X4OLanguageSessionLo
* @param elementAttributeValueParser the elementAttributeValueParser to set * @param elementAttributeValueParser the elementAttributeValueParser to set
*/ */
public void setElementAttributeValueParser(ElementAttributeValueParser elementAttributeValueParser) { public void setElementAttributeValueParser(ElementAttributeValueParser elementAttributeValueParser) {
if (this.elementAttributeValueParser!=null) { if (this.elementAttributeValueParser != null) {
throw new IllegalStateException("Can only set elementAttributeValueParser once."); throw new IllegalStateException("Can only set elementAttributeValueParser once.");
} }
this.elementAttributeValueParser = elementAttributeValueParser; this.elementAttributeValueParser = elementAttributeValueParser;
@ -141,7 +141,7 @@ public abstract class AbstractX4OLanguageSession implements X4OLanguageSessionLo
* @param elementObjectPropertyValue the elementObjectPropertyValue to set * @param elementObjectPropertyValue the elementObjectPropertyValue to set
*/ */
public void setElementObjectPropertyValue(ElementObjectPropertyValue elementObjectPropertyValue) { public void setElementObjectPropertyValue(ElementObjectPropertyValue elementObjectPropertyValue) {
if (this.elementObjectPropertyValue!=null) { if (this.elementObjectPropertyValue != null) {
throw new IllegalStateException("Can only set elementObjectPropertyValue once."); throw new IllegalStateException("Can only set elementObjectPropertyValue once.");
} }
this.elementObjectPropertyValue = elementObjectPropertyValue; this.elementObjectPropertyValue = elementObjectPropertyValue;
@ -175,10 +175,10 @@ public abstract class AbstractX4OLanguageSession implements X4OLanguageSessionLo
* @see org.x4o.xml.lang.X4OLanguageSession#setRootElement(org.x4o.xml.element.Element) * @see org.x4o.xml.lang.X4OLanguageSession#setRootElement(org.x4o.xml.element.Element)
*/ */
public void setRootElement(Element element) { public void setRootElement(Element element) {
if (element==null) { if (element == null) {
throw new NullPointerException("May not set rootElement to null"); throw new NullPointerException("May not set rootElement to null");
} }
rootElement=element; rootElement = element;
} }
/** /**
@ -192,14 +192,14 @@ public abstract class AbstractX4OLanguageSession implements X4OLanguageSessionLo
* @see org.x4o.xml.lang.X4OLanguageSession#hasX4ODebugWriter() * @see org.x4o.xml.lang.X4OLanguageSession#hasX4ODebugWriter()
*/ */
public boolean hasX4ODebugWriter() { public boolean hasX4ODebugWriter() {
return debugWriter!=null; return debugWriter != null;
} }
/** /**
* @see org.x4o.xml.lang.X4OLanguageSessionLocal#setX4ODebugWriter(org.x4o.xml.io.X4ODebugWriter) * @see org.x4o.xml.lang.X4OLanguageSessionLocal#setX4ODebugWriter(org.x4o.xml.io.X4ODebugWriter)
*/ */
public void setX4ODebugWriter(X4ODebugWriter debugWriter) { public void setX4ODebugWriter(X4ODebugWriter debugWriter) {
this.debugWriter=debugWriter; this.debugWriter = debugWriter;
} }
/** /**
@ -234,7 +234,7 @@ public abstract class AbstractX4OLanguageSession implements X4OLanguageSessionLo
* @see org.x4o.xml.lang.X4OLanguageSessionLocal#setPhaseStop(java.lang.String) * @see org.x4o.xml.lang.X4OLanguageSessionLocal#setPhaseStop(java.lang.String)
*/ */
public void setPhaseStop(String phaseId) { public void setPhaseStop(String phaseId) {
this.phaseStop=phaseId; this.phaseStop = phaseId;
} }
/** /**
@ -246,8 +246,9 @@ public abstract class AbstractX4OLanguageSession implements X4OLanguageSessionLo
/** /**
* Gets the phase listeners for a phase. * Gets the phase listeners for a phase.
*
* @param phaseId The phaseId of for the listeners. * @param phaseId The phaseId of for the listeners.
* @return The x4o phase listeners. * @return The x4o phase listeners.
*/ */
public List<X4OPhaseListener> storePhaseListeners(String phaseId) { public List<X4OPhaseListener> storePhaseListeners(String phaseId) {
List<X4OPhaseListener> result = phaseListeners.get(phaseId); List<X4OPhaseListener> result = phaseListeners.get(phaseId);

View file

@ -151,13 +151,16 @@ public class DefaultX4OLanguage implements X4OLanguageLocal {
languageSession.setExpressionLanguageFactory(X4OExpressionFactory.createExpressionFactory()); languageSession.setExpressionLanguageFactory(X4OExpressionFactory.createExpressionFactory());
} }
if (languageSession.getExpressionLanguageContext() == null) { if (languageSession.getExpressionLanguageContext() == null) {
languageSession.setExpressionLanguageContext(X4OExpressionFactory.createELContext(languageSession.getLanguage().getLanguageConfiguration().getDefaultExpressionLanguageContext())); languageSession.setExpressionLanguageContext(
X4OExpressionFactory.createELContext(languageSession.getLanguage().getLanguageConfiguration().getDefaultExpressionLanguageContext()));
} }
if (languageSession.getElementAttributeValueParser() == null) { if (languageSession.getElementAttributeValueParser() == null) {
languageSession.setElementAttributeValueParser(X4OLanguageClassLoader.newInstance(ElementAttributeValueParser.class, getLanguageConfiguration().getDefaultElementAttributeValueParser())); languageSession.setElementAttributeValueParser(X4OLanguageClassLoader.newInstance(ElementAttributeValueParser.class,
getLanguageConfiguration().getDefaultElementAttributeValueParser()));
} }
if (languageSession.getElementObjectPropertyValue() == null) { if (languageSession.getElementObjectPropertyValue() == null) {
languageSession.setElementObjectPropertyValue(X4OLanguageClassLoader.newInstance(ElementObjectPropertyValue.class, getLanguageConfiguration().getDefaultElementObjectPropertyValue())); languageSession.setElementObjectPropertyValue(X4OLanguageClassLoader.newInstance(ElementObjectPropertyValue.class,
getLanguageConfiguration().getDefaultElementObjectPropertyValue()));
} }
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
throw new RuntimeException(e.getMessage(), e); throw new RuntimeException(e.getMessage(), e);

View file

@ -54,6 +54,7 @@ public class DefaultX4OLanguageConfiguration extends AbstractX4OLanguageConfigur
public DefaultX4OLanguageConfiguration() { public DefaultX4OLanguageConfiguration() {
} }
//@formatter:off
public void fillDefaults() { public void fillDefaults() {
if (getLanguageResourcePathPrefix()==null) { setLanguageResourcePathPrefix( X4OLanguageConfiguration.DEFAULT_LANG_PATH_PREFIX); } if (getLanguageResourcePathPrefix()==null) { setLanguageResourcePathPrefix( X4OLanguageConfiguration.DEFAULT_LANG_PATH_PREFIX); }
if (getLanguageResourceModulesFileName()==null) { setLanguageResourceModulesFileName( X4OLanguageConfiguration.DEFAULT_LANG_MODULES_FILE);} if (getLanguageResourceModulesFileName()==null) { setLanguageResourceModulesFileName( X4OLanguageConfiguration.DEFAULT_LANG_MODULES_FILE);}
@ -74,28 +75,29 @@ public class DefaultX4OLanguageConfiguration extends AbstractX4OLanguageConfigur
if (getDefaultLanguageLoader()==null) { setDefaultLanguageLoader( DefaultX4OLanguageLoader.class); } if (getDefaultLanguageLoader()==null) { setDefaultLanguageLoader( DefaultX4OLanguageLoader.class); }
if (getDefaultExpressionLanguageContext()==null) { setDefaultExpressionLanguageContext( X4OELContext.class); } if (getDefaultExpressionLanguageContext()==null) { setDefaultExpressionLanguageContext( X4OELContext.class); }
} }
//@formatter:on
/** /**
* @see org.x4o.xml.lang.X4OLanguageConfigurationLocal#createProxy() * @see org.x4o.xml.lang.X4OLanguageConfigurationLocal#createProxy()
*/ */
public X4OLanguageConfiguration createProxy() { public X4OLanguageConfiguration createProxy() {
Object proxy = Proxy.newProxyInstance(X4OLanguageClassLoader.getClassLoader(), new Class[]{X4OLanguageConfiguration.class}, new InvocationHandler() { Object proxy = Proxy.newProxyInstance(X4OLanguageClassLoader.getClassLoader(), new Class[] { X4OLanguageConfiguration.class }, new InvocationHandler() {
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
X4OLanguageConfigurationLocal local = DefaultX4OLanguageConfiguration.this; X4OLanguageConfigurationLocal local = DefaultX4OLanguageConfiguration.this;
int argsLength = 0; int argsLength = 0;
if (args!=null) { if (args != null) {
argsLength = args.length; argsLength = args.length;
} }
Class<?>[] invokeArgs = new Class[argsLength]; Class<?>[] invokeArgs = new Class[argsLength];
for (int i=0;i<argsLength;i++) { for (int i = 0; i < argsLength; i++) {
//Object o = args[i]; // Object o = args[i];
invokeArgs[i] = X4OLanguageSession.class; //o.getClass(); todo fix invokeArgs[i] = X4OLanguageSession.class; // o.getClass(); todo fix
} }
Method localMethod = local.getClass().getMethod(method.getName(), invokeArgs); Method localMethod = local.getClass().getMethod(method.getName(), invokeArgs);
Object result = localMethod.invoke(local, args); Object result = localMethod.invoke(local, args);
return result; // result is reflection safe interface hiding. return result; // result is reflection safe interface hiding.
} }
}); });
return (X4OLanguageConfiguration)proxy; return (X4OLanguageConfiguration) proxy;
} }
} }

View file

@ -65,8 +65,9 @@ public class DefaultX4OLanguageLoader implements X4OLanguageLoader {
/** /**
* Write log message to debug writer. * Write log message to debug writer.
* @param language The X4O language we are loading. *
* @param message The message to log to the debug output. * @param language The X4O language we are loading.
* @param message The message to log to the debug output.
*/ */
private void logMessage(X4OLanguageSession session, String message) { private void logMessage(X4OLanguageSession session, String message) {
logger.finest(message + " from: " + session.getLanguage().getLanguageName()); logger.finest(message + " from: " + session.getLanguage().getLanguageName());
@ -80,7 +81,8 @@ public class DefaultX4OLanguageLoader implements X4OLanguageLoader {
} }
@Override @Override
public void loadLanguage(X4OLanguageSession session, X4OLanguageLocal languageLocal, String language, String languageVersion) throws X4OLanguageLoaderException { public void loadLanguage(X4OLanguageSession session, X4OLanguageLocal languageLocal, String language, String languageVersion)
throws X4OLanguageLoaderException {
logger.finer("Loading all modules for language: " + language); logger.finer("Loading all modules for language: " + language);
List<VersionedResources> modulesAll = loadLanguageModules(session, languageLocal, language); List<VersionedResources> modulesAll = loadLanguageModules(session, languageLocal, language);
modulesAll = filterVersionModules(modulesAll, languageLocal, languageVersion); modulesAll = filterVersionModules(modulesAll, languageLocal, languageVersion);
@ -93,31 +95,32 @@ public class DefaultX4OLanguageLoader implements X4OLanguageLoader {
String languagePrefix = languageLocal.getLanguageConfiguration().getLanguageResourcePathPrefix(); String languagePrefix = languageLocal.getLanguageConfiguration().getLanguageResourcePathPrefix();
String resource = languagePrefix + "/" + language + "/" + value; String resource = languagePrefix + "/" + language + "/" + value;
if (language.equals(EldDriver.LANGUAGE_NAME)) { if (language.equals(EldDriver.LANGUAGE_NAME)) {
loader = new EldModuleLoader(resource,true); // load cel loader = new EldModuleLoader(resource, true); // load cel
} else { } else {
loader = new EldModuleLoader(resource,false); // load eld loader = new EldModuleLoader(resource, false); // load eld
} }
loadModule(session, languageLocal, loader, value, versionedResources); loadModule(session, languageLocal, loader, value, versionedResources);
} }
for (String value : versionedResources.moduleLoaders) { for (String value : versionedResources.moduleLoaders) {
try { try {
loader = (X4OLanguageModuleLoader)X4OLanguageClassLoader.newInstance(value); loader = (X4OLanguageModuleLoader) X4OLanguageClassLoader.newInstance(value);
} catch (Exception ee) { } catch (Exception ee) {
throw new X4OLanguageLoaderException("Could not load class: " + value + " error: " + ee.getMessage(),ee); throw new X4OLanguageLoaderException("Could not load class: " + value + " error: " + ee.getMessage(), ee);
} }
loadModule(session, languageLocal, loader, value, versionedResources); loadModule(session, languageLocal, loader, value, versionedResources);
} }
for (String value : versionedResources.siblingLoaders) { for (String value : versionedResources.siblingLoaders) {
try { try {
loader = (X4OLanguageModuleLoader)X4OLanguageClassLoader.newInstance(value); loader = (X4OLanguageModuleLoader) X4OLanguageClassLoader.newInstance(value);
} catch (Exception ee) { } catch (Exception ee) {
throw new X4OLanguageLoaderException("Could not load class: " + value + " error: " + ee.getMessage(),ee); throw new X4OLanguageLoaderException("Could not load class: " + value + " error: " + ee.getMessage(), ee);
} }
loadModule(session, languageLocal, loader, value, versionedResources); loadModule(session, languageLocal, loader, value, versionedResources);
if (loader instanceof X4OLanguageModuleLoaderSibling) { if (loader instanceof X4OLanguageModuleLoaderSibling) {
// mmm // mmm
X4OPhaseInitLanguageSiblings sibPhase = (X4OPhaseInitLanguageSiblings)languageLocal.getPhaseManager().getPhase(X4OPhaseLanguageInit.INIT_LANG_SIB); X4OPhaseInitLanguageSiblings sibPhase = (X4OPhaseInitLanguageSiblings) languageLocal.getPhaseManager()
sibPhase.addLanguageModuleLoaderSibling((X4OLanguageModuleLoaderSibling)loader); .getPhase(X4OPhaseLanguageInit.INIT_LANG_SIB);
sibPhase.addLanguageModuleLoaderSibling((X4OLanguageModuleLoaderSibling) loader);
} }
} }
for (String value : versionedResources.elbResources) { for (String value : versionedResources.elbResources) {
@ -131,11 +134,13 @@ public class DefaultX4OLanguageLoader implements X4OLanguageLoader {
} }
} }
private List<VersionedResources> filterVersionModules(List<VersionedResources> resources, X4OLanguageLocal languageLocal, String languageVersion) throws X4OLanguageLoaderException { private List<VersionedResources> filterVersionModules(List<VersionedResources> resources, X4OLanguageLocal languageLocal, String languageVersion)
throws X4OLanguageLoaderException {
List<VersionedResources> result = new ArrayList<VersionedResources>(resources.size()); List<VersionedResources> result = new ArrayList<VersionedResources>(resources.size());
X4OLanguageVersionFilter lvf; X4OLanguageVersionFilter lvf;
try { try {
lvf = X4OLanguageClassLoader.newInstance(X4OLanguageVersionFilter.class, languageLocal.getLanguageConfiguration().getDefaultLanguageVersionFilter()); lvf = X4OLanguageClassLoader.newInstance(X4OLanguageVersionFilter.class,
languageLocal.getLanguageConfiguration().getDefaultLanguageVersionFilter());
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
throw new X4OLanguageLoaderException(e); throw new X4OLanguageLoaderException(e);
} }
@ -173,17 +178,19 @@ public class DefaultX4OLanguageLoader implements X4OLanguageLoader {
} }
} }
private void loadModule(X4OLanguageSession session, X4OLanguageLocal languageLocal, X4OLanguageModuleLoader loader, String resource, VersionedResources versionedResources) throws X4OLanguageLoaderException { private void loadModule(X4OLanguageSession session, X4OLanguageLocal languageLocal, X4OLanguageModuleLoader loader, String resource,
VersionedResources versionedResources) throws X4OLanguageLoaderException {
X4OLanguageModuleLocal module; X4OLanguageModuleLocal module;
try { try {
module = X4OLanguageClassLoader.newInstance(X4OLanguageModuleLocal.class, languageLocal.getLanguageConfiguration().getDefaultElementLanguageModule()); module = X4OLanguageClassLoader.newInstance(X4OLanguageModuleLocal.class,
languageLocal.getLanguageConfiguration().getDefaultElementLanguageModule());
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
throw new X4OLanguageLoaderException(e); throw new X4OLanguageLoaderException(e);
} }
logMessage(session,"Created module: " + module); logMessage(session, "Created module: " + module);
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
try { try {
logMessage(session,"Starting modules: " + module + " for language: " + languageLocal.getLanguageName()); logMessage(session, "Starting modules: " + module + " for language: " + languageLocal.getLanguageName());
loader.loadLanguageModule(session, languageLocal, module); loader.loadLanguageModule(session, languageLocal, module);
} catch (X4OLanguageModuleLoaderException e) { } catch (X4OLanguageModuleLoaderException e) {
throw new X4OLanguageLoaderException(e); // FIXME info throw new X4OLanguageLoaderException(e); // FIXME info
@ -203,10 +210,12 @@ public class DefaultX4OLanguageLoader implements X4OLanguageLoader {
/** /**
* Loads all modules of an language. * Loads all modules of an language.
* @param languageLocal The ElementLanguage to load for. *
* @param language The language to load. * @param languageLocal The ElementLanguage to load for.
* @param language The language to load.
*/ */
protected List<VersionedResources> loadLanguageModules(X4OLanguageSession session, X4OLanguageLocal languageLocal, String language) throws X4OLanguageLoaderException { protected List<VersionedResources> loadLanguageModules(X4OLanguageSession session, X4OLanguageLocal languageLocal, String language)
throws X4OLanguageLoaderException {
List<VersionedResources> result = new ArrayList<VersionedResources>(15); List<VersionedResources> result = new ArrayList<VersionedResources>(15);
StringBuilder buf = new StringBuilder(150); StringBuilder buf = new StringBuilder(150);
buf.append(languageLocal.getLanguageConfiguration().getLanguageResourcePathPrefix()); buf.append(languageLocal.getLanguageConfiguration().getLanguageResourcePathPrefix());
@ -225,26 +234,28 @@ public class DefaultX4OLanguageLoader implements X4OLanguageLoader {
result.addAll(loadLanguageModulesXml(u.openStream(), u.toString())); result.addAll(loadLanguageModulesXml(u.openStream(), u.toString()));
} }
e = Thread.currentThread().getContextClassLoader().getResources("/"+buf.toString()); e = Thread.currentThread().getContextClassLoader().getResources("/" + buf.toString());
while (e.hasMoreElements()) { while (e.hasMoreElements()) {
URL u = e.nextElement(); URL u = e.nextElement();
logMessage(session, "Loading root modules: " + u + " for: " + language); logMessage(session, "Loading root modules: " + u + " for: " + language);
result.addAll(loadLanguageModulesXml(u.openStream(), u.toString())); result.addAll(loadLanguageModulesXml(u.openStream(), u.toString()));
} }
return result; return result;
} catch (IOException | SAXException | ParserConfigurationException e) { } catch (IOException | SAXException | ParserConfigurationException e) {
throw new X4OLanguageLoaderException(e); throw new X4OLanguageLoaderException(e);
} }
} }
/** /**
* Parser xml inputstream to languge modules. * Parser xml inputstream to languge modules.
* @param in The inputstream to parser. *
* @param in The inputstream to parser.
* @throws IOException * @throws IOException
* @throws SAXException * @throws SAXException
* @throws ParserConfigurationException * @throws ParserConfigurationException
*/ */
protected List<VersionedResources> loadLanguageModulesXml(InputStream in, String loadedFrom) throws IOException, SAXException, ParserConfigurationException { protected List<VersionedResources> loadLanguageModulesXml(InputStream in, String loadedFrom)
throws IOException, SAXException, ParserConfigurationException {
if (in == null) { if (in == null) {
throw new NullPointerException("Can't parse null input stream"); throw new NullPointerException("Can't parse null input stream");
} }
@ -255,7 +266,7 @@ public class DefaultX4OLanguageLoader implements X4OLanguageLoader {
XMLReader reader = parser.getXMLReader(); XMLReader reader = parser.getXMLReader();
reader.setContentHandler(xth); reader.setContentHandler(xth);
reader.setProperty("http://xml.org/sax/properties/lexical-handler", xth); reader.setProperty("http://xml.org/sax/properties/lexical-handler", xth);
reader.setProperty("http://xml.org/sax/properties/declaration-handler",xth); reader.setProperty("http://xml.org/sax/properties/declaration-handler", xth);
try { try {
reader.parse(new InputSource(in)); reader.parse(new InputSource(in));
return xth.getResult(); return xth.getResult();
@ -295,7 +306,7 @@ public class DefaultX4OLanguageLoader implements X4OLanguageLoader {
} }
@Override @Override
public void endElement(String namespaceUri, String tag,String qName) throws SAXException { public void endElement(String namespaceUri, String tag, String qName) throws SAXException {
// Get and clear text // Get and clear text
String value = buf.toString(); String value = buf.toString();

View file

@ -20,8 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang; package org.x4o.xml.lang;
/** /**
* An DefaultElementLanguageModule. * An DefaultElementLanguageModule.

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang; package org.x4o.xml.lang;
import org.x4o.xml.io.X4OConnectionException; import org.x4o.xml.io.X4OConnectionException;
import org.x4o.xml.lang.phase.X4OPhaseException; import org.x4o.xml.lang.phase.X4OPhaseException;

View file

@ -24,7 +24,6 @@ package org.x4o.xml.lang;
import java.util.List; import java.util.List;
/** /**
* DefaultX4OLanguageVersionFilter makes best filter match attempt. * DefaultX4OLanguageVersionFilter makes best filter match attempt.
* *
@ -35,26 +34,27 @@ public class DefaultX4OLanguageVersionFilter implements X4OLanguageVersionFilter
/** /**
* Filters to the best version. * Filters to the best version.
*
* @see org.x4o.xml.lang.X4OLanguageVersionFilter#filterVersion(java.lang.String, java.util.List) * @see org.x4o.xml.lang.X4OLanguageVersionFilter#filterVersion(java.lang.String, java.util.List)
* @return The perfect or best match or null if no match for requested language. * @return The perfect or best match or null if no match for requested language.
* @param requestVersion The language version to search for. * @param requestVersion The language version to search for.
* @param versions The list of version to search in. * @param versions The list of version to search in.
*/ */
public String filterVersion(String requestVersion, List<String> versions) { public String filterVersion(String requestVersion, List<String> versions) {
for (int i=0;i<versions.size();i++) { for (int i = 0; i < versions.size(); i++) {
String version = versions.get(i); String version = versions.get(i);
if (version.equals(requestVersion)) { if (version.equals(requestVersion)) {
return version; // full match return version; // full match
} }
} }
String requestVersionDot = requestVersion; String requestVersionDot = requestVersion;
if (requestVersion.length()>2) { if (requestVersion.length() > 2) {
requestVersionDot = requestVersion.substring(0,requestVersion.length()-2); requestVersionDot = requestVersion.substring(0, requestVersion.length() - 2);
} }
for (int i=0;i<versions.size();i++) { for (int i = 0; i < versions.size(); i++) {
String version = versions.get(i); String version = versions.get(i);
if (version.endsWith(".*")) { if (version.endsWith(".*")) {
String versionDot = version.substring(0,version.length()-2); String versionDot = version.substring(0, version.length() - 2);
if (versionDot.equals(requestVersionDot)) { if (versionDot.equals(requestVersionDot)) {
return version; // star match return version; // star match
} }

View file

@ -41,17 +41,19 @@ public interface X4OLanguage {
/** /**
* Returns the language name of this x4o xml language. * Returns the language name of this x4o xml language.
* @return Returns the language name. *
* @return Returns the language name.
*/ */
String getLanguageName(); String getLanguageName();
/** /**
* @return Returns the language version of this language instance. * @return Returns the language version of this language instance.
*/ */
String getLanguageVersion(); String getLanguageVersion();
/** /**
* Returns the phase manager which runs the phases * Returns the phase manager which runs the phases
*
* @return Returns the phase manager. * @return Returns the phase manager.
*/ */
X4OPhaseManager getPhaseManager(); X4OPhaseManager getPhaseManager();
@ -63,44 +65,50 @@ public interface X4OLanguage {
/** /**
* Creates and fills the initial element language used to store the language. * Creates and fills the initial element language used to store the language.
* @return The newly created X4OLanguageSession. *
* @return The newly created X4OLanguageSession.
*/ */
X4OLanguageSession createLanguageSession(); X4OLanguageSession createLanguageSession();
/** /**
* Search language for object and create element for it. * Search language for object and create element for it.
* @param context The X4O language context to create for. *
* @param context The X4O language context to create for.
* @param objectClass The object to search for. * @param objectClass The object to search for.
* @return Returns an new Element instance for the object. * @return Returns an new Element instance for the object.
*/ */
Element createElementInstance(X4OLanguageSession context,Class<?> objectClass); Element createElementInstance(X4OLanguageSession context, Class<?> objectClass);
/** /**
* Gets all ElementBindingHandlers which are possible for parent. * Gets all ElementBindingHandlers which are possible for parent.
*
* @param parent The parent element object or class to search for. * @param parent The parent element object or class to search for.
* @return Returns an List with all ElementBindingHandler for the search. * @return Returns an List with all ElementBindingHandler for the search.
*/ */
List<ElementBindingHandler> findElementBindingHandlers(Object parent); List<ElementBindingHandler> findElementBindingHandlers(Object parent);
/** /**
* Gets all ElementBindingHandlers for parent and child combination. * Gets all ElementBindingHandlers for parent and child combination.
*
* @param parent The parent element object or class to search for. * @param parent The parent element object or class to search for.
* @param child The parent element object or class to search for. * @param child The parent element object or class to search for.
* @return Returns an List with all ElementBindingHandler for the search pair. * @return Returns an List with all ElementBindingHandler for the search pair.
*/ */
List<ElementBindingHandler> findElementBindingHandlers(Object parent,Object child); List<ElementBindingHandler> findElementBindingHandlers(Object parent, Object child);
/** /**
* Returns list of ElementInterfaces for an element. * Returns list of ElementInterfaces for an element.
*
* @param object The element object or class to search for. * @param object The element object or class to search for.
* @return The list of elementInterfaces. * @return The list of elementInterfaces.
*/ */
List<ElementInterface> findElementInterfaces(Object object); List<ElementInterface> findElementInterfaces(Object object);
/** /**
* Returns the namespace context for an namespace uri. * Returns the namespace context for an namespace uri.
*
* @param namespaceUri the namespace uri. * @param namespaceUri the namespace uri.
* @return The ElementNamespace. * @return The ElementNamespace.
*/ */
ElementNamespace findElementNamespace(String namespaceUri); ElementNamespace findElementNamespace(String namespaceUri);

View file

@ -42,7 +42,8 @@ public final class X4OLanguageClassLoader {
/** /**
* Gets the thread classloader or the normal classloader. * Gets the thread classloader or the normal classloader.
* @return Returns the ClassLoader. *
* @return Returns the ClassLoader.
*/ */
public static ClassLoader getClassLoader() { public static ClassLoader getClassLoader() {
ClassLoader cl = Thread.currentThread().getContextClassLoader(); ClassLoader cl = Thread.currentThread().getContextClassLoader();
@ -53,12 +54,11 @@ public final class X4OLanguageClassLoader {
} }
/** /**
* Loads a Class from the ContextClassLoader and if that is not set, then * Loads a Class from the ContextClassLoader and if that is not set, then uses the class of the String className instance.
* uses the class of the String className instance.
* *
* @param className The class name to load * @param className The class name to load
* @return The loaded class * @return The loaded class
* @throws ClassNotFoundException if class not loaded. * @throws ClassNotFoundException if class not loaded.
*/ */
public static Class<?> loadClass(String className) throws ClassNotFoundException { public static Class<?> loadClass(String className) throws ClassNotFoundException {
return getClassLoader().loadClass(className); return getClassLoader().loadClass(className);
@ -66,10 +66,11 @@ public final class X4OLanguageClassLoader {
/** /**
* Creates new instance of clazz. * Creates new instance of clazz.
*
* @param resultType The result type to cast to.. * @param resultType The result type to cast to..
* @param clazz The class to make object from. * @param clazz The class to make object from.
* @return The object of the clazz. * @return The object of the clazz.
* @throws ClassNotFoundException On any construct access or invoke error. * @throws ClassNotFoundException On any construct access or invoke error.
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <T> T newInstance(Class<T> resultType, Class<?> clazz) throws ClassNotFoundException { public static <T> T newInstance(Class<T> resultType, Class<?> clazz) throws ClassNotFoundException {
@ -78,23 +79,26 @@ public final class X4OLanguageClassLoader {
/** /**
* Creates new instance of clazz. * Creates new instance of clazz.
* @param clazz The class to make object from. *
* @return The object of the clazz. * @param clazz The class to make object from.
* @throws ClassNotFoundException On any construct access or invoke error. * @return The object of the clazz.
* @throws ClassNotFoundException On any construct access or invoke error.
*/ */
public static Object newInstance(Class<?> clazz) throws ClassNotFoundException { public static Object newInstance(Class<?> clazz) throws ClassNotFoundException {
try { try {
return clazz.getConstructor().newInstance(); return clazz.getConstructor().newInstance();
} catch (IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException e) { } catch (IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException | InstantiationException
| IllegalAccessException e) {
throw new ClassNotFoundException(e.getMessage(), e); throw new ClassNotFoundException(e.getMessage(), e);
} }
} }
/** /**
* Creates new instance of className. * Creates new instance of className.
* @param className The className to create object from. *
* @return The object of the className. * @param className The className to create object from.
* @throws ClassNotFoundException When className is not found or can't be created. * @return The object of the className.
* @throws ClassNotFoundException When className is not found or can't be created.
*/ */
public static Object newInstance(String className) throws ClassNotFoundException { public static Object newInstance(String className) throws ClassNotFoundException {
return newInstance(loadClass(className)); return newInstance(loadClass(className));
@ -102,8 +106,9 @@ public final class X4OLanguageClassLoader {
/** /**
* Gets a resource from the classloader to an url. * Gets a resource from the classloader to an url.
* @param resourceName The resource to get from the classloader. *
* @return The url to the resource or null if not found. * @param resourceName The resource to get from the classloader.
* @return The url to the resource or null if not found.
* @see java.lang.ClassLoader#getResource(String) * @see java.lang.ClassLoader#getResource(String)
*/ */
public static URL getResource(String resourceName) { public static URL getResource(String resourceName) {
@ -112,8 +117,9 @@ public final class X4OLanguageClassLoader {
/** /**
* Gets a resource from the classloader to an inputstream. * Gets a resource from the classloader to an inputstream.
* @param resourceName The resource to get from the classloader. *
* @return The inputstream to the resource or null if not found. * @param resourceName The resource to get from the classloader.
* @return The inputstream to the resource or null if not found.
* @see java.lang.ClassLoader#getResourceAsStream(String) * @see java.lang.ClassLoader#getResourceAsStream(String)
*/ */
public static InputStream getResourceAsStream(String resourceName) { public static InputStream getResourceAsStream(String resourceName) {

View file

@ -37,44 +37,55 @@ public interface X4OLanguageConfiguration {
public static final String DEFAULT_LANG_MODULES_FILE = "-modules.xml"; public static final String DEFAULT_LANG_MODULES_FILE = "-modules.xml";
/** /**
* @return Returns the path prefix for loading language resources. * @return Returns the path prefix for loading language resources.
*/ */
String getLanguageResourcePathPrefix(); String getLanguageResourcePathPrefix();
/** /**
* @return Returns the filename (postfix) of the modules definition file. * @return Returns the filename (postfix) of the modules definition file.
*/ */
String getLanguageResourceModulesFileName(); String getLanguageResourceModulesFileName();
// Core interfaces are also in class for text reference without instance // Core interfaces are also in class for text reference without instance
Class<?> getDefaultElementNamespace(); Class<?> getDefaultElementNamespace();
Class<?> getDefaultElementInterface(); Class<?> getDefaultElementInterface();
Class<?> getDefaultElement(); Class<?> getDefaultElement();
Class<?> getDefaultElementClass(); Class<?> getDefaultElementClass();
Class<?> getDefaultElementClassAttribute(); Class<?> getDefaultElementClassAttribute();
// Other needed interfaces in class form also // Other needed interfaces in class form also
Class<?> getDefaultElementLanguageModule(); Class<?> getDefaultElementLanguageModule();
Class<?> getDefaultElementBodyComment(); Class<?> getDefaultElementBodyComment();
Class<?> getDefaultElementBodyCharacters(); Class<?> getDefaultElementBodyCharacters();
Class<?> getDefaultElementBodyWhitespace(); Class<?> getDefaultElementBodyWhitespace();
Class<?> getDefaultElementNamespaceInstanceProvider(); Class<?> getDefaultElementNamespaceInstanceProvider();
Class<?> getDefaultElementAttributeValueParser(); Class<?> getDefaultElementAttributeValueParser();
Class<?> getDefaultElementObjectPropertyValue(); Class<?> getDefaultElementObjectPropertyValue();
Class<?> getDefaultElementNamespaceAttributeComparator(); Class<?> getDefaultElementNamespaceAttributeComparator();
/** /**
* @return Returns the X4OLanguageVersionFilter which filters the best version to use. * @return Returns the X4OLanguageVersionFilter which filters the best version to use.
*/ */
Class<?> getDefaultLanguageVersionFilter(); Class<?> getDefaultLanguageVersionFilter();
/** /**
* @return Returns the X4OLanguageLoader which loads languages into the element context. * @return Returns the X4OLanguageLoader which loads languages into the element context.
*/ */
Class<?> getDefaultLanguageLoader(); Class<?> getDefaultLanguageLoader();
/** /**
* @return Returns the Expression Language Context which holds the el objects. * @return Returns the Expression Language Context which holds the el objects.
*/ */
Class<?> getDefaultExpressionLanguageContext(); Class<?> getDefaultExpressionLanguageContext();
} }

View file

@ -33,24 +33,38 @@ public interface X4OLanguageConfigurationLocal extends X4OLanguageConfiguration
X4OLanguageConfiguration createProxy(); X4OLanguageConfiguration createProxy();
void setLanguageResourcePathPrefix(String value); void setLanguageResourcePathPrefix(String value);
void setLanguageResourceModulesFileName(String value); void setLanguageResourceModulesFileName(String value);
void setDefaultElementNamespace(Class<?> value); void setDefaultElementNamespace(Class<?> value);
void setDefaultElementInterface(Class<?> value); void setDefaultElementInterface(Class<?> value);
void setDefaultElement(Class<?> value); void setDefaultElement(Class<?> value);
void setDefaultElementClass(Class<?> value); void setDefaultElementClass(Class<?> value);
void setDefaultElementClassAttribute(Class<?> value); void setDefaultElementClassAttribute(Class<?> value);
void setDefaultElementLanguageModule(Class<?> value); void setDefaultElementLanguageModule(Class<?> value);
void setDefaultElementBodyComment(Class<?> value); void setDefaultElementBodyComment(Class<?> value);
void setDefaultElementBodyCharacters(Class<?> value); void setDefaultElementBodyCharacters(Class<?> value);
void setDefaultElementBodyWhitespace(Class<?> value); void setDefaultElementBodyWhitespace(Class<?> value);
void setDefaultElementNamespaceInstanceProvider(Class<?> value); void setDefaultElementNamespaceInstanceProvider(Class<?> value);
void setDefaultElementAttributeValueParser(Class<?> value); void setDefaultElementAttributeValueParser(Class<?> value);
void setDefaultElementObjectPropertyValue(Class<?> value); void setDefaultElementObjectPropertyValue(Class<?> value);
void setDefaultElementNamespaceAttributeComparator(Class<?> value); void setDefaultElementNamespaceAttributeComparator(Class<?> value);
void setDefaultLanguageVersionFilter(Class<?> value); void setDefaultLanguageVersionFilter(Class<?> value);
void setDefaultLanguageLoader(Class<?> value); void setDefaultLanguageLoader(Class<?> value);
void setDefaultExpressionLanguageContext(Class<?> value); void setDefaultExpressionLanguageContext(Class<?> value);
} }

View file

@ -32,11 +32,12 @@ public interface X4OLanguageLoader {
/** /**
* Loads the language modules. * Loads the language modules.
* @param session The session we run in. *
* @param language The local Language to load for. * @param session The session we run in.
* @param languageName The language name to load. * @param language The local Language to load for.
* @param languageVersion The language version to load. * @param languageName The language name to load.
* @throws X4OLanguageLoaderException When there is an error. * @param languageVersion The language version to load.
* @throws X4OLanguageLoaderException When there is an error.
*/ */
void loadLanguage(X4OLanguageSession session, X4OLanguageLocal language, String languageName, String languageVersion) throws X4OLanguageLoaderException; void loadLanguage(X4OLanguageSession session, X4OLanguageLocal language, String languageName, String languageVersion) throws X4OLanguageLoaderException;
} }

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang; package org.x4o.xml.lang;
/** /**
* Is throw when there is en Exception within an Element. * Is throw when there is en Exception within an Element.
@ -42,7 +42,8 @@ public class X4OLanguageLoaderException extends Exception {
/** /**
* Constructs an X4OLanguageLoaderException with a detail message. * Constructs an X4OLanguageLoaderException with a detail message.
* @param message The message of this Exception *
* @param message The message of this Exception
*/ */
public X4OLanguageLoaderException(String message) { public X4OLanguageLoaderException(String message) {
super(message); super(message);
@ -50,7 +51,8 @@ public class X4OLanguageLoaderException extends Exception {
/** /**
* Creates an X4OLanguageLoaderException from a parent exception. * Creates an X4OLanguageLoaderException from a parent exception.
* @param e The exception. *
* @param e The exception.
*/ */
public X4OLanguageLoaderException(Exception e) { public X4OLanguageLoaderException(Exception e) {
super(e); super(e);
@ -58,10 +60,11 @@ public class X4OLanguageLoaderException extends Exception {
/** /**
* Constructs an X4OLanguageLoaderException with a detail message. * Constructs an X4OLanguageLoaderException with a detail message.
* @param message The message of this Exception *
* @param e The exception. * @param message The message of this Exception
* @param e The exception.
*/ */
public X4OLanguageLoaderException(String message,Exception e) { public X4OLanguageLoaderException(String message, Exception e) {
super(message,e); super(message, e);
} }
} }

View file

@ -37,6 +37,7 @@ public interface X4OLanguageLocal extends X4OLanguage {
/** /**
* Adds an X4OLanguageModule to this language. * Adds an X4OLanguageModule to this language.
*
* @param languageModule The element language module to add. * @param languageModule The element language module to add.
*/ */
void addLanguageModule(X4OLanguageModule languageModule); void addLanguageModule(X4OLanguageModule languageModule);

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang; package org.x4o.xml.lang;
import java.util.List; import java.util.List;
@ -40,6 +40,7 @@ public interface X4OLanguageModule /* extends ElementMetaBase TODO add local lay
// temp here see local // temp here see local
String getId(); String getId();
String getDescription(); String getDescription();
/** /**
@ -54,26 +55,30 @@ public interface X4OLanguageModule /* extends ElementMetaBase TODO add local lay
/** /**
* Gets all ElementBindingHandlers. * Gets all ElementBindingHandlers.
* @return Returns an List with all ElementBindingHandlers. *
* @return Returns an List with all ElementBindingHandlers.
*/ */
List<ElementBindingHandler> getElementBindingHandlers(); List<ElementBindingHandler> getElementBindingHandlers();
/** /**
* Gets all ElementConfiguratorGlobals. * Gets all ElementConfiguratorGlobals.
* @return All gloval ElementConfigurators. *
* @return All gloval ElementConfigurators.
*/ */
List<ElementConfiguratorGlobal> getElementConfiguratorGlobals(); List<ElementConfiguratorGlobal> getElementConfiguratorGlobals();
/** /**
* Returns list of ElementInterfaces in this context. * Returns list of ElementInterfaces in this context.
* @return The list of elementInterfaces. *
* @return The list of elementInterfaces.
*/ */
List<ElementInterface> getElementInterfaces(); List<ElementInterface> getElementInterfaces();
/** /**
* Returns the namespace context for an namespace uri. * Returns the namespace context for an namespace uri.
*
* @param namespaceUri the namespace uri. * @param namespaceUri the namespace uri.
* @return The ElementNamespace. * @return The ElementNamespace.
*/ */
ElementNamespace getElementNamespace(String namespaceUri); ElementNamespace getElementNamespace(String namespaceUri);
@ -84,8 +89,9 @@ public interface X4OLanguageModule /* extends ElementMetaBase TODO add local lay
/** /**
* Gets module loader meta result info. * Gets module loader meta result info.
* @param key The key to get info of. *
* @return The value of the info. * @param key The key to get info of.
* @return The value of the info.
*/ */
String getLoaderResult(X4OLanguageModuleLoaderResult key); String getLoaderResult(X4OLanguageModuleLoaderResult key);
} }

View file

@ -23,8 +23,7 @@
package org.x4o.xml.lang; package org.x4o.xml.lang;
/** /**
* X4OLanguageModuleLoader Loads all elements and other options * X4OLanguageModuleLoader Loads all elements and other options into the X4OLanguageModule for the X4OLanguageLocal language.
* into the X4OLanguageModule for the X4OLanguageLocal language.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Jul 8, 2006 * @version 1.0 Jul 8, 2006
@ -33,10 +32,11 @@ public interface X4OLanguageModuleLoader {
/** /**
* Starts the ElementProvider. * Starts the ElementProvider.
* @param session The session we run in. *
* @param session The session we run in.
* @param language The local Language to load for. * @param language The local Language to load for.
* @param module The language module to load it into. * @param module The language module to load it into.
* @throws X4OLanguageModuleLoaderException Gets thrown when modules could not be correctly loaded. * @throws X4OLanguageModuleLoaderException Gets thrown when modules could not be correctly loaded.
*/ */
void loadLanguageModule(X4OLanguageSession session, X4OLanguageLocal language, X4OLanguageModuleLocal module) throws X4OLanguageModuleLoaderException; void loadLanguageModule(X4OLanguageSession session, X4OLanguageLocal language, X4OLanguageModuleLocal module) throws X4OLanguageModuleLoaderException;
} }

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang; package org.x4o.xml.lang;
import org.x4o.xml.element.ElementException; import org.x4o.xml.element.ElementException;
@ -37,27 +37,30 @@ public class X4OLanguageModuleLoaderException extends ElementException {
/** /**
* Creates module loader exception. * Creates module loader exception.
* @param elementLanguageModuleLoader The loader module which creates this exception. *
* @param message The message of the exception. * @param elementLanguageModuleLoader The loader module which creates this exception.
* @param message The message of the exception.
*/ */
public X4OLanguageModuleLoaderException(X4OLanguageModuleLoader elementLanguageModuleLoader,String message) { public X4OLanguageModuleLoaderException(X4OLanguageModuleLoader elementLanguageModuleLoader, String message) {
super(message); super(message);
this.elementLanguageModuleLoader=elementLanguageModuleLoader; this.elementLanguageModuleLoader = elementLanguageModuleLoader;
} }
/** /**
* Creates module loader exception. * Creates module loader exception.
* @param elementLanguageModuleLoader The loader module which creates this exception. *
* @param message The message of the exception. * @param elementLanguageModuleLoader The loader module which creates this exception.
* @param exception The root cause of the exception. * @param message The message of the exception.
* @param exception The root cause of the exception.
*/ */
public X4OLanguageModuleLoaderException(X4OLanguageModuleLoader elementLanguageModuleLoader,String message,Exception exception) { public X4OLanguageModuleLoaderException(X4OLanguageModuleLoader elementLanguageModuleLoader, String message, Exception exception) {
super(message,exception); super(message, exception);
this.elementLanguageModuleLoader=elementLanguageModuleLoader; this.elementLanguageModuleLoader = elementLanguageModuleLoader;
} }
/** /**
* Returns the module loader which created the exception. * Returns the module loader which created the exception.
*
* @return Returns the module loader. * @return Returns the module loader.
*/ */
public X4OLanguageModuleLoader getElementProvider() { public X4OLanguageModuleLoader getElementProvider() {

View file

@ -30,10 +30,12 @@ package org.x4o.xml.lang;
*/ */
public enum X4OLanguageModuleLoaderResult { public enum X4OLanguageModuleLoaderResult {
//@formatter:off
LOAD_MODULE_RESOURCE, LOAD_MODULE_RESOURCE,
LOAD_FROM_RESOURCE, LOAD_FROM_RESOURCE,
LOAD_VERSION, LOAD_VERSION,
LOAD_CLASS, LOAD_CLASS,
LOAD_TIME, LOAD_TIME,
LOAD_DATE; LOAD_DATE;
//@formatter:on
} }

View file

@ -22,8 +22,6 @@
*/ */
package org.x4o.xml.lang; package org.x4o.xml.lang;
/** /**
* ElementLanguageModuleLoaderSibling provides sibling language loading support. * ElementLanguageModuleLoaderSibling provides sibling language loading support.
* *
@ -35,9 +33,10 @@ public interface X4OLanguageModuleLoaderSibling extends X4OLanguageModuleLoader
/** /**
* Loads in the sibling language. * Loads in the sibling language.
* @param session The session we run in. *
* @param session The session we run in.
* @param language The local Language to load for. * @param language The local Language to load for.
* @param loader The loader to use to load the x4o languages. * @param loader The loader to use to load the x4o languages.
* @throws X4OLanguageLoaderException Gets thrown when there is an error loading the sibling language. * @throws X4OLanguageLoaderException Gets thrown when there is an error loading the sibling language.
*/ */
void loadLanguageSibling(X4OLanguageSession session, X4OLanguageLocal language, X4OLanguageLoader loader) throws X4OLanguageLoaderException; void loadLanguageSibling(X4OLanguageSession session, X4OLanguageLocal language, X4OLanguageLoader loader) throws X4OLanguageLoaderException;

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang; package org.x4o.xml.lang;
import org.x4o.xml.element.ElementBindingHandler; import org.x4o.xml.element.ElementBindingHandler;
import org.x4o.xml.element.ElementConfiguratorGlobal; import org.x4o.xml.element.ElementConfiguratorGlobal;
@ -34,7 +34,7 @@ import org.x4o.xml.element.ElementNamespace;
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Mar 7, 2014 * @version 1.0 Mar 7, 2014
*/ */
public interface X4OLanguageModuleLocal extends X4OLanguageModule,ElementMetaBase { public interface X4OLanguageModuleLocal extends X4OLanguageModule, ElementMetaBase {
/** /**
* @param providerName the providerName to set. * @param providerName the providerName to set.
@ -48,32 +48,37 @@ public interface X4OLanguageModuleLocal extends X4OLanguageModule,ElementMetaBas
/** /**
* Adds an ElementBindingHanlder. * Adds an ElementBindingHanlder.
* @param elementBindingHandler The ElementBindingHandler to add. *
* @param elementBindingHandler The ElementBindingHandler to add.
*/ */
void addElementBindingHandler(ElementBindingHandler elementBindingHandler); void addElementBindingHandler(ElementBindingHandler elementBindingHandler);
/** /**
* Adds an ElementConfiguratorGlobal. * Adds an ElementConfiguratorGlobal.
* @param elementConfigurator The ElementConfigurtor to add. *
* @param elementConfigurator The ElementConfigurtor to add.
*/ */
void addElementConfiguratorGlobal(ElementConfiguratorGlobal elementConfigurator); void addElementConfiguratorGlobal(ElementConfiguratorGlobal elementConfigurator);
/** /**
* Adds an ElementInterface. * Adds an ElementInterface.
* @param elementInterface The elementInterface to add. *
* @param elementInterface The elementInterface to add.
*/ */
void addElementInterface(ElementInterface elementInterface); void addElementInterface(ElementInterface elementInterface);
/** /**
* Adds an namespace to this langauge module. * Adds an namespace to this langauge module.
*
* @param elementNamespace Adds an ElementNamespace to this langauge module. * @param elementNamespace Adds an ElementNamespace to this langauge module.
*/ */
void addElementNamespace(ElementNamespace elementNamespace); void addElementNamespace(ElementNamespace elementNamespace);
/** /**
* Sets module loader meta result info. * Sets module loader meta result info.
* @param key The key of the info. *
* @param value The value of the info. * @param key The key of the info.
* @param value The value of the info.
*/ */
void putLoaderResult(X4OLanguageModuleLoaderResult key,String value); void putLoaderResult(X4OLanguageModuleLoaderResult key, String value);
} }

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang; package org.x4o.xml.lang;
import java.util.List; import java.util.List;
@ -43,80 +43,86 @@ import org.x4o.xml.lang.phase.X4OPhase;
public interface X4OLanguageSession extends AutoCloseable { public interface X4OLanguageSession extends AutoCloseable {
/** /**
* @return Returns the language from which this session in created. * @return Returns the language from which this session in created.
*/ */
X4OLanguage getLanguage(); X4OLanguage getLanguage();
/** /**
* Gets the EL Context. * Gets the EL Context.
* @return Returns the ELContext. *
* @return Returns the ELContext.
*/ */
ELContext getExpressionLanguageContext(); ELContext getExpressionLanguageContext();
/** /**
* Gets the ExpressionFactory. * Gets the ExpressionFactory.
* @return Returns the ExpressionFactory. *
* @return Returns the ExpressionFactory.
*/ */
ExpressionFactory getExpressionLanguageFactory(); ExpressionFactory getExpressionLanguageFactory();
/** /**
* @return Returns the ElementAttributeValueParser. * @return Returns the ElementAttributeValueParser.
*/ */
ElementAttributeValueParser getElementAttributeValueParser(); ElementAttributeValueParser getElementAttributeValueParser();
/** /**
* @return Returns the ElementObjectPropertyValue. * @return Returns the ElementObjectPropertyValue.
*/ */
ElementObjectPropertyValue getElementObjectPropertyValue(); ElementObjectPropertyValue getElementObjectPropertyValue();
/** /**
* Marks an (new) Element as dirty and run the phases from this start phase. * Marks an (new) Element as dirty and run the phases from this start phase.
* *
* @param element The Element which needs the magic. * @param element The Element which needs the magic.
*/ */
void addDirtyElement(Element element); void addDirtyElement(Element element);
/** /**
* Get all Dirty Elements. * Get all Dirty Elements.
* @return Returns List with dirty elements. *
* @return Returns List with dirty elements.
*/ */
List<Element> getDirtyElements(); List<Element> getDirtyElements();
/** /**
* Returns the root Element which starts the xml tree. * Returns the root Element which starts the xml tree.
* @return Returns the root element of the document instance we parse. *
* @return Returns the root element of the document instance we parse.
*/ */
Element getRootElement(); Element getRootElement();
/** /**
* Sets the root element. * Sets the root element.
* @param element The root element to set. *
* @param element The root element to set.
*/ */
void setRootElement(Element element); void setRootElement(Element element);
/** /**
* @return Returns null or an X4ODebugWriter to write parsing steps and debug data to. * @return Returns null or an X4ODebugWriter to write parsing steps and debug data to.
*/ */
X4ODebugWriter getX4ODebugWriter(); X4ODebugWriter getX4ODebugWriter();
/** /**
* @return Returns true if this config has a debug writer. * @return Returns true if this config has a debug writer.
*/ */
boolean hasX4ODebugWriter(); boolean hasX4ODebugWriter();
/** /**
* Returns the current X4OPhase of the parser. * Returns the current X4OPhase of the parser.
* @return Returns the current phase. *
* @return Returns the current phase.
*/ */
X4OPhase getPhaseCurrent(); X4OPhase getPhaseCurrent();
/** /**
* @return Returns the phase this session will stop processing. * @return Returns the phase this session will stop processing.
*/ */
String getPhaseStop(); String getPhaseStop();
/** /**
* @return Returns a list of phases we skip while processing. * @return Returns a list of phases we skip while processing.
*/ */
List<String> getPhaseSkip(); List<String> getPhaseSkip();

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang; package org.x4o.xml.lang;
import java.util.List; import java.util.List;
@ -42,8 +42,8 @@ import org.x4o.xml.lang.phase.X4OPhaseListener;
public interface X4OLanguageSessionLocal extends X4OLanguageSession { public interface X4OLanguageSessionLocal extends X4OLanguageSession {
/** /**
* Returns list of phase listeners which where added to it. * Returns list of phase listeners which where added to it. TODO: bad api here
* TODO: bad api here *
* @param phaseId The phaseId of for the listeners. * @param phaseId The phaseId of for the listeners.
* @return All X4OPhaseListeners. * @return All X4OPhaseListeners.
*/ */
@ -51,13 +51,15 @@ public interface X4OLanguageSessionLocal extends X4OLanguageSession {
/** /**
* Sets the EL Context. * Sets the EL Context.
* @param context The ELContext to set. *
* @param context The ELContext to set.
*/ */
void setExpressionLanguageContext(ELContext context); void setExpressionLanguageContext(ELContext context);
/** /**
* Sets the ExpressionFactory. * Sets the ExpressionFactory.
* @param expressionFactory The ExpressionFactory to set. *
* @param expressionFactory The ExpressionFactory to set.
*/ */
void setExpressionLanguageFactory(ExpressionFactory expressionFactory); void setExpressionLanguageFactory(ExpressionFactory expressionFactory);
@ -67,18 +69,19 @@ public interface X4OLanguageSessionLocal extends X4OLanguageSession {
void setElementAttributeValueParser(ElementAttributeValueParser elementAttributeValueParser); void setElementAttributeValueParser(ElementAttributeValueParser elementAttributeValueParser);
/** /**
* @param elementObjectPropertyValue The elementObjectPropertyValue to set. * @param elementObjectPropertyValue The elementObjectPropertyValue to set.
*/ */
void setElementObjectPropertyValue(ElementObjectPropertyValue elementObjectPropertyValue); void setElementObjectPropertyValue(ElementObjectPropertyValue elementObjectPropertyValue);
/** /**
* @param debugWriter The debug writer to set * @param debugWriter The debug writer to set
*/ */
void setX4ODebugWriter(X4ODebugWriter debugWriter); void setX4ODebugWriter(X4ODebugWriter debugWriter);
/** /**
* Sets the phase of the context. * Sets the phase of the context.
* @param phase The current phase to set. *
* @param phase The current phase to set.
*/ */
void setPhaseCurrent(X4OPhase phase); void setPhaseCurrent(X4OPhase phase);

View file

@ -35,9 +35,9 @@ public interface X4OLanguageVersionFilter {
/** /**
* Finds the version to load or returns null if no match is found. * Finds the version to load or returns null if no match is found.
* *
* @param languageVersion The languageVersion to requested. * @param languageVersion The languageVersion to requested.
* @param versions The versions provided by the module. * @param versions The versions provided by the module.
* @return The version to load. * @return The version to load.
*/ */
String filterVersion(String languageVersion,List<String> versions); String filterVersion(String languageVersion, List<String> versions);
} }

View file

@ -30,7 +30,6 @@ import org.x4o.xml.element.AbstractElementNamespaceAttribute;
import org.x4o.xml.element.Element; import org.x4o.xml.element.Element;
import org.x4o.xml.element.ElementConfiguratorException; import org.x4o.xml.element.ElementConfiguratorException;
/** /**
* Stores an ElementObject into the EL context. * Stores an ElementObject into the EL context.
* *
@ -44,17 +43,23 @@ public class ELIDAttributeHandler extends AbstractElementNamespaceAttribute {
*/ */
public void doConfigElement(Element element) throws ElementConfiguratorException { public void doConfigElement(Element element) throws ElementConfiguratorException {
String attributeValue = element.getAttributes().get(getAttributeName()); String attributeValue = element.getAttributes().get(getAttributeName());
if(attributeValue==null) { return; } if (attributeValue == null) {
if(element.getElementObject()==null) { return;
}
if (element.getElementObject() == null) {
if (this.isConfigAction()) { if (this.isConfigAction()) {
throw new NullPointerException("Can't bind null object to el context"); throw new NullPointerException("Can't bind null object to el context");
} }
this.setConfigAction(true); this.setConfigAction(true);
return; return;
} }
if(element.getElementObject()==null) { throw new NullPointerException("Can't bind null object to el context"); } if (element.getElementObject() == null) {
ValueExpression ee = element.getLanguageSession().getExpressionLanguageFactory().createValueExpression(element.getLanguageSession().getExpressionLanguageContext(),"${"+attributeValue+"}", element.getElementObject().getClass()); throw new NullPointerException("Can't bind null object to el context");
Logger.getLogger(ELIDAttributeHandler.class.getName()).finer("Set Variable in ELContext: "+"${"+attributeValue+"}"+" object SET: "+element.getElementObject()); }
ValueExpression ee = element.getLanguageSession().getExpressionLanguageFactory().createValueExpression(
element.getLanguageSession().getExpressionLanguageContext(), "${" + attributeValue + "}", element.getElementObject().getClass());
Logger.getLogger(ELIDAttributeHandler.class.getName())
.finer("Set Variable in ELContext: " + "${" + attributeValue + "}" + " object SET: " + element.getElementObject());
ee.setValue(element.getLanguageSession().getExpressionLanguageContext(), element.getElementObject()); ee.setValue(element.getLanguageSession().getExpressionLanguageContext(), element.getElementObject());
} }
} }

View file

@ -29,7 +29,6 @@ import javax.el.ValueExpression;
import org.x4o.xml.element.AbstractElement; import org.x4o.xml.element.AbstractElement;
import org.x4o.xml.element.ElementException; import org.x4o.xml.element.ElementException;
/** /**
* An ELReferenceElement.<br> * An ELReferenceElement.<br>
* Fills the ElementObject with an object from el. * Fills the ElementObject with an object from el.
@ -42,9 +41,12 @@ public class ELReferenceElement extends AbstractElement {
@Override @Override
public void doElementRun() throws ElementException { public void doElementRun() throws ElementException {
String attributeValue = getAttributes().get("el.ref"); String attributeValue = getAttributes().get("el.ref");
if("".equals(attributeValue) | attributeValue==null) { throw new ElementException("Set the el.ref attribute"); } if ("".equals(attributeValue) | attributeValue == null) {
ValueExpression ee = getLanguageSession().getExpressionLanguageFactory().createValueExpression(getLanguageSession().getExpressionLanguageContext(),"${"+attributeValue+"}",Object.class); throw new ElementException("Set the el.ref attribute");
Logger.getLogger(ELReferenceElement.class.getName()).finer("Get Variable in ELContext: ${"+attributeValue+"}"); }
ValueExpression ee = getLanguageSession().getExpressionLanguageFactory().createValueExpression(getLanguageSession().getExpressionLanguageContext(),
"${" + attributeValue + "}", Object.class);
Logger.getLogger(ELReferenceElement.class.getName()).finer("Get Variable in ELContext: ${" + attributeValue + "}");
setElementObject(ee.getValue(getLanguageSession().getExpressionLanguageContext())); setElementObject(ee.getValue(getLanguageSession().getExpressionLanguageContext()));
} }
} }

View file

@ -51,7 +51,8 @@ public class MetaLanguageSiblingLoader implements X4OLanguageModuleLoaderSibling
public static final String META_LANGUAGE_DESCRIPTION = "X4O Meta XML Language Module."; public static final String META_LANGUAGE_DESCRIPTION = "X4O Meta XML Language Module.";
@Override @Override
public void loadLanguageModule(X4OLanguageSession session, X4OLanguageLocal language, X4OLanguageModuleLocal module) throws X4OLanguageModuleLoaderException { public void loadLanguageModule(X4OLanguageSession session, X4OLanguageLocal language, X4OLanguageModuleLocal module)
throws X4OLanguageModuleLoaderException {
module.setId(META_LANGUAGE); module.setId(META_LANGUAGE);
module.setProviderHost(META_LANGUAGE_HOST); module.setProviderHost(META_LANGUAGE_HOST);
module.setProviderName(MetaLanguageSiblingLoader.class.getSimpleName()); module.setProviderName(MetaLanguageSiblingLoader.class.getSimpleName());

View file

@ -28,7 +28,6 @@ import java.lang.reflect.Method;
import org.x4o.xml.element.AbstractElement; import org.x4o.xml.element.AbstractElement;
import org.x4o.xml.element.ElementException; import org.x4o.xml.element.ElementException;
/** /**
* MethodElement invokes an method on a element object. * MethodElement invokes an method on a element object.
* *
@ -44,17 +43,17 @@ public class MethodElement extends AbstractElement {
*/ */
@Override @Override
public void doElementRun() throws ElementException { public void doElementRun() throws ElementException {
if (getParent()==null) { if (getParent() == null) {
throw new IllegalStateException("need to have parent."); throw new IllegalStateException("need to have parent.");
} }
Object parent = getParent().getElementObject(); Object parent = getParent().getElementObject();
if (parent==null) { if (parent == null) {
throw new IllegalStateException("need to have parent ElementObject."); throw new IllegalStateException("need to have parent ElementObject.");
} }
String methodString = getAttributes().get("method"); String methodString = getAttributes().get("method");
Method[] ms = parent.getClass().getMethods(); Method[] ms = parent.getClass().getMethods();
try { try {
for (Method m:ms) { for (Method m : ms) {
if (methodString.equalsIgnoreCase(m.getName())) { if (methodString.equalsIgnoreCase(m.getName())) {
m.invoke(parent); m.invoke(parent);
return; return;
@ -67,6 +66,6 @@ public class MethodElement extends AbstractElement {
} catch (InvocationTargetException e) { } catch (InvocationTargetException e) {
throw new ElementException(e); throw new ElementException(e);
} }
throw new ElementException("could not find method on parent element object: "+methodString+" on; "+parent); throw new ElementException("could not find method on parent element object: " + methodString + " on; " + parent);
} }
} }

View file

@ -35,7 +35,7 @@ public class ParentObjectElement extends AbstractElement {
@Override @Override
public Object getElementObject() { public Object getElementObject() {
if (getParent()==null) { if (getParent() == null) {
return null; return null;
} }
return getParent().getElementObject(); return getParent().getElementObject();
@ -43,7 +43,7 @@ public class ParentObjectElement extends AbstractElement {
@Override @Override
public void setElementObject(Object object) { public void setElementObject(Object object) {
if (getParent()==null) { if (getParent() == null) {
return; return;
} }
getParent().setElementObject(object); getParent().setElementObject(object);

View file

@ -30,7 +30,6 @@ import org.x4o.xml.eld.lang.BeanElement;
import org.x4o.xml.element.AbstractElement; import org.x4o.xml.element.AbstractElement;
import org.x4o.xml.element.ElementException; import org.x4o.xml.element.ElementException;
/** /**
* An PropertyElement.<br> * An PropertyElement.<br>
* *
@ -47,7 +46,7 @@ public class PropertyElement extends AbstractElement {
@SuppressWarnings({ "unchecked", "rawtypes" }) @SuppressWarnings({ "unchecked", "rawtypes" })
public void doElementRun() throws ElementException { public void doElementRun() throws ElementException {
if (getParent().getElementObject()==null) { if (getParent().getElementObject() == null) {
throw new IllegalStateException("need to have parent ElementObject"); throw new IllegalStateException("need to have parent ElementObject");
} }
@ -55,46 +54,46 @@ public class PropertyElement extends AbstractElement {
String valueString = getAttributes().get("value"); String valueString = getAttributes().get("value");
Object value = valueString; Object value = valueString;
if (name==null) { if (name == null) {
name = getAttributes().get("name"); name = getAttributes().get("name");
} }
if (name==null) { if (name == null) {
name = getAttributes().get("field"); name = getAttributes().get("field");
} }
// convert value object // convert value object
try { try {
value = getLanguageSession().getElementAttributeValueParser().getParameterValue(name,valueString,this); value = getLanguageSession().getElementAttributeValueParser().getParameterValue(name, valueString, this);
} catch (ObjectConverterException ece) { } catch (ObjectConverterException ece) {
throw new ElementException(ece); throw new ElementException(ece);
} }
if (getParent() instanceof BeanElement) { if (getParent() instanceof BeanElement) {
BeanElement bean = (BeanElement)getParent(); BeanElement bean = (BeanElement) getParent();
bean.addConstuctorArgument(value); bean.addConstuctorArgument(value);
return; return;
} }
if (name==null) { if (name == null) {
throw new IllegalStateException("Can't set properties without key."); throw new IllegalStateException("Can't set properties without key.");
} }
// check map interface // check map interface
if (getParent().getElementObject() instanceof Map) { if (getParent().getElementObject() instanceof Map) {
((Map)getParent().getElementObject()).put(name,value); ((Map) getParent().getElementObject()).put(name, value);
return; return;
} }
// check for setProperty(String,Object) method // check for setProperty(String,Object) method
Method[] methodes = getParent().getElementObject().getClass().getMethods(); Method[] methodes = getParent().getElementObject().getClass().getMethods();
for (int i=0;i<methodes.length;i++) { for (int i = 0; i < methodes.length; i++) {
Method method = methodes[i]; Method method = methodes[i];
if (method.getName().toLowerCase().equals("setproperty")) { if (method.getName().toLowerCase().equals("setproperty")) {
try { try {
method.invoke(getParent().getElementObject(),new Object[]{name,value}); method.invoke(getParent().getElementObject(), new Object[] { name, value });
return; return;
} catch (Exception e) { } catch (Exception e) {
throw new ElementException("Could not invoke setproperty of "+method.getName()+" on: "+getParent().getElementObject(),e); throw new ElementException("Could not invoke setproperty of " + method.getName() + " on: " + getParent().getElementObject(), e);
} }
} }
} }
@ -104,7 +103,7 @@ public class PropertyElement extends AbstractElement {
getLanguageSession().getElementObjectPropertyValue().setProperty(getParent().getElementObject(), name, value); getLanguageSession().getElementObjectPropertyValue().setProperty(getParent().getElementObject(), name, value);
return; return;
} catch (Exception e) { } catch (Exception e) {
throw new ElementException("Could not set property on parent element object: "+name,e); throw new ElementException("Could not set property on parent element object: " + name, e);
} }
} }
} }

View file

@ -20,13 +20,12 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang.phase; package org.x4o.xml.lang.phase;
import org.x4o.xml.element.Element; import org.x4o.xml.element.Element;
import org.x4o.xml.element.ElementException; import org.x4o.xml.element.ElementException;
import org.x4o.xml.lang.X4OLanguageSession; import org.x4o.xml.lang.X4OLanguageSession;
/** /**
* AbstractX4OPhaseHandler a base class for creating a phase handler. * AbstractX4OPhaseHandler a base class for creating a phase handler.
* *
@ -50,6 +49,7 @@ public abstract class AbstractX4OPhase implements X4OPhase {
/** /**
* If returns true then this handler will run on all elements. * If returns true then this handler will run on all elements.
*
* @return defaults to true. * @return defaults to true.
*/ */
public boolean isElementPhase() { public boolean isElementPhase() {
@ -58,6 +58,7 @@ public abstract class AbstractX4OPhase implements X4OPhase {
/** /**
* Abstract method. * Abstract method.
*
* @param element The element to run phase for. * @param element The element to run phase for.
* @throws X4OPhaseException when phase has error. * @throws X4OPhaseException when phase has error.
*/ */
@ -65,6 +66,7 @@ public abstract class AbstractX4OPhase implements X4OPhase {
/** /**
* Empty method. * Empty method.
*
* @param elementLanguage The language to run phase for. * @param elementLanguage The language to run phase for.
* @throws X4OPhaseException when phase has error. * @throws X4OPhaseException when phase has error.
*/ */
@ -76,7 +78,7 @@ public abstract class AbstractX4OPhase implements X4OPhase {
return; return;
} }
try { try {
languageSession.getX4ODebugWriter().debugPhaseMessage(message,this.getClass()); languageSession.getX4ODebugWriter().debugPhaseMessage(message, this.getClass());
} catch (ElementException ee) { } catch (ElementException ee) {
throw new X4OPhaseException(this, ee); throw new X4OPhaseException(this, ee);
} }

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang.phase; package org.x4o.xml.lang.phase;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -32,8 +32,7 @@ import org.x4o.xml.lang.X4OLanguageSession;
import org.x4o.xml.lang.X4OLanguageSessionLocal; import org.x4o.xml.lang.X4OLanguageSessionLocal;
/** /**
* X4OPhaseManager stores the X4OPhaseHandler and puts them in the right order. * X4OPhaseManager stores the X4OPhaseHandler and puts them in the right order. And will execute the phases when runPhases is called.
* And will execute the phases when runPhases is called.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Jan 6, 2008 * @version 1.0 Jan 6, 2008
@ -49,8 +48,8 @@ public class DefaultX4OPhaseManager implements X4OPhaseManagerLocal {
public DefaultX4OPhaseManager() { public DefaultX4OPhaseManager() {
x4oPhases = new ArrayList<X4OPhase>(25); x4oPhases = new ArrayList<X4OPhase>(25);
} }
/* /*
//@formatter:off
PHASE_ORDER = { *startupX4OPhase, PHASE_ORDER = { *startupX4OPhase,
*createLanguagePhase, *createLanguagePhase,
*createLanguageSiblingsPhase, *createLanguageSiblingsPhase,
@ -64,7 +63,7 @@ PHASE_ORDER = { *startupX4OPhase,
*releasePhase *releasePhase
}; };
* = runOnce * = runOnce
//@formatter:on
*/ */
public X4OPhase getPhase(String phaseName) { public X4OPhase getPhase(String phaseName) {
@ -86,22 +85,24 @@ PHASE_ORDER = { *startupX4OPhase,
/** /**
* Adds an X4OPhaseHandler. * Adds an X4OPhaseHandler.
* @param phase The X4OPhaseHandler to add. *
* @param phase The X4OPhaseHandler to add.
*/ */
public void addX4OPhase(X4OPhase phase) { public void addX4OPhase(X4OPhase phase) {
if (phase==null) { if (phase == null) {
throw new NullPointerException("Can't add null phase handler."); throw new NullPointerException("Can't add null phase handler.");
} }
// context is created in first phase. // context is created in first phase.
//if (X4OPhase.FIRST_PHASE.equals(elementLanguage.getCurrentX4OPhase())==false) { // if (X4OPhase.FIRST_PHASE.equals(elementLanguage.getCurrentX4OPhase())==false) {
// throw new IllegalStateException("Can't add new phases after first phase is completed."); // throw new IllegalStateException("Can't add new phases after first phase is completed.");
//} // }
x4oPhases.add(phase); x4oPhases.add(phase);
} }
/** /**
* Returns all the X4OPhaseHandlers. * Returns all the X4OPhaseHandlers.
* @return Returns all X4OPhaseHandlers. *
* @return Returns all X4OPhaseHandlers.
*/ */
public List<X4OPhase> getAllPhases() { public List<X4OPhase> getAllPhases() {
return new ArrayList<X4OPhase>(x4oPhases); return new ArrayList<X4OPhase>(x4oPhases);
@ -109,7 +110,8 @@ PHASE_ORDER = { *startupX4OPhase,
/** /**
* Returns all the X4OPhaseHandlers in ordered list. * Returns all the X4OPhaseHandlers in ordered list.
* @return Returns all X4OPhaseHandler is order. *
* @return Returns all X4OPhaseHandler is order.
*/ */
public List<X4OPhase> getOrderedPhases(X4OPhaseType type) { public List<X4OPhase> getOrderedPhases(X4OPhaseType type) {
List<X4OPhase> result = new ArrayList<X4OPhase>(x4oPhases.size()); List<X4OPhase> result = new ArrayList<X4OPhase>(x4oPhases.size());
@ -124,6 +126,7 @@ PHASE_ORDER = { *startupX4OPhase,
/** /**
* Runs all the phases in the right order. * Runs all the phases in the right order.
*
* @throws X4OPhaseException When a running handlers throws one. * @throws X4OPhaseException When a running handlers throws one.
*/ */
public void runPhases(X4OLanguageSession languageSession, X4OPhaseType type) throws X4OPhaseException { public void runPhases(X4OLanguageSession languageSession, X4OPhaseType type) throws X4OPhaseException {
@ -161,7 +164,7 @@ PHASE_ORDER = { *startupX4OPhase,
// do the run interface // do the run interface
phase.runPhase(languageSession); phase.runPhase(languageSession);
// run the element phase if possible // run the element phase if possible
executePhaseRoot(languageSession, phase); executePhaseRoot(languageSession, phase);
} finally { } finally {
// run the listeners again // run the listeners again
@ -178,11 +181,12 @@ PHASE_ORDER = { *startupX4OPhase,
/** /**
* Runs phase on single element. * Runs phase on single element.
* @param e The Element to process. *
* @param p The phase to run. * @param e The Element to process.
* @param p The phase to run.
* @throws X4OPhaseException When a running handlers throws one. * @throws X4OPhaseException When a running handlers throws one.
*/ */
public void runPhasesForElement(Element e,X4OPhaseType type,X4OPhase p) throws X4OPhaseException { public void runPhasesForElement(Element e, X4OPhaseType type, X4OPhase p) throws X4OPhaseException {
X4OLanguageSession languageSession = e.getLanguageSession(); X4OLanguageSession languageSession = e.getLanguageSession();
List<String> phaseSkip = languageSession.getPhaseSkip(); List<String> phaseSkip = languageSession.getPhaseSkip();
String phaseStop = languageSession.getPhaseStop(); String phaseStop = languageSession.getPhaseStop();
@ -198,12 +202,12 @@ PHASE_ORDER = { *startupX4OPhase,
} }
// set phase // set phase
((X4OLanguageSessionLocal)languageSession).setPhaseCurrent(phase); ((X4OLanguageSessionLocal) languageSession).setPhaseCurrent(phase);
// do the run interface // do the run interface
phase.runPhase(languageSession); phase.runPhase(languageSession);
// run the element phase if possible // run the element phase if possible
executePhaseRoot(languageSession, phase); executePhaseRoot(languageSession, phase);
if (phaseStop != null && phaseStop.equals(phase.getId())) { if (phaseStop != null && phaseStop.equals(phase.getId())) {
@ -214,6 +218,7 @@ PHASE_ORDER = { *startupX4OPhase,
/** /**
* Run release phase manual if auto release is disabled by config. * Run release phase manual if auto release is disabled by config.
*
* @throws X4OPhaseException When a running handlers throws one. * @throws X4OPhaseException When a running handlers throws one.
*/ */
public void doReleasePhaseManual(X4OLanguageSession languageSession) throws X4OPhaseException { public void doReleasePhaseManual(X4OLanguageSession languageSession) throws X4OPhaseException {
@ -227,10 +232,10 @@ PHASE_ORDER = { *startupX4OPhase,
} }
if (releaseRequested == null) { if (releaseRequested == null) {
return; // No manual release requested return; // No manual release requested
//throw new IllegalStateException("No manual release requested."); // throw new IllegalStateException("No manual release requested.");
} }
if (languageSession.getRootElement() == null) { if (languageSession.getRootElement() == null) {
return; // no root element , empty xml document ? return; // no root element , empty xml document ?
} }
if (languageSession.getRootElement().getElementClass() == null) { if (languageSession.getRootElement().getElementClass() == null) {
throw new IllegalStateException("Release phase has already been runned."); throw new IllegalStateException("Release phase has already been runned.");
@ -248,12 +253,12 @@ PHASE_ORDER = { *startupX4OPhase,
} }
// set phase // set phase
((X4OLanguageSessionLocal)languageSession).setPhaseCurrent(h); ((X4OLanguageSessionLocal) languageSession).setPhaseCurrent(h);
// do the run interface // do the run interface
h.runPhase(languageSession); h.runPhase(languageSession);
// run the element phase if possible // run the element phase if possible
executePhaseRoot(languageSession, h); executePhaseRoot(languageSession, h);
} }
@ -273,69 +278,35 @@ PHASE_ORDER = { *startupX4OPhase,
} }
} }
return 0; return 0;
/*
if (p1==p2) {
return 0;
}
if (p1==X4OPhase.debugPhase) {
return 0;
}
if (p2==X4OPhase.debugPhase) {
return 0;
}
int i1 = phaseOrder(p1);
int i2 = phaseOrder(p2);
if (i1>i2) {
return 1;
}
if (i1<i2) {
return -1;
}
return 0;
*/
} }
/*
private int phaseOrder(X4OPhase check) {
int result=0;
for (X4OPhase p:X4OPhase.PHASE_ORDER) {
if (p==check) {
return result;
}
result++;
}
return -1;
}
*/
} }
/** /**
* Execute element phase handler on full tree. * Execute element phase handler on full tree.
* @param phase The phase to run. *
* @param phase The phase to run.
* @throws X4OPhaseException When a running handlers throws one. * @throws X4OPhaseException When a running handlers throws one.
*/ */
private void executePhaseRoot(X4OLanguageSession elementLanguage, X4OPhase phase) throws X4OPhaseException { private void executePhaseRoot(X4OLanguageSession elementLanguage, X4OPhase phase) throws X4OPhaseException {
if (elementLanguage.getRootElement() == null) { if (elementLanguage.getRootElement() == null) {
return; return;
} }
executePhaseTree(elementLanguage.getRootElement(),phase); executePhaseTree(elementLanguage.getRootElement(), phase);
} }
/** /**
* todo: rewrite to itterator for big deep trees. * todo: rewrite to itterator for big deep trees.
* *
* @param element The element in the tree. * @param element The element in the tree.
* @param phase The phase to run. * @param phase The phase to run.
* @throws X4OPhaseException * @throws X4OPhaseException
*/ */
private void executePhaseTree(Element element, X4OPhase phase) throws X4OPhaseException { private void executePhaseTree(Element element, X4OPhase phase) throws X4OPhaseException {
if (element.getElementClass() != null && element.getElementClass().getSkipPhases().contains(phase.getId()) == false) { if (element.getElementClass() != null && element.getElementClass().getSkipPhases().contains(phase.getId()) == false) {
phase.runElementPhase(element); phase.runElementPhase(element);
} }
for (Element e:element.getChilderen()) { for (Element e : element.getChilderen()) {
executePhaseTree(e,phase); executePhaseTree(e, phase);
} }
} }
} }

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang.phase; package org.x4o.xml.lang.phase;
import org.x4o.xml.element.Element; import org.x4o.xml.element.Element;
import org.x4o.xml.lang.X4OLanguageSession; import org.x4o.xml.lang.X4OLanguageSession;
@ -37,7 +37,8 @@ public interface X4OPhase {
/** /**
* Returns the X4OPhase for which this handler was written. * Returns the X4OPhase for which this handler was written.
* @return Returns the phase for which this handler works. *
* @return Returns the phase for which this handler works.
*/ */
String getId(); String getId();
@ -45,29 +46,32 @@ public interface X4OPhase {
/** /**
* Returns a flag indicating that this phase is runnable multiple times. * Returns a flag indicating that this phase is runnable multiple times.
* @return True if phase is restricted to run once. *
* @return True if phase is restricted to run once.
*/ */
boolean isRunOnce(); boolean isRunOnce();
/** /**
* Runs this phase. * Runs this phase.
* @param elementLanguage The elementLanguage running this phase. *
* @throws X4OPhaseException When error has happend. * @param elementLanguage The elementLanguage running this phase.
* @throws X4OPhaseException When error has happend.
*/ */
void runPhase(X4OLanguageSession elementLanguage) throws X4OPhaseException; void runPhase(X4OLanguageSession elementLanguage) throws X4OPhaseException;
/** /**
* runPhase is called but should do nothig. * runPhase is called but should do nothig. When elementPhase is enables x4o tries to merge all element phases so we don't need to loop element tree to
* When elementPhase is enables x4o tries to merge all element phases so * often.
* we don't need to loop element tree to often. *
* @return True if to run in config. * @return True if to run in config.
*/ */
boolean isElementPhase(); boolean isElementPhase();
/** /**
* Run this phase for this Element. * Run this phase for this Element.
* @param element The element to run this phase for. *
* @throws X4OPhaseException Is thrown when error has happen. * @param element The element to run this phase for.
* @throws X4OPhaseException Is thrown when error has happen.
*/ */
void runElementPhase(Element element) throws X4OPhaseException; void runElementPhase(Element element) throws X4OPhaseException;
} }

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang.phase; package org.x4o.xml.lang.phase;
/** /**
* Is throw when there is en Exception within an Element. * Is throw when there is en Exception within an Element.
@ -37,38 +37,42 @@ public class X4OPhaseException extends Exception {
/** /**
* Creates an ElementException from a parent exception. * Creates an ElementException from a parent exception.
* @param exceptionPhase The handler which throwed. *
* @param e The Exception. * @param exceptionPhase The handler which throwed.
* @param e The Exception.
*/ */
public X4OPhaseException(X4OPhase exceptionPhase,Exception e) { public X4OPhaseException(X4OPhase exceptionPhase, Exception e) {
super(e); super(e);
this.exceptionPhase=exceptionPhase; this.exceptionPhase = exceptionPhase;
} }
/** /**
* Creates an ElementException from a parent exception. * Creates an ElementException from a parent exception.
* @param exceptionPhase The handler which throwed. *
* @param message The message of the error. * @param exceptionPhase The handler which throwed.
* @param message The message of the error.
*/ */
public X4OPhaseException(X4OPhase exceptionPhase,String message) { public X4OPhaseException(X4OPhase exceptionPhase, String message) {
super(message); super(message);
this.exceptionPhase=exceptionPhase; this.exceptionPhase = exceptionPhase;
} }
/** /**
* Creates an ElementException from a parent exception. * Creates an ElementException from a parent exception.
* @param exceptionPhase The handler which throwed. *
* @param message The message of the error. * @param exceptionPhase The handler which throwed.
* @param e The Exception. * @param message The message of the error.
* @param e The Exception.
*/ */
public X4OPhaseException(X4OPhase exceptionPhase,String message,Exception e) { public X4OPhaseException(X4OPhase exceptionPhase, String message, Exception e) {
super(message,e); super(message, e);
this.exceptionPhase=exceptionPhase; this.exceptionPhase = exceptionPhase;
} }
/** /**
* Returns the X4OPhaseHandler which created this Exception. * Returns the X4OPhaseHandler which created this Exception.
* @return An X4OPhaseHandler *
* @return An X4OPhaseHandler
*/ */
public X4OPhase getX4OPhaseHandler() { public X4OPhase getX4OPhaseHandler() {
return exceptionPhase; return exceptionPhase;

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang.phase; package org.x4o.xml.lang.phase;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -65,53 +65,63 @@ public class X4OPhaseLanguageInit {
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.INIT; return X4OPhaseType.INIT;
} }
public String getId() { public String getId() {
return INIT_START; return INIT_START;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[]{}; return new String[] {};
} }
public boolean isElementPhase() { public boolean isElementPhase() {
return false; return false;
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
} }
public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException { public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException {
logger.finest("Run init start phase"); logger.finest("Run init start phase");
} }
}; };
/** /**
* Loads all the modules a language. * Loads all the modules a language. Then creates the ElementProviders
* Then creates the ElementProviders
*/ */
class X4OPhaseInitLanguage extends AbstractX4OPhase { class X4OPhaseInitLanguage extends AbstractX4OPhase {
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.INIT; return X4OPhaseType.INIT;
} }
public String getId() { public String getId() {
return INIT_LANG; return INIT_LANG;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[]{INIT_START}; return new String[] { INIT_START };
} }
public boolean isElementPhase() { public boolean isElementPhase() {
return false; return false;
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
} }
public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException { public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException {
try { try {
debugPhaseMessage(languageSession, "Load main language: " + languageSession.getLanguage().getLanguageName()); debugPhaseMessage(languageSession, "Load main language: " + languageSession.getLanguage().getLanguageName());
X4OLanguageLoader loader = X4OLanguageClassLoader.newInstance(X4OLanguageLoader.class, languageSession.getLanguage().getLanguageConfiguration().getDefaultLanguageLoader()); X4OLanguageLoader loader = X4OLanguageClassLoader.newInstance(X4OLanguageLoader.class,
X4OLanguageLocal language = (X4OLanguageLocal)languageSession.getLanguage(); languageSession.getLanguage().getLanguageConfiguration().getDefaultLanguageLoader());
loader.loadLanguage(languageSession, language, language.getLanguageName(), language.getLanguageVersion()); X4OLanguageLocal language = (X4OLanguageLocal) languageSession.getLanguage();
loader.loadLanguage(languageSession, language, language.getLanguageName(), language.getLanguageVersion());
if (languageSession.hasX4ODebugWriter()) { if (languageSession.hasX4ODebugWriter()) {
languageSession.getX4ODebugWriter().debugElementLanguageModules(languageSession); languageSession.getX4ODebugWriter().debugElementLanguageModules(languageSession);
} }
} catch (Exception e) { } catch (Exception e) {
throw new X4OPhaseException(this,e); throw new X4OPhaseException(this, e);
} }
} }
}; };
@ -121,30 +131,38 @@ public class X4OPhaseLanguageInit {
*/ */
public class X4OPhaseInitLanguageSiblings extends AbstractX4OPhase { public class X4OPhaseInitLanguageSiblings extends AbstractX4OPhase {
private List<X4OLanguageModuleLoaderSibling> siblingLoaders = new ArrayList<X4OLanguageModuleLoaderSibling>(2); private List<X4OLanguageModuleLoaderSibling> siblingLoaders = new ArrayList<X4OLanguageModuleLoaderSibling>(2);
// mmmm think of better then cast // mmmm think of better then cast
public void addLanguageModuleLoaderSibling(X4OLanguageModuleLoaderSibling loader) { public void addLanguageModuleLoaderSibling(X4OLanguageModuleLoaderSibling loader) {
siblingLoaders.add(loader); siblingLoaders.add(loader);
} }
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.INIT; return X4OPhaseType.INIT;
} }
public String getId() { public String getId() {
return INIT_LANG_SIB; return INIT_LANG_SIB;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[] {INIT_LANG}; return new String[] { INIT_LANG };
} }
public boolean isElementPhase() { public boolean isElementPhase() {
return false; return false;
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
} }
public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException { public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException {
try { try {
if (siblingLoaders.isEmpty()==false) { if (siblingLoaders.isEmpty() == false) {
X4OLanguageLoader loader = X4OLanguageClassLoader.newInstance(X4OLanguageLoader.class, languageSession.getLanguage().getLanguageConfiguration().getDefaultLanguageLoader()); X4OLanguageLoader loader = X4OLanguageClassLoader.newInstance(X4OLanguageLoader.class,
X4OLanguageLocal language = (X4OLanguageLocal)languageSession.getLanguage(); languageSession.getLanguage().getLanguageConfiguration().getDefaultLanguageLoader());
for (X4OLanguageModuleLoaderSibling siblingLoader:siblingLoaders) { X4OLanguageLocal language = (X4OLanguageLocal) languageSession.getLanguage();
for (X4OLanguageModuleLoaderSibling siblingLoader : siblingLoaders) {
debugPhaseMessage(languageSession, "Loading sibling langauge loader: " + siblingLoader); debugPhaseMessage(languageSession, "Loading sibling langauge loader: " + siblingLoader);
siblingLoader.loadLanguageSibling(languageSession, language, loader); siblingLoader.loadLanguageSibling(languageSession, language, loader);
} }
@ -154,7 +172,7 @@ public class X4OPhaseLanguageInit {
siblingLoaders.clear(); siblingLoaders.clear();
} }
} catch (Exception e) { } catch (Exception e) {
throw new X4OPhaseException(this,e); throw new X4OPhaseException(this, e);
} }
} }
}; };
@ -166,17 +184,22 @@ public class X4OPhaseLanguageInit {
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.INIT; return X4OPhaseType.INIT;
} }
public String getId() { public String getId() {
return INIT_END; return INIT_END;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[]{INIT_LANG_SIB}; return new String[] { INIT_LANG_SIB };
} }
public boolean isElementPhase() { public boolean isElementPhase() {
return false; return false;
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
} }
public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException { public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException {
logger.finest("Run init end phase"); logger.finest("Run init end phase");
} }

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang.phase; package org.x4o.xml.lang.phase;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -117,26 +117,31 @@ public class X4OPhaseLanguageRead {
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_READ; return X4OPhaseType.XML_READ;
} }
public String getId() { public String getId() {
return READ_BEGIN; return READ_BEGIN;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[]{}; return new String[] {};
} }
public boolean isElementPhase() { public boolean isElementPhase() {
return false; return false;
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
// not used. // not used.
} }
public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException { public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException {
// print the properties and classes for this language/config // print the properties and classes for this language/config
if (languageSession.hasX4ODebugWriter()) { if (languageSession.hasX4ODebugWriter()) {
try { try {
//languageSession.getX4ODebugWriter().debugLanguageProperties(languageSession); // languageSession.getX4ODebugWriter().debugLanguageProperties(languageSession);
languageSession.getX4ODebugWriter().debugLanguageDefaultClasses(languageSession); languageSession.getX4ODebugWriter().debugLanguageDefaultClasses(languageSession);
} catch (ElementException e) { } catch (ElementException e) {
throw new X4OPhaseException(this,e); throw new X4OPhaseException(this, e);
} }
} }
} }
@ -147,27 +152,32 @@ public class X4OPhaseLanguageRead {
*/ */
class X4OPhaseReadConfigElement extends AbstractX4OPhase { class X4OPhaseReadConfigElement extends AbstractX4OPhase {
private X4OPhaseReadRunConfigurator runConf = null; private X4OPhaseReadRunConfigurator runConf = null;
public X4OPhaseReadConfigElement(X4OPhaseReadRunConfigurator runConf) { public X4OPhaseReadConfigElement(X4OPhaseReadRunConfigurator runConf) {
this.runConf=runConf; this.runConf = runConf;
} }
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_READ; return X4OPhaseType.XML_READ;
} }
public String getId() { public String getId() {
return READ_CONFIG_ELEMENT; return READ_CONFIG_ELEMENT;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[] {READ_BEGIN}; return new String[] { READ_BEGIN };
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
// First phase is to rename attributes, maybe move so sax phase // First phase is to rename attributes, maybe move so sax phase
for (ElementClassAttribute eca:element.getElementClass().getElementClassAttributes()) { for (ElementClassAttribute eca : element.getElementClass().getElementClassAttributes()) {
List<String> aliases = eca.getAttributeAliases(); List<String> aliases = eca.getAttributeAliases();
if (aliases.isEmpty()) { if (aliases.isEmpty()) {
continue; continue;
} }
for (String alias:aliases) { for (String alias : aliases) {
if (element.getAttributes().containsKey(alias)) { if (element.getAttributes().containsKey(alias)) {
String attributeValue = element.getAttributes().get(alias); String attributeValue = element.getAttributes().get(alias);
element.getAttributes().put(eca.getId(), attributeValue); element.getAttributes().put(eca.getId(), attributeValue);
@ -176,9 +186,9 @@ public class X4OPhaseLanguageRead {
} }
} }
logger.finest("Do ElementClass Config Configurators: "+element.getElementClass().getElementConfigurators().size()); logger.finest("Do ElementClass Config Configurators: " + element.getElementClass().getElementConfigurators().size());
for (ElementConfigurator ec:element.getElementClass().getElementConfigurators()) { for (ElementConfigurator ec : element.getElementClass().getElementConfigurators()) {
runConf.runElementConfigurator(ec,element,this); runConf.runElementConfigurator(ec, element, this);
} }
} }
}; };
@ -188,27 +198,32 @@ public class X4OPhaseLanguageRead {
*/ */
class X4OPhaseReadConfigElementInterface extends AbstractX4OPhase { class X4OPhaseReadConfigElementInterface extends AbstractX4OPhase {
private X4OPhaseReadRunConfigurator runConf = null; private X4OPhaseReadRunConfigurator runConf = null;
public X4OPhaseReadConfigElementInterface(X4OPhaseReadRunConfigurator runConf) { public X4OPhaseReadConfigElementInterface(X4OPhaseReadRunConfigurator runConf) {
this.runConf=runConf; this.runConf = runConf;
} }
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_READ; return X4OPhaseType.XML_READ;
} }
public String getId() { public String getId() {
return READ_CONFIG_ELEMENT_INTERFACE; return READ_CONFIG_ELEMENT_INTERFACE;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[] {READ_CONFIG_ELEMENT}; return new String[] { READ_CONFIG_ELEMENT };
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
if (element.getElementObject()==null) { if (element.getElementObject() == null) {
logger.finest("Null elementObject skipping, interfaces"); logger.finest("Null elementObject skipping, interfaces");
return; return;
} }
for (ElementInterface ei:element.getLanguageSession().getLanguage().findElementInterfaces(element.getElementObject())) { for (ElementInterface ei : element.getLanguageSession().getLanguage().findElementInterfaces(element.getElementObject())) {
logger.finest("Do ElementInterface Config Configurators: "+ei.getElementConfigurators().size()); logger.finest("Do ElementInterface Config Configurators: " + ei.getElementConfigurators().size());
for (ElementConfigurator ec:ei.getElementConfigurators()) { for (ElementConfigurator ec : ei.getElementConfigurators()) {
runConf.runElementConfigurator(ec,element,this); runConf.runElementConfigurator(ec, element, this);
} }
} }
} }
@ -219,23 +234,28 @@ public class X4OPhaseLanguageRead {
*/ */
class X4OPhaseReadConfigGlobalElement extends AbstractX4OPhase { class X4OPhaseReadConfigGlobalElement extends AbstractX4OPhase {
private X4OPhaseReadRunConfigurator runConf = null; private X4OPhaseReadRunConfigurator runConf = null;
public X4OPhaseReadConfigGlobalElement(X4OPhaseReadRunConfigurator runConf) { public X4OPhaseReadConfigGlobalElement(X4OPhaseReadRunConfigurator runConf) {
this.runConf=runConf; this.runConf = runConf;
} }
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_READ; return X4OPhaseType.XML_READ;
} }
public String getId() { public String getId() {
return READ_CONFIG_GLOBAL_ELEMENT; return READ_CONFIG_GLOBAL_ELEMENT;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[] {READ_CONFIG_ELEMENT,READ_CONFIG_ELEMENT_INTERFACE}; return new String[] { READ_CONFIG_ELEMENT, READ_CONFIG_ELEMENT_INTERFACE };
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
for (X4OLanguageModule mod:element.getLanguageSession().getLanguage().getLanguageModules()) { for (X4OLanguageModule mod : element.getLanguageSession().getLanguage().getLanguageModules()) {
logger.finest("Do Element Config Global Configurators: "+mod.getElementConfiguratorGlobals().size()); logger.finest("Do Element Config Global Configurators: " + mod.getElementConfiguratorGlobals().size());
for (ElementConfiguratorGlobal ec:mod.getElementConfiguratorGlobals()) { for (ElementConfiguratorGlobal ec : mod.getElementConfiguratorGlobals()) {
runConf.runElementConfigurator(ec,element,this); runConf.runElementConfigurator(ec, element, this);
} }
} }
} }
@ -247,46 +267,52 @@ public class X4OPhaseLanguageRead {
class X4OPhaseReadConfigGlobalAttribute extends AbstractX4OPhase { class X4OPhaseReadConfigGlobalAttribute extends AbstractX4OPhase {
Comparator<ElementNamespaceAttribute> elementNamespaceAttributeComparator = null; Comparator<ElementNamespaceAttribute> elementNamespaceAttributeComparator = null;
private X4OPhaseReadRunConfigurator runConf = null; private X4OPhaseReadRunConfigurator runConf = null;
public X4OPhaseReadConfigGlobalAttribute(X4OPhaseReadRunConfigurator runConf) { public X4OPhaseReadConfigGlobalAttribute(X4OPhaseReadRunConfigurator runConf) {
this.runConf=runConf; this.runConf = runConf;
} }
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_READ; return X4OPhaseType.XML_READ;
} }
public String getId() { public String getId() {
return READ_CONFIG_GLOBAL_ATTRIBUTE; return READ_CONFIG_GLOBAL_ATTRIBUTE;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[] {READ_CONFIG_GLOBAL_ELEMENT}; return new String[] { READ_CONFIG_GLOBAL_ELEMENT };
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
if (elementNamespaceAttributeComparator==null) { if (elementNamespaceAttributeComparator == null) {
try { try {
elementNamespaceAttributeComparator = (Comparator<ElementNamespaceAttribute>)X4OLanguageClassLoader.newInstance(element.getLanguageSession().getLanguage().getLanguageConfiguration().getDefaultElementNamespaceAttributeComparator()); elementNamespaceAttributeComparator = (Comparator<ElementNamespaceAttribute>) X4OLanguageClassLoader
.newInstance(element.getLanguageSession().getLanguage().getLanguageConfiguration().getDefaultElementNamespaceAttributeComparator());
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
throw new X4OPhaseException(this,e); throw new X4OPhaseException(this, e);
} }
} }
// do global parameters // do global parameters
logger.finest("Do Element Global AttributeHandlers."); logger.finest("Do Element Global AttributeHandlers.");
List<ElementNamespaceAttribute> handlers = new ArrayList<ElementNamespaceAttribute>(); List<ElementNamespaceAttribute> handlers = new ArrayList<ElementNamespaceAttribute>();
for (X4OLanguageModule mod:element.getLanguageSession().getLanguage().getLanguageModules()) { for (X4OLanguageModule mod : element.getLanguageSession().getLanguage().getLanguageModules()) {
for (ElementNamespace ns:mod.getElementNamespaces()) { for (ElementNamespace ns : mod.getElementNamespaces()) {
for (ElementNamespaceAttribute global:ns.getElementNamespaceAttributes()) { for (ElementNamespaceAttribute global : ns.getElementNamespaceAttributes()) {
String attribute = element.getAttributes().get(global.getAttributeName()); String attribute = element.getAttributes().get(global.getAttributeName());
if (attribute!=null) { if (attribute != null) {
handlers.add(global); handlers.add(global);
} }
} }
} }
} }
Collections.sort(handlers,elementNamespaceAttributeComparator); Collections.sort(handlers, elementNamespaceAttributeComparator);
List<ElementConfigurator> handlers2 = new ArrayList<ElementConfigurator>(handlers.size()); List<ElementConfigurator> handlers2 = new ArrayList<ElementConfigurator>(handlers.size());
handlers2.addAll(handlers); handlers2.addAll(handlers);
for (ElementConfigurator ec:handlers) { for (ElementConfigurator ec : handlers) {
runConf.runElementConfigurator(ec,element,this); runConf.runElementConfigurator(ec, element, this);
} }
} }
}; };
@ -298,46 +324,49 @@ public class X4OPhaseLanguageRead {
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_READ; return X4OPhaseType.XML_READ;
} }
public String getId() { public String getId() {
return READ_RUN_ATTRIBUTE; return READ_RUN_ATTRIBUTE;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[] {READ_CONFIG_GLOBAL_ATTRIBUTE}; return new String[] { READ_CONFIG_GLOBAL_ATTRIBUTE };
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
// we only can config ElementObjects // we only can config ElementObjects
if (element.getElementObject()==null) { if (element.getElementObject() == null) {
return; return;
} }
// do config // do config
Map<String,String> attr = element.getAttributes(); Map<String, String> attr = element.getAttributes();
ElementAttributeValueParser attrParser = element.getLanguageSession().getElementAttributeValueParser(); ElementAttributeValueParser attrParser = element.getLanguageSession().getElementAttributeValueParser();
Boolean autoAttributes = element.getElementClass().getAutoAttributes(); Boolean autoAttributes = element.getElementClass().getAutoAttributes();
if (autoAttributes==null) { if (autoAttributes == null) {
autoAttributes = true; autoAttributes = true;
} }
try { try {
for (String name:attr.keySet()) { for (String name : attr.keySet()) {
String valueString = (String)attr.get(name); String valueString = (String) attr.get(name);
if (valueString==null) { if (valueString == null) {
continue; continue;
} }
Object value = valueString; Object value = valueString;
ElementClassAttribute attrClass = element.getElementClass().getElementClassAttributeByName(name); ElementClassAttribute attrClass = element.getElementClass().getElementClassAttributeByName(name);
if (attrClass!=null) { if (attrClass != null) {
if (attrClass.getRunResolveEL()==null || attrClass.getRunResolveEL() && attrParser.isELParameter(name, valueString, element)) { if (attrClass.getRunResolveEL() == null || attrClass.getRunResolveEL() && attrParser.isELParameter(name, valueString, element)) {
value = attrParser.getELParameterValue(valueString, element); value = attrParser.getELParameterValue(valueString, element);
} }
if (attrClass.getRunConverters()==null || attrClass.getRunConverters()) { if (attrClass.getRunConverters() == null || attrClass.getRunConverters()) {
value = attrParser.getConvertedParameterValue(name, value, element); value = attrParser.getConvertedParameterValue(name, value, element);
} }
if (attrClass.getRunBeanValue()==null || attrClass.getRunBeanValue()) { if (attrClass.getRunBeanValue() == null || attrClass.getRunBeanValue()) {
element.getLanguageSession().getElementObjectPropertyValue().setProperty(element.getElementObject(), name, value); element.getLanguageSession().getElementObjectPropertyValue().setProperty(element.getElementObject(), name, value);
} }
} else if (autoAttributes) { } else if (autoAttributes) {
value = attrParser.getParameterValue(name,valueString,element); value = attrParser.getParameterValue(name, valueString, element);
element.getLanguageSession().getElementObjectPropertyValue().setProperty(element.getElementObject(), name, value); element.getLanguageSession().getElementObjectPropertyValue().setProperty(element.getElementObject(), name, value);
} else { } else {
@ -345,24 +374,24 @@ public class X4OPhaseLanguageRead {
} }
} }
// check for defaults // check for defaults
for (ElementClassAttribute attrClass:element.getElementClass().getElementClassAttributes()) { for (ElementClassAttribute attrClass : element.getElementClass().getElementClassAttributes()) {
if (attrClass.getDefaultValue()!=null && attr.containsKey(attrClass.getId())==false) { if (attrClass.getDefaultValue() != null && attr.containsKey(attrClass.getId()) == false) {
Object value = null; Object value = null;
if (attrClass.getDefaultValue() instanceof String) { if (attrClass.getDefaultValue() instanceof String) {
value = attrParser.getParameterValue(attrClass.getId(),(String)attrClass.getDefaultValue(),element); value = attrParser.getParameterValue(attrClass.getId(), (String) attrClass.getDefaultValue(), element);
} else { } else {
value = attrClass.getDefaultValue(); value = attrClass.getDefaultValue();
} }
if (attrClass.getRunBeanValue()==null || attrClass.getRunBeanValue()) { if (attrClass.getRunBeanValue() == null || attrClass.getRunBeanValue()) {
element.getLanguageSession().getElementObjectPropertyValue().setProperty(element.getElementObject(), attrClass.getId(), value); element.getLanguageSession().getElementObjectPropertyValue().setProperty(element.getElementObject(), attrClass.getId(), value);
} }
} }
} }
} catch (ObjectConverterException oce) { } catch (ObjectConverterException oce) {
throw new X4OPhaseException(this,"Error while converting parameters: "+oce.getMessage(),oce); throw new X4OPhaseException(this, "Error while converting parameters: " + oce.getMessage(), oce);
} catch (ElementException e) { } catch (ElementException e) {
throw new X4OPhaseException(this,"Error while setting parameters: "+e.getMessage(),e); throw new X4OPhaseException(this, "Error while setting parameters: " + e.getMessage(), e);
} }
} }
}; };
@ -374,12 +403,15 @@ public class X4OPhaseLanguageRead {
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_READ; return X4OPhaseType.XML_READ;
} }
public String getId() { public String getId() {
return READ_FILL_TEMPLATE; return READ_FILL_TEMPLATE;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[] {READ_RUN_ATTRIBUTE}; return new String[] { READ_RUN_ATTRIBUTE };
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
} }
}; };
@ -391,14 +423,17 @@ public class X4OPhaseLanguageRead {
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_READ; return X4OPhaseType.XML_READ;
} }
public String getId() { public String getId() {
return READ_TRANSFORM; return READ_TRANSFORM;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[] {READ_FILL_TEMPLATE}; return new String[] { READ_FILL_TEMPLATE };
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
if (element.isTransformingTree()==false) { if (element.isTransformingTree() == false) {
return; return;
} }
try { try {
@ -407,7 +442,7 @@ public class X4OPhaseLanguageRead {
} }
element.doElementRun(); element.doElementRun();
} catch (ElementException e) { } catch (ElementException e) {
throw new X4OPhaseException(this,e); throw new X4OPhaseException(this, e);
} }
} }
}; };
@ -417,18 +452,23 @@ public class X4OPhaseLanguageRead {
*/ */
class X4OPhaseReadRunDirty extends AbstractX4OPhase { class X4OPhaseReadRunDirty extends AbstractX4OPhase {
private X4OPhaseManager phaseManager = null; private X4OPhaseManager phaseManager = null;
public X4OPhaseReadRunDirty(X4OPhaseManager phaseManager) { public X4OPhaseReadRunDirty(X4OPhaseManager phaseManager) {
this.phaseManager = phaseManager; this.phaseManager = phaseManager;
} }
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_READ; return X4OPhaseType.XML_READ;
} }
public String getId() { public String getId() {
return READ_RUN_DIRTY; return READ_RUN_DIRTY;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[] {READ_TRANSFORM}; return new String[] { READ_TRANSFORM };
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
List<Element> dirtyElements = element.getLanguageSession().getDirtyElements(); List<Element> dirtyElements = element.getLanguageSession().getDirtyElements();
if (dirtyElements.isEmpty()) { if (dirtyElements.isEmpty()) {
@ -437,7 +477,7 @@ public class X4OPhaseLanguageRead {
debugPhaseMessage(element.getLanguageSession(), "Dirty elements: " + dirtyElements.size()); debugPhaseMessage(element.getLanguageSession(), "Dirty elements: " + dirtyElements.size());
X4OPhase p = phaseManager.getPhase(READ_BEGIN); X4OPhase p = phaseManager.getPhase(READ_BEGIN);
for (Element e : dirtyElements) { for (Element e : dirtyElements) {
phaseManager.runPhasesForElement(e,getType(), p); phaseManager.runPhasesForElement(e, getType(), p);
} }
element.getLanguageSession().getDirtyElements().clear(); element.getLanguageSession().getDirtyElements().clear();
} }
@ -448,18 +488,23 @@ public class X4OPhaseLanguageRead {
*/ */
class X4OPhaseReadRunDirtyLast extends AbstractX4OPhase { class X4OPhaseReadRunDirtyLast extends AbstractX4OPhase {
private X4OPhaseManager phaseManager = null; private X4OPhaseManager phaseManager = null;
public X4OPhaseReadRunDirtyLast(X4OPhaseManager phaseManager) { public X4OPhaseReadRunDirtyLast(X4OPhaseManager phaseManager) {
this.phaseManager = phaseManager; this.phaseManager = phaseManager;
} }
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_READ; return X4OPhaseType.XML_READ;
} }
public String getId() { public String getId() {
return READ_RUN_DIRTY_LAST; return READ_RUN_DIRTY_LAST;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[] {READ_RUN}; return new String[] { READ_RUN };
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
List<Element> dirtyElements = element.getLanguageSession().getDirtyElements(); List<Element> dirtyElements = element.getLanguageSession().getDirtyElements();
if (dirtyElements.isEmpty()) { if (dirtyElements.isEmpty()) {
@ -468,7 +513,7 @@ public class X4OPhaseLanguageRead {
debugPhaseMessage(element.getLanguageSession(), "Dirty elements last: " + dirtyElements.size()); debugPhaseMessage(element.getLanguageSession(), "Dirty elements last: " + dirtyElements.size());
X4OPhase p = phaseManager.getPhase(READ_BEGIN); X4OPhase p = phaseManager.getPhase(READ_BEGIN);
for (Element e : dirtyElements) { for (Element e : dirtyElements) {
phaseManager.runPhasesForElement(e,getType(), p); phaseManager.runPhasesForElement(e, getType(), p);
} }
element.getLanguageSession().getDirtyElements().clear(); element.getLanguageSession().getDirtyElements().clear();
} }
@ -481,40 +526,43 @@ public class X4OPhaseLanguageRead {
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_READ; return X4OPhaseType.XML_READ;
} }
public String getId() { public String getId() {
return READ_BIND_ELEMENT; return READ_BIND_ELEMENT;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[] {READ_RUN_DIRTY}; return new String[] { READ_RUN_DIRTY };
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
Element parentElement = element.getParent(); Element parentElement = element.getParent();
if(parentElement==null) { if (parentElement == null) {
logger.finest("No parent element, so no binding needed."); logger.finest("No parent element, so no binding needed.");
return; return;
} }
Object parentObject = parentElement.getElementObject(); Object parentObject = parentElement.getElementObject();
if(parentObject==null) { if (parentObject == null) {
logger.finest("No parent object, so no binding needed."); logger.finest("No parent object, so no binding needed.");
return; return;
} }
Object childObject = element.getElementObject(); Object childObject = element.getElementObject();
if (childObject==null) { if (childObject == null) {
logger.finest("No child object, so no binding needed."); logger.finest("No child object, so no binding needed.");
return; return;
} }
List<ElementBindingHandler> binds = element.getLanguageSession().getLanguage().findElementBindingHandlers(parentObject, childObject); List<ElementBindingHandler> binds = element.getLanguageSession().getLanguage().findElementBindingHandlers(parentObject, childObject);
logger.finest("Calling bindings handlers; "+binds.size()); logger.finest("Calling bindings handlers; " + binds.size());
try { try {
for (ElementBindingHandler binding:binds) { for (ElementBindingHandler binding : binds) {
if (element.getLanguageSession().hasX4ODebugWriter()) { if (element.getLanguageSession().hasX4ODebugWriter()) {
element.getLanguageSession().getX4ODebugWriter().debugElementBindingHandler(binding,element); element.getLanguageSession().getX4ODebugWriter().debugElementBindingHandler(binding, element);
} }
binding.bindChild(element); binding.bindChild(element);
} }
} catch (ElementException e) { } catch (ElementException e) {
throw new X4OPhaseException(this,"Error while binding",e); throw new X4OPhaseException(this, "Error while binding", e);
} }
} }
}; };
@ -526,84 +574,97 @@ public class X4OPhaseLanguageRead {
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_READ; return X4OPhaseType.XML_READ;
} }
public String getId() { public String getId() {
return READ_RUN; return READ_RUN;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[] {READ_BIND_ELEMENT}; return new String[] { READ_BIND_ELEMENT };
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
if (element.isTransformingTree()) { if (element.isTransformingTree()) {
return; // has already runned. return; // has already runned.
} }
try { try {
//if (element.getlanguageSession().hasX4ODebugWriter()) { // if (element.getlanguageSession().hasX4ODebugWriter()) {
// element.getlanguageSession().getX4ODebugWriter().debugElement(element); // element.getlanguageSession().getX4ODebugWriter().debugElement(element);
//} // }
element.doElementRun(); element.doElementRun();
} catch (ElementException e) { } catch (ElementException e) {
throw new X4OPhaseException(this,e); throw new X4OPhaseException(this, e);
} }
} }
}; };
class X4OPhaseReadRunConfigurator extends AbstractX4OPhase { class X4OPhaseReadRunConfigurator extends AbstractX4OPhase {
private List<RunConfigurator> runConf = null; private List<RunConfigurator> runConf = null;
protected X4OPhaseReadRunConfigurator() { protected X4OPhaseReadRunConfigurator() {
runConf = new ArrayList<RunConfigurator>(10); runConf = new ArrayList<RunConfigurator>(10);
} }
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_READ; return X4OPhaseType.XML_READ;
} }
public String getId() { public String getId() {
return READ_RUN_CONFIGURATOR; return READ_RUN_CONFIGURATOR;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[] {READ_RUN}; return new String[] { READ_RUN };
} }
public boolean isElementPhase() { public boolean isElementPhase() {
return false; return false;
} }
public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException { public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException {
for (RunConfigurator conf:runConf) { for (RunConfigurator conf : runConf) {
try { try {
if (languageSession.hasX4ODebugWriter()) { if (languageSession.hasX4ODebugWriter()) {
languageSession.getX4ODebugWriter().debugElementConfigurator(conf.elementConfigurator,conf.element); languageSession.getX4ODebugWriter().debugElementConfigurator(conf.elementConfigurator, conf.element);
} }
conf.elementConfigurator.doConfigElement(conf.element); conf.elementConfigurator.doConfigElement(conf.element);
} catch (ElementException e) { } catch (ElementException e) {
throw new X4OPhaseException(this,e); throw new X4OPhaseException(this, e);
} }
} }
} }
@Override @Override
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
} }
class RunConfigurator { class RunConfigurator {
Element element; Element element;
ElementConfigurator elementConfigurator; ElementConfigurator elementConfigurator;
RunConfigurator(Element element,ElementConfigurator elementConfigurator) {
this.element=element; RunConfigurator(Element element, ElementConfigurator elementConfigurator) {
this.elementConfigurator=elementConfigurator; this.element = element;
this.elementConfigurator = elementConfigurator;
} }
} }
public void runElementConfigurator(ElementConfigurator ec,Element e,X4OPhase phase) throws X4OPhaseException {
public void runElementConfigurator(ElementConfigurator ec, Element e, X4OPhase phase) throws X4OPhaseException {
if (ec.isConfigAction()) { if (ec.isConfigAction()) {
runConf.add(new RunConfigurator(e,ec)); runConf.add(new RunConfigurator(e, ec));
return; return;
} }
try { try {
if (e.getLanguageSession().hasX4ODebugWriter()) { if (e.getLanguageSession().hasX4ODebugWriter()) {
e.getLanguageSession().getX4ODebugWriter().debugElementConfigurator(ec,e); e.getLanguageSession().getX4ODebugWriter().debugElementConfigurator(ec, e);
} }
ec.doConfigElement(e); ec.doConfigElement(e);
// may request rerun of config // may request rerun of config
if (ec.isConfigAction()) { if (ec.isConfigAction()) {
runConf.add(new RunConfigurator(e,ec)); runConf.add(new RunConfigurator(e, ec));
} }
} catch (ElementException ee) { } catch (ElementException ee) {
throw new X4OPhaseException(phase,ee); throw new X4OPhaseException(phase, ee);
} }
} }
} }
@ -615,25 +676,30 @@ public class X4OPhaseLanguageRead {
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_READ; return X4OPhaseType.XML_READ;
} }
public String getId() { public String getId() {
return READ_END; return READ_END;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[]{READ_RUN_CONFIGURATOR}; return new String[] { READ_RUN_CONFIGURATOR };
} }
public boolean isElementPhase() { public boolean isElementPhase() {
return false; return false;
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
// not used. // not used.
} }
public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException { public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException {
// print the properties and classes for this language/config // print the properties and classes for this language/config
if (languageSession.hasX4ODebugWriter()) { if (languageSession.hasX4ODebugWriter()) {
try { try {
languageSession.getX4ODebugWriter().debugLanguageDefaultClasses(languageSession); languageSession.getX4ODebugWriter().debugLanguageDefaultClasses(languageSession);
} catch (ElementException e) { } catch (ElementException e) {
throw new X4OPhaseException(this,e); throw new X4OPhaseException(this, e);
} }
} }
} }
@ -641,61 +707,50 @@ public class X4OPhaseLanguageRead {
/** /**
* *
* @return The X4OPhaseHandler for this phase. * @return The X4OPhaseHandler for this phase.
*/ */
public X4OPhase releasePhase() { public X4OPhase releasePhase() {
// for debug output TODO: redo release counters // for debug output TODO: redo release counters
/* /*
class ReleasePhaseListener implements X4OPhaseListener { * class ReleasePhaseListener implements X4OPhaseListener { private int elementsReleased = 0; public void preRunPhase(X4OPhase phase,X4OLanguageSession
private int elementsReleased = 0; * languageSession) throws X4OPhaseException { elementsReleased=0; } public void endRunPhase(X4OPhase phase,X4OLanguageSession languageSession) throws
public void preRunPhase(X4OPhase phase,X4OLanguageSession languageSession) throws X4OPhaseException { * X4OPhaseException { if (languageSession.hasX4ODebugWriter()==false) { return; } try { AttributesImpl atts = new AttributesImpl(); atts.addAttribute
elementsReleased=0; * ("", "elements", "", "", elementsReleased+""); languageSession.getX4ODebugWriter().getContentWriter().startElement (X4ODebugWriter.DEBUG_URI,
} * "executeReleases", "", atts); languageSession.getX4ODebugWriter().getContentWriter().endElement (X4ODebugWriter.DEBUG_URI, "executeReleases" , ""); }
public void endRunPhase(X4OPhase phase,X4OLanguageSession languageSession) throws X4OPhaseException { * catch (SAXException e) { throw new X4OPhaseException(phase,e); } }
if (languageSession.hasX4ODebugWriter()==false) { *
return; * public void addReleasedElement() { elementsReleased++; } }
} */
try {
AttributesImpl atts = new AttributesImpl();
atts.addAttribute ("", "elements", "", "", elementsReleased+"");
languageSession.getX4ODebugWriter().getContentWriter().startElement (X4ODebugWriter.DEBUG_URI, "executeReleases", "", atts);
languageSession.getX4ODebugWriter().getContentWriter().endElement (X4ODebugWriter.DEBUG_URI, "executeReleases" , "");
} catch (SAXException e) {
throw new X4OPhaseException(phase,e);
}
}
public void addReleasedElement() { // final ReleasePhaseListener releaseCounter = new ReleasePhaseListener();
elementsReleased++;
}
}
*/
//final ReleasePhaseListener releaseCounter = new ReleasePhaseListener();
X4OPhase result = new AbstractX4OPhase() { X4OPhase result = new AbstractX4OPhase() {
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_READ; return X4OPhaseType.XML_READ;
} }
public String getId() { public String getId() {
return READ_RELEASE; return READ_RELEASE;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[] {READ_END}; return new String[] { READ_END };
} }
public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException { public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException {
} }
public void runElementPhase(Element element) throws X4OPhaseException {
public void runElementPhase(Element element) throws X4OPhaseException {
try { try {
element.release(); element.release();
} catch (ElementException e) { } catch (ElementException e) {
throw new X4OPhaseException(this,e); throw new X4OPhaseException(this, e);
}// finally { } // finally {
// releaseCounter.addReleasedElement(); // releaseCounter.addReleasedElement();
//} // }
} }
}; };
//result.addPhaseListener(releaseCounter); // result.addPhaseListener(releaseCounter);
return result; return result;
} }
} }

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang.phase; package org.x4o.xml.lang.phase;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -56,7 +56,7 @@ public class X4OPhaseLanguageWrite {
manager.addX4OPhase(new X4OPhaseWriteBegin()); manager.addX4OPhase(new X4OPhaseWriteBegin());
manager.addX4OPhase(new X4OPhaseWriteFillTree()); manager.addX4OPhase(new X4OPhaseWriteFillTree());
manager.addX4OPhase(new X4OPhaseWriteEnd()); manager.addX4OPhase(new X4OPhaseWriteEnd());
//manager.addX4OPhase(new X4OPhaseWriteRelease()); // manager.addX4OPhase(new X4OPhaseWriteRelease());
} }
/** /**
@ -66,18 +66,23 @@ public class X4OPhaseLanguageWrite {
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_WRITE; return X4OPhaseType.XML_WRITE;
} }
public String getId() { public String getId() {
return WRITE_BEGIN; return WRITE_BEGIN;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[]{}; return new String[] {};
} }
public boolean isElementPhase() { public boolean isElementPhase() {
return false; return false;
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
} }
public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException {
public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException {
logger.finest("Run init begin phase"); logger.finest("Run init begin phase");
} }
}; };
@ -89,74 +94,81 @@ public class X4OPhaseLanguageWrite {
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_WRITE; return X4OPhaseType.XML_WRITE;
} }
public String getId() { public String getId() {
return WRITE_FILL_TREE; return WRITE_FILL_TREE;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[]{WRITE_BEGIN}; return new String[] { WRITE_BEGIN };
} }
public boolean isElementPhase() { public boolean isElementPhase() {
return false; return false;
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
} }
public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException {
public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException {
try { try {
Element root = languageSession.getRootElement(); Element root = languageSession.getRootElement();
// TODO: check for read tree then write support as ec is not null then .. // TODO: check for read tree then write support as ec is not null then ..
if (root.getElementClass()==null) { if (root.getElementClass() == null) {
root = fillElementTree(languageSession,root.getElementObject()); root = fillElementTree(languageSession, root.getElementObject());
} }
} catch (Exception e) { } catch (Exception e) {
throw new X4OPhaseException(this,e); throw new X4OPhaseException(this, e);
} }
} }
private Element fillElementTree(X4OLanguageSession languageSession,Object object) throws ElementNamespaceInstanceProviderException, ElementBindingHandlerException { private Element fillElementTree(X4OLanguageSession languageSession, Object object)
Element element = findRootElement(languageSession,object.getClass()); throws ElementNamespaceInstanceProviderException, ElementBindingHandlerException {
Element element = findRootElement(languageSession, object.getClass());
element.setElementObject(object); element.setElementObject(object);
languageSession.setRootElement(element); languageSession.setRootElement(element);
for (ElementBindingHandler bind:languageSession.getLanguage().findElementBindingHandlers(object)) { for (ElementBindingHandler bind : languageSession.getLanguage().findElementBindingHandlers(object)) {
bind.createChilderen(element); bind.createChilderen(element);
fillTree(languageSession,element); fillTree(languageSession, element);
} }
return element; return element;
} }
private void fillTree(X4OLanguageSession languageSession,Element element) throws ElementNamespaceInstanceProviderException, ElementBindingHandlerException { private void fillTree(X4OLanguageSession languageSession, Element element)
for (Element e:element.getChilderen()) { throws ElementNamespaceInstanceProviderException, ElementBindingHandlerException {
for (Element e : element.getChilderen()) {
Object object = e.getElementObject(); Object object = e.getElementObject();
for (ElementBindingHandler bind:languageSession.getLanguage().findElementBindingHandlers(object)) { for (ElementBindingHandler bind : languageSession.getLanguage().findElementBindingHandlers(object)) {
bind.createChilderen(e); bind.createChilderen(e);
fillTree(languageSession,e); fillTree(languageSession, e);
} }
} }
} }
private Element findRootElement(X4OLanguageSession languageSession,Class<?> objectClass) throws ElementNamespaceInstanceProviderException { private Element findRootElement(X4OLanguageSession languageSession, Class<?> objectClass) throws ElementNamespaceInstanceProviderException {
// redo this mess, add nice find for root // redo this mess, add nice find for root
for (X4OLanguageModule modContext:languageSession.getLanguage().getLanguageModules()) { for (X4OLanguageModule modContext : languageSession.getLanguage().getLanguageModules()) {
for (ElementNamespace nsContext:modContext.getElementNamespaces()) { for (ElementNamespace nsContext : modContext.getElementNamespaces()) {
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(languageSession, ec.getId()); return nsContext.getElementNamespaceInstanceProvider().createElementInstance(languageSession, ec.getId());
} }
} }
} }
} }
} }
for (X4OLanguageModule modContext:languageSession.getLanguage().getLanguageModules()) { for (X4OLanguageModule modContext : languageSession.getLanguage().getLanguageModules()) {
for (ElementNamespace nsContext:modContext.getElementNamespaces()) { for (ElementNamespace nsContext : modContext.getElementNamespaces()) {
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(languageSession, ec.getId()); return nsContext.getElementNamespaceInstanceProvider().createElementInstance(languageSession, ec.getId());
} }
} }
} }
} }
throw new IllegalArgumentException("Could not find ElementClass for: "+objectClass.getName()); throw new IllegalArgumentException("Could not find ElementClass for: " + objectClass.getName());
} }
}; };
@ -167,18 +179,23 @@ public class X4OPhaseLanguageWrite {
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_WRITE; return X4OPhaseType.XML_WRITE;
} }
public String getId() { public String getId() {
return WRITE_END; return WRITE_END;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[]{WRITE_FILL_TREE}; return new String[] { WRITE_FILL_TREE };
} }
public boolean isElementPhase() { public boolean isElementPhase() {
return false; return false;
} }
public void runElementPhase(Element element) throws X4OPhaseException { public void runElementPhase(Element element) throws X4OPhaseException {
} }
public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException {
public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException {
logger.finest("Run init end phase"); logger.finest("Run init end phase");
} }
}; };
@ -187,22 +204,26 @@ public class X4OPhaseLanguageWrite {
public X4OPhaseType getType() { public X4OPhaseType getType() {
return X4OPhaseType.XML_WRITE; return X4OPhaseType.XML_WRITE;
} }
public String getId() { public String getId() {
return WRITE_RELEASE; return WRITE_RELEASE;
} }
public String[] getPhaseDependencies() { public String[] getPhaseDependencies() {
return new String[] {WRITE_END}; return new String[] { WRITE_END };
} }
public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException { public void runPhase(X4OLanguageSession languageSession) throws X4OPhaseException {
} }
public void runElementPhase(Element element) throws X4OPhaseException {
public void runElementPhase(Element element) throws X4OPhaseException {
try { try {
element.release(); element.release();
} catch (ElementException e) { } catch (ElementException e) {
throw new X4OPhaseException(this,e); throw new X4OPhaseException(this, e);
}/* finally { } /*
releaseCounter.addReleasedElement(); * finally { releaseCounter.addReleasedElement(); }
}*/ */
} }
} }
} }

View file

@ -20,14 +20,12 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang.phase; package org.x4o.xml.lang.phase;
import org.x4o.xml.lang.X4OLanguageSession; import org.x4o.xml.lang.X4OLanguageSession;
/** /**
* An X4OPhaseListener can be placed on an X4OPhaseHandler and is called * An X4OPhaseListener can be placed on an X4OPhaseHandler and is called before and after the phase has runned.
* before and after the phase has runned.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Dec 31, 2008 * @version 1.0 Dec 31, 2008
@ -36,17 +34,19 @@ public interface X4OPhaseListener {
/** /**
* Gets called before the X4OPhaseHandler is run. * Gets called before the X4OPhaseHandler is run.
* @param phase The phase to be run. *
* @param languageSession The X4O language session of the driver. * @param phase The phase to be run.
* @throws X4OPhaseException Is throws when listeners has error. * @param languageSession The X4O language session of the driver.
* @throws X4OPhaseException Is throws when listeners has error.
*/ */
void preRunPhase(X4OPhase phase,X4OLanguageSession languageSession) throws X4OPhaseException; void preRunPhase(X4OPhase phase, X4OLanguageSession languageSession) throws X4OPhaseException;
/** /**
* Gets called after the X4OPhaseHandler is runned. * Gets called after the X4OPhaseHandler is runned.
* @param phase The phase just run. *
* @param languageSession The X4O language session of the driver. * @param phase The phase just run.
* @throws X4OPhaseException Is throws when listeners has error. * @param languageSession The X4O language session of the driver.
* @throws X4OPhaseException Is throws when listeners has error.
*/ */
void endRunPhase(X4OPhase phase,X4OLanguageSession languageSession) throws X4OPhaseException; void endRunPhase(X4OPhase phase, X4OLanguageSession languageSession) throws X4OPhaseException;
} }

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang.phase; package org.x4o.xml.lang.phase;
import java.util.List; import java.util.List;
@ -28,8 +28,7 @@ import org.x4o.xml.element.Element;
import org.x4o.xml.lang.X4OLanguageSession; import org.x4o.xml.lang.X4OLanguageSession;
/** /**
* X4OPhaseManager stores the X4OPhaseHandler and puts them in the right order. * X4OPhaseManager stores the X4OPhaseHandler and puts them in the right order. And will execute the phases when runPhases is called.
* And will execute the phases when runPhases is called.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Jan 6, 2008 * @version 1.0 Jan 6, 2008
@ -38,35 +37,40 @@ public interface X4OPhaseManager {
/** /**
* Gets an X4OPhase object by the phaseName. * Gets an X4OPhase object by the phaseName.
* @param phaseName The phaseName to lookup. *
* @return The X4OPhase requested or null. * @param phaseName The phaseName to lookup.
* @return The X4OPhase requested or null.
*/ */
X4OPhase getPhase(String phaseName); X4OPhase getPhase(String phaseName);
/** /**
* Gets all the keys of the phases registrated whith this phase manager. * Gets all the keys of the phases registrated whith this phase manager.
* @return The phase keys. *
* @return The phase keys.
*/ */
List<String> getPhaseKeys(); List<String> getPhaseKeys();
/** /**
* Runs release phase if it was requested not to run it automaticly. * Runs release phase if it was requested not to run it automaticly.
* @param languageSession The session to release. *
* @param languageSession The session to release.
* @throws X4OPhaseException When a running handlers throws one. * @throws X4OPhaseException When a running handlers throws one.
*/ */
void doReleasePhaseManual(X4OLanguageSession languageSession) throws X4OPhaseException; void doReleasePhaseManual(X4OLanguageSession languageSession) throws X4OPhaseException;
/** /**
* Runs all the phases in the right order. * Runs all the phases in the right order.
*
* @throws X4OPhaseException When a running handlers throws one. * @throws X4OPhaseException When a running handlers throws one.
*/ */
void runPhases(X4OLanguageSession elementContext,X4OPhaseType type) throws X4OPhaseException; void runPhases(X4OLanguageSession elementContext, X4OPhaseType type) throws X4OPhaseException;
/** /**
* Runs phase on single element. * Runs phase on single element.
* @param e The Element to process. *
* @param p The phase to run. * @param e The Element to process.
* @param p The phase to run.
* @throws X4OPhaseException When a running handlers throws one. * @throws X4OPhaseException When a running handlers throws one.
*/ */
void runPhasesForElement(Element e,X4OPhaseType type,X4OPhase p) throws X4OPhaseException; void runPhasesForElement(Element e, X4OPhaseType type, X4OPhase p) throws X4OPhaseException;
} }

View file

@ -20,8 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang.phase; package org.x4o.xml.lang.phase;
/** /**
* X4OPhaseManagerLocal has the local config methods. * X4OPhaseManagerLocal has the local config methods.

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang.phase; package org.x4o.xml.lang.phase;
/** /**
* X4OPhaseType defines which phase type there are to put phases in to execute. * X4OPhaseType defines which phase type there are to put phases in to execute.

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang.task; package org.x4o.xml.lang.task;
import java.util.List; import java.util.List;
@ -39,15 +39,15 @@ public abstract class AbstractX4OLanguageTask implements X4OLanguageTask {
private final String description; private final String description;
private final SAX3PropertyConfig propertyConfig; private final SAX3PropertyConfig propertyConfig;
public AbstractX4OLanguageTask(String id,SAX3PropertyConfig propertyConfig) { public AbstractX4OLanguageTask(String id, SAX3PropertyConfig propertyConfig) {
this(id,id,id,propertyConfig); this(id, id, id, propertyConfig);
} }
public AbstractX4OLanguageTask(String id,String name,String description,SAX3PropertyConfig propertyConfig) { public AbstractX4OLanguageTask(String id, String name, String description, SAX3PropertyConfig propertyConfig) {
this.id=id; this.id = id;
this.name=name; this.name = name;
this.description=description; this.description = description;
this.propertyConfig=propertyConfig; this.propertyConfig = propertyConfig;
} }
protected abstract X4OLanguageTaskExecutor createTaskExecutorChecked(SAX3PropertyConfig config); protected abstract X4OLanguageTaskExecutor createTaskExecutorChecked(SAX3PropertyConfig config);
@ -66,11 +66,11 @@ public abstract class AbstractX4OLanguageTask implements X4OLanguageTask {
} }
StringBuilder buf = new StringBuilder(100); StringBuilder buf = new StringBuilder(100);
buf.append("Error missing value(s) for key(s) {"); buf.append("Error missing value(s) for key(s) {");
for (int i=0;i<keys.size();i++) { for (int i = 0; i < keys.size(); i++) {
buf.append('"'); buf.append('"');
buf.append(keys.get(i)); buf.append(keys.get(i));
buf.append('"'); buf.append('"');
if (i<keys.size()-1) { if (i < keys.size() - 1) {
buf.append(','); buf.append(',');
} }
buf.append('}'); buf.append('}');

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang.task; package org.x4o.xml.lang.task;
import org.x4o.sax3.io.SAX3PropertyConfig; import org.x4o.sax3.io.SAX3PropertyConfig;
@ -33,28 +33,28 @@ import org.x4o.sax3.io.SAX3PropertyConfig;
public interface X4OLanguageTask { public interface X4OLanguageTask {
/** /**
* @return Returns the task id. * @return Returns the task id.
*/ */
String getId(); String getId();
/** /**
* @return Returns the task name. * @return Returns the task name.
*/ */
String getName(); String getName();
/** /**
* @return Returns the task description. * @return Returns the task description.
*/ */
String getDescription(); String getDescription();
/** /**
* @return Returns newly created PropertyConfig for configuring this task. * @return Returns newly created PropertyConfig for configuring this task.
*/ */
SAX3PropertyConfig createTaskConfig(); SAX3PropertyConfig createTaskConfig();
/** /**
* @param config The config with which the task will be runned. * @param config The config with which the task will be runned.
* @return The task executor for running the task. * @return The task executor for running the task.
*/ */
X4OLanguageTaskExecutor createTaskExecutor(SAX3PropertyConfig config); X4OLanguageTaskExecutor createTaskExecutor(SAX3PropertyConfig config);
} }

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang.task; package org.x4o.xml.lang.task;
import org.x4o.sax3.io.SAX3PropertyConfig; import org.x4o.sax3.io.SAX3PropertyConfig;
@ -35,14 +35,14 @@ public class X4OLanguageTaskException extends Exception {
private static final long serialVersionUID = 8490969221732950292L; private static final long serialVersionUID = 8490969221732950292L;
private SAX3PropertyConfig propertyConfig = null; private SAX3PropertyConfig propertyConfig = null;
public X4OLanguageTaskException(SAX3PropertyConfig propertyConfig,String message) { public X4OLanguageTaskException(SAX3PropertyConfig propertyConfig, String message) {
super(message); super(message);
this.propertyConfig=propertyConfig; this.propertyConfig = propertyConfig;
} }
public X4OLanguageTaskException(SAX3PropertyConfig propertyConfig,String message,Exception exception) { public X4OLanguageTaskException(SAX3PropertyConfig propertyConfig, String message, Exception exception) {
super(message,exception); super(message, exception);
this.propertyConfig=propertyConfig; this.propertyConfig = propertyConfig;
} }
public SAX3PropertyConfig getPropertyConfig() { public SAX3PropertyConfig getPropertyConfig() {

View file

@ -20,11 +20,10 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang.task; package org.x4o.xml.lang.task;
import org.x4o.xml.lang.X4OLanguage; import org.x4o.xml.lang.X4OLanguage;
/** /**
* X4OLanguageTaskExecutor runs the language task. * X4OLanguageTaskExecutor runs the language task.
* *
@ -35,8 +34,9 @@ public interface X4OLanguageTaskExecutor {
/** /**
* Executes a task for which this executor is created. * Executes a task for which this executor is created.
* @param language The language for which we run the task. *
* @throws X4OLanguageTaskException Can be thrown in case of error. * @param language The language for which we run the task.
* @throws X4OLanguageTaskException Can be thrown in case of error.
*/ */
void execute(X4OLanguage language) throws X4OLanguageTaskException; void execute(X4OLanguage language) throws X4OLanguageTaskException;
} }

View file

@ -36,12 +36,12 @@ import org.xml.sax.SAXException;
*/ */
public class X4OStaticLanguageTask extends AbstractX4OLanguageTask { public class X4OStaticLanguageTask extends AbstractX4OLanguageTask {
public static final String TASK_ID = "x4o-static"; public static final String TASK_ID = "x4o-static";
private static final String TASK_NAME = "X4O Static Task"; private static final String TASK_NAME = "X4O Static Task";
private static final String TASK_DESC = "Writes static support resources of X4O."; private static final String TASK_DESC = "Writes static support resources of X4O.";
public X4OStaticLanguageTask() { public X4OStaticLanguageTask() {
super(TASK_ID,TASK_NAME,TASK_DESC,X4OStaticWriter.DEFAULT_PROPERTY_CONFIG); super(TASK_ID, TASK_NAME, TASK_DESC, X4OStaticWriter.DEFAULT_PROPERTY_CONFIG);
} }
/** /**
@ -53,9 +53,9 @@ public class X4OStaticLanguageTask extends AbstractX4OLanguageTask {
try { try {
new X4OStaticWriter(config).writeStatic(); new X4OStaticWriter(config).writeStatic();
} catch (SAXException e) { } catch (SAXException e) {
throw new X4OLanguageTaskException(config,e.getMessage(),e); throw new X4OLanguageTaskException(config, e.getMessage(), e);
} catch (IOException e) { } catch (IOException e) {
throw new X4OLanguageTaskException(config,e.getMessage(),e); throw new X4OLanguageTaskException(config, e.getMessage(), e);
} }
} }
}; };

View file

@ -41,9 +41,9 @@ import org.xml.sax.SAXException;
*/ */
public class X4OStaticWriter { public class X4OStaticWriter {
private final static String PROPERTY_CONTEXT_PREFIX = SAX3PropertyConfig.X4O_PROPERTIES_PREFIX+"x4o-static/"; //@formatter:off
public final static SAX3PropertyConfig DEFAULT_PROPERTY_CONFIG; public final static SAX3PropertyConfig DEFAULT_PROPERTY_CONFIG;
private final static String PROPERTY_CONTEXT_PREFIX = SAX3PropertyConfig.X4O_PROPERTIES_PREFIX+"x4o-static/";
public final static String OUTPUT_PATH = PROPERTY_CONTEXT_PREFIX+"output/path"; public final static String OUTPUT_PATH = PROPERTY_CONTEXT_PREFIX+"output/path";
public final static String OUTPUT_OASIS_XMLNS_CATALOG = PROPERTY_CONTEXT_PREFIX+"output/oasis-xml-catalog"; public final static String OUTPUT_OASIS_XMLNS_CATALOG = PROPERTY_CONTEXT_PREFIX+"output/oasis-xml-catalog";
@ -53,18 +53,19 @@ public class X4OStaticWriter {
new PropertyConfigItem(OUTPUT_OASIS_XMLNS_CATALOG, Boolean.class, false) new PropertyConfigItem(OUTPUT_OASIS_XMLNS_CATALOG, Boolean.class, false)
); );
} }
//@formatter:on
private final SAX3PropertyConfig propertyConfig; private final SAX3PropertyConfig propertyConfig;
public X4OStaticWriter(SAX3PropertyConfig parentConfig) { public X4OStaticWriter(SAX3PropertyConfig parentConfig) {
this.propertyConfig=new SAX3PropertyConfig(DEFAULT_PROPERTY_CONFIG,PROPERTY_CONTEXT_PREFIX); this.propertyConfig = new SAX3PropertyConfig(DEFAULT_PROPERTY_CONFIG, PROPERTY_CONTEXT_PREFIX);
this.propertyConfig.copyParentProperties(parentConfig); this.propertyConfig.copyParentProperties(parentConfig);
} }
public void writeStatic() throws SAXException, IOException { public void writeStatic() throws SAXException, IOException {
File basePath = propertyConfig.getPropertyFile(OUTPUT_PATH); File basePath = propertyConfig.getPropertyFile(OUTPUT_PATH);
Boolean outputOasis = propertyConfig.getPropertyBoolean(OUTPUT_OASIS_XMLNS_CATALOG); Boolean outputOasis = propertyConfig.getPropertyBoolean(OUTPUT_OASIS_XMLNS_CATALOG);
if (basePath==null) { if (basePath == null) {
throw new NullPointerException("Can't write resources to null output path."); throw new NullPointerException("Can't write resources to null output path.");
} }
if (!basePath.exists()) { if (!basePath.exists()) {
@ -77,17 +78,17 @@ public class X4OStaticWriter {
} }
} }
private void copyResourceToFile(String resource,File output) throws IOException { private void copyResourceToFile(String resource, File output) throws IOException {
ClassLoader cl = X4OLanguageClassLoader.getClassLoader(); ClassLoader cl = X4OLanguageClassLoader.getClassLoader();
InputStream inputStream = cl.getResourceAsStream(resource); InputStream inputStream = cl.getResourceAsStream(resource);
try { try {
copyStreamToFile(inputStream,output); copyStreamToFile(inputStream, output);
} catch (SecurityException | IOException | InterruptedException e) { } catch (SecurityException | IOException | InterruptedException e) {
throw new IOException(e); throw new IOException(e);
} }
} }
private void copyStreamToFile(InputStream inputStream,File output) throws SecurityException, IOException, InterruptedException { private void copyStreamToFile(InputStream inputStream, File output) throws SecurityException, IOException, InterruptedException {
OutputStream outputStream = new FileOutputStream(output); OutputStream outputStream = new FileOutputStream(output);
try { try {
byte[] buffer = new byte[4096]; byte[] buffer = new byte[4096];

View file

@ -20,7 +20,7 @@
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package org.x4o.xml.lang.task.run; package org.x4o.xml.lang.task.run;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
@ -76,10 +76,10 @@ public class X4OTaskCommandLine {
try { try {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
executeLanguageTask(); executeLanguageTask();
long totalTime = System.currentTimeMillis()-startTime; long totalTime = System.currentTimeMillis() - startTime;
System.out.println("Succesfully executed task: "+task.getId()+" in "+totalTime+" ms."); System.out.println("Succesfully executed task: " + task.getId() + " in " + totalTime + " ms.");
} catch (Exception e) { } catch (Exception e) {
System.err.println("Error while executing task: "+e.getMessage()); System.err.println("Error while executing task: " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
System.exit(1); System.exit(1);
} }
@ -102,14 +102,14 @@ public class X4OTaskCommandLine {
return; return;
} }
System.err.println("Missing properties;"); System.err.println("Missing properties;");
for (String key:keys) { for (String key : keys) {
System.err.println(" - "+key); System.err.println(" - " + key);
} }
System.exit(1); System.exit(1);
} }
private void viewHelp(List<String> argu) { private void viewHelp(List<String> argu) {
for (String arg:argu) { for (String arg : argu) {
if ("-help".equals(arg) || "-h".equals(arg)) { if ("-help".equals(arg) || "-h".equals(arg)) {
System.out.println("X4O Language Task Command Line Usage;"); System.out.println("X4O Language Task Command Line Usage;");
System.out.println("-languages <lang> (-l) = Selects langauge."); System.out.println("-languages <lang> (-l) = Selects langauge.");
@ -133,11 +133,11 @@ public class X4OTaskCommandLine {
} }
private void viewListings(List<String> argu) { private void viewListings(List<String> argu) {
for (String arg:argu) { for (String arg : argu) {
if ("-list-languages".equals(arg) || "-ll".equals(arg)) { if ("-list-languages".equals(arg) || "-ll".equals(arg)) {
System.out.println("X4O Languages;"); System.out.println("X4O Languages;");
for (String language:X4ODriverManager.getX4OLanguages()) { for (String language : X4ODriverManager.getX4OLanguages()) {
System.out.println("- "+language); System.out.println("- " + language);
} }
System.out.println(); System.out.println();
System.exit(0); System.exit(0);
@ -146,14 +146,14 @@ public class X4OTaskCommandLine {
if ("-list-language-tasks".equals(arg) || "-llt".equals(arg)) { if ("-list-language-tasks".equals(arg) || "-llt".equals(arg)) {
System.out.println("X4O Language Tasks;"); System.out.println("X4O Language Tasks;");
int prefix = 12; int prefix = 12;
for (X4OLanguageTask task:X4ODriverManager.getX4OLanguageTasks()) { for (X4OLanguageTask task : X4ODriverManager.getX4OLanguageTasks()) {
int lId = task.getId().length(); int lId = task.getId().length();
System.out.print(task.getId()); System.out.print(task.getId());
for (int i=0;i<prefix-lId;i++) { for (int i = 0; i < prefix - lId; i++) {
System.out.print(" "); // classic, todo use formatter System.out.print(" "); // classic, todo use formatter
} }
System.out.println(" - "+task.getName()); System.out.println(" - " + task.getName());
for (int i=0;i<prefix+3;i++) { for (int i = 0; i < prefix + 3; i++) {
System.out.print(" "); System.out.print(" ");
} }
System.out.println(task.getDescription()); System.out.println(task.getDescription());
@ -166,25 +166,25 @@ public class X4OTaskCommandLine {
} }
private void viewKeyListing(Iterator<String> arguIterator) { private void viewKeyListing(Iterator<String> arguIterator) {
if (task==null) { if (task == null) {
return; return;
} }
while (arguIterator.hasNext()) { while (arguIterator.hasNext()) {
String arg = arguIterator.next(); String arg = arguIterator.next();
if ("-list-keys".equals(arg) || "-lk".equals(arg)) { if ("-list-keys".equals(arg) || "-lk".equals(arg)) {
System.out.println(task.getName()+" config keys;"); System.out.println(task.getName() + " config keys;");
SAX3PropertyConfig config = task.createTaskConfig(); SAX3PropertyConfig config = task.createTaskConfig();
for (String key:config.getPropertyKeys()) { for (String key : config.getPropertyKeys()) {
Class<?> keyType = config.getPropertyType(key); Class<?> keyType = config.getPropertyType(key);
Object valueDefault = config.getPropertyDefault(key); Object valueDefault = config.getPropertyDefault(key);
String def = ""; String def = "";
if (valueDefault!=null) { if (valueDefault != null) {
def = "(default=\""+unescapeDefault(valueDefault.toString())+"\")"; def = "(default=\"" + unescapeDefault(valueDefault.toString()) + "\")";
} }
if (config.isPropertyRequired(key)) { if (config.isPropertyRequired(key)) {
def = "(required=\"true\")"; def = "(required=\"true\")";
} }
System.out.println(String.format("%1$-65s - %2$-8s %3$s", key,keyType.getSimpleName(),def)); System.out.println(String.format("%1$-65s - %2$-8s %3$s", key, keyType.getSimpleName(), def));
} }
System.out.println(); System.out.println();
System.exit(0); System.exit(0);
@ -194,16 +194,19 @@ public class X4OTaskCommandLine {
} }
private String unescapeDefault(String defaultValue) { private String unescapeDefault(String defaultValue) {
StringBuilder buf = new StringBuilder(defaultValue.length()+10); StringBuilder buf = new StringBuilder(defaultValue.length() + 10);
for (char c:defaultValue.toCharArray()) { for (char c : defaultValue.toCharArray()) {
if (c=='\n') { if (c == '\n') {
buf.append("\\n");continue; buf.append("\\n");
continue;
} }
if (c=='\t') { if (c == '\t') {
buf.append("\\t");continue; buf.append("\\t");
continue;
} }
if (c=='\r') { if (c == '\r') {
buf.append("\\r");continue; buf.append("\\r");
continue;
} }
buf.append(c); buf.append(c);
} }
@ -214,15 +217,15 @@ public class X4OTaskCommandLine {
while (arguIterator.hasNext()) { while (arguIterator.hasNext()) {
String arg = arguIterator.next(); String arg = arguIterator.next();
if ("-language".equals(arg) || "-l".equals(arg)) { if ("-language".equals(arg) || "-l".equals(arg)) {
if (arguIterator.hasNext()==false) { if (arguIterator.hasNext() == false) {
systemErrExit("No argument for "+arg+" given."); systemErrExit("No argument for " + arg + " given.");
} }
String languageName = arguIterator.next(); String languageName = arguIterator.next();
driver = X4ODriverManager.getX4ODriver(languageName); driver = X4ODriverManager.getX4ODriver(languageName);
break; break;
} }
} }
if (driver==null) { if (driver == null) {
systemErrExit("No -language or -l argument with language given."); systemErrExit("No -language or -l argument with language given.");
} }
} }
@ -231,15 +234,15 @@ public class X4OTaskCommandLine {
while (arguIterator.hasNext()) { while (arguIterator.hasNext()) {
String arg = arguIterator.next(); String arg = arguIterator.next();
if ("-task".equals(arg) || "-t".equals(arg)) { if ("-task".equals(arg) || "-t".equals(arg)) {
if (arguIterator.hasNext()==false) { if (arguIterator.hasNext() == false) {
systemErrExit("No argument for "+arg+" given."); systemErrExit("No argument for " + arg + " given.");
} }
String taskId = arguIterator.next(); String taskId = arguIterator.next();
task = driver.getLanguageTask(taskId); task = driver.getLanguageTask(taskId);
break; break;
} }
} }
if (task==null) { if (task == null) {
systemErrExit("No -task or -t argument with task given."); systemErrExit("No -task or -t argument with task given.");
} }
} }
@ -249,15 +252,15 @@ public class X4OTaskCommandLine {
while (arguIterator.hasNext()) { while (arguIterator.hasNext()) {
String arg = arguIterator.next(); String arg = arguIterator.next();
if ("-property".equals(arg) || "-p".equals(arg)) { if ("-property".equals(arg) || "-p".equals(arg)) {
if (arguIterator.hasNext()==false) { if (arguIterator.hasNext() == false) {
systemErrExit("No argument for "+arg+" given."); systemErrExit("No argument for " + arg + " given.");
} }
String valuePair = arguIterator.next(); String valuePair = arguIterator.next();
String[] values = valuePair.split("="); String[] values = valuePair.split("=");
if (values.length==1) { if (values.length == 1) {
systemErrExit("No property value given for key "+valuePair); systemErrExit("No property value given for key " + valuePair);
} }
config.setPropertyParsedValue(values[0],values[1]); config.setPropertyParsedValue(values[0], values[1]);
} }
} }
} }
@ -266,24 +269,24 @@ public class X4OTaskCommandLine {
while (arguIterator.hasNext()) { while (arguIterator.hasNext()) {
String arg = arguIterator.next(); String arg = arguIterator.next();
if ("-load-props".equals(arg) || "-lp".equals(arg)) { if ("-load-props".equals(arg) || "-lp".equals(arg)) {
if (arguIterator.hasNext()==false) { if (arguIterator.hasNext() == false) {
systemErrExit("No argument for "+arg+" given."); systemErrExit("No argument for " + arg + " given.");
} }
loadProperties(arguIterator.next(),false); loadProperties(arguIterator.next(), false);
} }
if ("-load-props-xml".equals(arg) || "-lpx".equals(arg)) { if ("-load-props-xml".equals(arg) || "-lpx".equals(arg)) {
if (arguIterator.hasNext()==false) { if (arguIterator.hasNext() == false) {
systemErrExit("No argument for "+arg+" given."); systemErrExit("No argument for " + arg + " given.");
} }
loadProperties(arguIterator.next(),true); loadProperties(arguIterator.next(), true);
} }
} }
} }
private void loadProperties(String file,boolean isXml) { private void loadProperties(String file, boolean isXml) {
File propFile = new File(file); File propFile = new File(file);
if (!propFile.exists()) { if (!propFile.exists()) {
systemErrExit("File does not exsits; "+propFile); systemErrExit("File does not exsits; " + propFile);
} }
Properties p = new Properties(); Properties p = new Properties();
InputStream in = null; InputStream in = null;
@ -294,13 +297,13 @@ public class X4OTaskCommandLine {
} else { } else {
p.load(in); p.load(in);
} }
for (Object keyObj:p.keySet()) { for (Object keyObj : p.keySet()) {
String key = keyObj.toString(); String key = keyObj.toString();
String value = p.getProperty(key); String value = p.getProperty(key);
config.setPropertyParsedValue(key, value); config.setPropertyParsedValue(key, value);
} }
} catch (IOException e) { } catch (IOException e) {
systemErrExit("Fatal-Error: "+e.getMessage()); systemErrExit("Fatal-Error: " + e.getMessage());
} finally { } finally {
try { try {
in.close(); in.close();

View file

@ -66,22 +66,23 @@ public class X4OTaskProperty {
/** /**
* Parsed line like 'key=value' into a X4OTaskProperty object. * Parsed line like 'key=value' into a X4OTaskProperty object.
* @param line The text line to parse. *
* @return The filled X4OTaskProperty. * @param line The text line to parse.
* @return The filled X4OTaskProperty.
*/ */
static public X4OTaskProperty parseLine(String line) { static public X4OTaskProperty parseLine(String line) {
if (line==null) { if (line == null) {
throw new NullPointerException("Can't parse null line."); throw new NullPointerException("Can't parse null line.");
} }
int idx = line.indexOf('='); int idx = line.indexOf('=');
if (idx<0) { if (idx < 0) {
throw new IllegalArgumentException("Can't parse line with '=' sign."); throw new IllegalArgumentException("Can't parse line with '=' sign.");
} }
if (idx==line.length()) { if (idx == line.length()) {
throw new IllegalArgumentException("Can't parse line empty value."); throw new IllegalArgumentException("Can't parse line empty value.");
} }
String key = line.substring(0,idx); String key = line.substring(0, idx);
String value = line.substring(idx+1); String value = line.substring(idx + 1);
X4OTaskProperty result = new X4OTaskProperty(); X4OTaskProperty result = new X4OTaskProperty();
result.setKey(key); result.setKey(key);
result.setValue(value); result.setValue(value);

View file

@ -37,8 +37,7 @@ import org.x4o.xml.lang.task.X4OLanguageTaskException;
import org.x4o.xml.lang.task.X4OLanguageTaskExecutor; import org.x4o.xml.lang.task.X4OLanguageTaskExecutor;
/** /**
* X4OTaskRunner finds all x4o objects and configs and then run the x4o langauge * X4OTaskRunner finds all x4o objects and configs and then run the x4o langauge task.
* task.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Aug 30, 2013 * @version 1.0 Aug 30, 2013

View file

@ -41,23 +41,23 @@ public class X4ODriverManagerTest {
@Test @Test
public void testDefaultLanguageVersionSelect() throws Exception { public void testDefaultLanguageVersionSelect() throws Exception {
String version = X4ODriverManager.getDefaultLanguageVersion(new String[]{"1.0","2.0","3.0"}); String version = X4ODriverManager.getDefaultLanguageVersion(new String[] { "1.0", "2.0", "3.0" });
Assertions.assertNotNull(version); Assertions.assertNotNull(version);
Assertions.assertEquals("3.0",version); Assertions.assertEquals("3.0", version);
} }
@Test @Test
public void testDefaultLanguageVersionEmpty() throws Exception { public void testDefaultLanguageVersionEmpty() throws Exception {
String version = X4ODriverManager.getDefaultLanguageVersion(new String[]{}); String version = X4ODriverManager.getDefaultLanguageVersion(new String[] {});
Assertions.assertNotNull(version); Assertions.assertNotNull(version);
Assertions.assertEquals(X4ODriver.DEFAULT_LANGUAGE_VERSION,version); Assertions.assertEquals(X4ODriver.DEFAULT_LANGUAGE_VERSION, version);
} }
@Test @Test
public void testDefaultLanguageVersionNull() throws Exception { public void testDefaultLanguageVersionNull() throws Exception {
String version = X4ODriverManager.getDefaultLanguageVersion(null); String version = X4ODriverManager.getDefaultLanguageVersion(null);
Assertions.assertNotNull(version); Assertions.assertNotNull(version);
Assertions.assertEquals(X4ODriver.DEFAULT_LANGUAGE_VERSION,version); Assertions.assertEquals(X4ODriver.DEFAULT_LANGUAGE_VERSION, version);
} }
@Test @Test
@ -101,17 +101,14 @@ public class X4ODriverManagerTest {
e = catchE; e = catchE;
} }
Assertions.assertNotNull(e); Assertions.assertNotNull(e);
/* TODO /*
assertNotNull(e); * TODO assertNotNull(e); assertNotNull(e.getCause()); assertNotNull(e.getCause().getCause()); assertEquals(X4OPhaseException.class,
assertNotNull(e.getCause()); * e.getCause().getClass()); assertEquals(X4OLanguageLoaderException.class, e.getCause().getCause().getClass());
assertNotNull(e.getCause().getCause()); * assertTrue("Error message string is missing language",e.getMessage().contains("language"));
assertEquals(X4OPhaseException.class, e.getCause().getClass()); * assertTrue("Error message string is missing test",e.getMessage().contains("test"));
assertEquals(X4OLanguageLoaderException.class, e.getCause().getCause().getClass()); * assertTrue("Error message string is missing modules",e.getMessage().contains("modules"));
assertTrue("Error message string is missing language",e.getMessage().contains("language")); * assertTrue("Error message string is missing 2.0",e.getMessage().contains("2.0"));
assertTrue("Error message string is missing test",e.getMessage().contains("test")); */
assertTrue("Error message string is missing modules",e.getMessage().contains("modules"));
assertTrue("Error message string is missing 2.0",e.getMessage().contains("2.0"));
*/
} }
@Test @Test
@ -133,11 +130,11 @@ public class X4ODriverManagerTest {
@Test @Test
public void testLanguagesLoopSpeed() throws Exception { public void testLanguagesLoopSpeed() throws Exception {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
for (int i=0;i<100;i++) { for (int i = 0; i < 100; i++) {
testLanguageCount(); testLanguageCount();
} }
long loopTime = System.currentTimeMillis() - startTime; long loopTime = System.currentTimeMillis() - startTime;
Assertions.assertEquals(true, loopTime<500, "Language list loop is slow;"+loopTime); Assertions.assertEquals(true, loopTime < 500, "Language list loop is slow;" + loopTime);
} }
@Test @Test
@ -158,8 +155,15 @@ public class X4ODriverManagerTest {
Exception e = null; Exception e = null;
try { try {
X4ODriverManager.registerX4ODriver(new X4ODriver<Object>() { X4ODriverManager.registerX4ODriver(new X4ODriver<Object>() {
@Override public String[] getLanguageVersions() { return new String[]{"1.0"}; } @Override
@Override public String getLanguageName() { return null; } public String[] getLanguageVersions() {
return new String[] { "1.0" };
}
@Override
public String getLanguageName() {
return null;
}
}); });
} catch (Exception catchE) { } catch (Exception catchE) {
@ -175,8 +179,15 @@ public class X4ODriverManagerTest {
Exception e = null; Exception e = null;
try { try {
X4ODriverManager.registerX4ODriver(new X4ODriver<Object>() { X4ODriverManager.registerX4ODriver(new X4ODriver<Object>() {
@Override public String[] getLanguageVersions() { return new String[]{"1.0"}; } @Override
@Override public String getLanguageName() { return ""; } public String[] getLanguageVersions() {
return new String[] { "1.0" };
}
@Override
public String getLanguageName() {
return "";
}
}); });
} catch (Exception catchE) { } catch (Exception catchE) {
@ -192,8 +203,15 @@ public class X4ODriverManagerTest {
Exception e = null; Exception e = null;
try { try {
X4ODriverManager.registerX4ODriver(new X4ODriver<Object>() { X4ODriverManager.registerX4ODriver(new X4ODriver<Object>() {
@Override public String[] getLanguageVersions() { return null; } @Override
@Override public String getLanguageName() { return "junit-driver-test"; } public String[] getLanguageVersions() {
return null;
}
@Override
public String getLanguageName() {
return "junit-driver-test";
}
}); });
} catch (Exception catchE) { } catch (Exception catchE) {
@ -209,8 +227,15 @@ public class X4ODriverManagerTest {
Exception e = null; Exception e = null;
try { try {
X4ODriverManager.registerX4ODriver(new X4ODriver<Object>() { X4ODriverManager.registerX4ODriver(new X4ODriver<Object>() {
@Override public String[] getLanguageVersions() { return new String[]{}; } @Override
@Override public String getLanguageName() { return "junit-driver-test"; } public String[] getLanguageVersions() {
return new String[] {};
}
@Override
public String getLanguageName() {
return "junit-driver-test";
}
}); });
} catch (Exception catchE) { } catch (Exception catchE) {
@ -239,8 +264,15 @@ public class X4ODriverManagerTest {
Exception e = null; Exception e = null;
try { try {
X4ODriverManager.deregisterX4ODriver(new X4ODriver<Object>() { X4ODriverManager.deregisterX4ODriver(new X4ODriver<Object>() {
@Override public String[] getLanguageVersions() { return new String[]{"1.0"}; } @Override
@Override public String getLanguageName() { return null; } public String[] getLanguageVersions() {
return new String[] { "1.0" };
}
@Override
public String getLanguageName() {
return null;
}
}); });
} catch (Exception catchE) { } catch (Exception catchE) {
@ -256,8 +288,15 @@ public class X4ODriverManagerTest {
Exception e = null; Exception e = null;
try { try {
X4ODriver<?> driver = new X4ODriver<Object>() { X4ODriver<?> driver = new X4ODriver<Object>() {
@Override public String[] getLanguageVersions() { return new String[]{"1.0"}; } @Override
@Override public String getLanguageName() { return "junit-driver-test"; } public String[] getLanguageVersions() {
return new String[] { "1.0" };
}
@Override
public String getLanguageName() {
return "junit-driver-test";
}
}; };
X4ODriverManager.registerX4ODriver(driver); X4ODriverManager.registerX4ODriver(driver);
Assertions.assertEquals(driver.hashCode(), X4ODriverManager.getX4ODriver("junit-driver-test").hashCode()); Assertions.assertEquals(driver.hashCode(), X4ODriverManager.getX4ODriver("junit-driver-test").hashCode());

View file

@ -46,7 +46,7 @@ public class DefaultObjectConverterProviderTest {
@Test @Test
public void testConverterClone() throws Exception { public void testConverterClone() throws Exception {
DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true); DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true);
for (ObjectConverter conv:p.getObjectConverters()) { for (ObjectConverter conv : p.getObjectConverters()) {
Assertions.assertNotNull(conv); Assertions.assertNotNull(conv);
ObjectConverter clone = conv.clone(); ObjectConverter clone = conv.clone();
Assertions.assertNotNull(clone); Assertions.assertNotNull(clone);
@ -60,12 +60,12 @@ public class DefaultObjectConverterProviderTest {
Assertions.assertNotNull(conv); Assertions.assertNotNull(conv);
Object result = conv.convertTo("true", locale); Object result = conv.convertTo("true", locale);
Assertions.assertNotNull(result); Assertions.assertNotNull(result);
Assertions.assertEquals(Boolean.class,result.getClass(), "Result is not Boolean.class"); Assertions.assertEquals(Boolean.class, result.getClass(), "Result is not Boolean.class");
Assertions.assertEquals(true,result, "Result is not true"); Assertions.assertEquals(true, result, "Result is not true");
Object resultBack = conv.convertBack(result, locale); Object resultBack = conv.convertBack(result, locale);
Assertions.assertNotNull(resultBack); Assertions.assertNotNull(resultBack);
Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class"); Assertions.assertEquals(String.class, resultBack.getClass(), "resultBack is not String.class");
Assertions.assertEquals("true",resultBack, "resultBack is not true"); Assertions.assertEquals("true", resultBack, "resultBack is not true");
} }
@Test @Test
@ -75,12 +75,12 @@ public class DefaultObjectConverterProviderTest {
Assertions.assertNotNull(conv); Assertions.assertNotNull(conv);
Object result = conv.convertTo("123", locale); Object result = conv.convertTo("123", locale);
Assertions.assertNotNull(result); Assertions.assertNotNull(result);
Assertions.assertEquals(Integer.class,result.getClass(), "Result is not Integer.class"); Assertions.assertEquals(Integer.class, result.getClass(), "Result is not Integer.class");
Assertions.assertEquals(123,result, "Result is not 123"); Assertions.assertEquals(123, result, "Result is not 123");
Object resultBack = conv.convertBack(result, locale); Object resultBack = conv.convertBack(result, locale);
Assertions.assertNotNull(resultBack); Assertions.assertNotNull(resultBack);
Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class"); Assertions.assertEquals(String.class, resultBack.getClass(), "resultBack is not String.class");
Assertions.assertEquals("123",resultBack, "resultBack is not 123"); Assertions.assertEquals("123", resultBack, "resultBack is not 123");
} }
@Test @Test
@ -90,12 +90,12 @@ public class DefaultObjectConverterProviderTest {
Assertions.assertNotNull(conv); Assertions.assertNotNull(conv);
Object result = conv.convertTo("123.23", locale); Object result = conv.convertTo("123.23", locale);
Assertions.assertNotNull(result); Assertions.assertNotNull(result);
Assertions.assertEquals(Float.class,result.getClass(), "Result is not Float.class"); Assertions.assertEquals(Float.class, result.getClass(), "Result is not Float.class");
Assertions.assertEquals(123.23F,result, "Result is not 123.23"); Assertions.assertEquals(123.23F, result, "Result is not 123.23");
Object resultBack = conv.convertBack(result, locale); Object resultBack = conv.convertBack(result, locale);
Assertions.assertNotNull(resultBack); Assertions.assertNotNull(resultBack);
Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class"); Assertions.assertEquals(String.class, resultBack.getClass(), "resultBack is not String.class");
Assertions.assertEquals("123.23",resultBack, "resultBack is not 123.23"); Assertions.assertEquals("123.23", resultBack, "resultBack is not 123.23");
} }
@Test @Test
@ -105,12 +105,12 @@ public class DefaultObjectConverterProviderTest {
Assertions.assertNotNull(conv); Assertions.assertNotNull(conv);
Object result = conv.convertTo("12323", locale); Object result = conv.convertTo("12323", locale);
Assertions.assertNotNull(result); Assertions.assertNotNull(result);
Assertions.assertEquals(Long.class,result.getClass(), "Result is not Long.class"); Assertions.assertEquals(Long.class, result.getClass(), "Result is not Long.class");
Assertions.assertEquals(12323L,result, "Result is not 12323"); Assertions.assertEquals(12323L, result, "Result is not 12323");
Object resultBack = conv.convertBack(result, locale); Object resultBack = conv.convertBack(result, locale);
Assertions.assertNotNull(resultBack); Assertions.assertNotNull(resultBack);
Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class"); Assertions.assertEquals(String.class, resultBack.getClass(), "resultBack is not String.class");
Assertions.assertEquals("12323",resultBack, "resultBack is not 12323"); Assertions.assertEquals("12323", resultBack, "resultBack is not 12323");
} }
@Test @Test
@ -120,12 +120,12 @@ public class DefaultObjectConverterProviderTest {
Assertions.assertNotNull(conv); Assertions.assertNotNull(conv);
Object result = conv.convertTo("1232.3", locale); Object result = conv.convertTo("1232.3", locale);
Assertions.assertNotNull(result); Assertions.assertNotNull(result);
Assertions.assertEquals(Double.class,result.getClass(), "Result is not Double.class"); Assertions.assertEquals(Double.class, result.getClass(), "Result is not Double.class");
Assertions.assertEquals(1232.3D,result, "Result is not 1232.3"); Assertions.assertEquals(1232.3D, result, "Result is not 1232.3");
Object resultBack = conv.convertBack(result, locale); Object resultBack = conv.convertBack(result, locale);
Assertions.assertNotNull(resultBack); Assertions.assertNotNull(resultBack);
Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class"); Assertions.assertEquals(String.class, resultBack.getClass(), "resultBack is not String.class");
Assertions.assertEquals("1232.3",resultBack, "resultBack is not 1232.3"); Assertions.assertEquals("1232.3", resultBack, "resultBack is not 1232.3");
} }
@Test @Test
@ -135,12 +135,12 @@ public class DefaultObjectConverterProviderTest {
Assertions.assertNotNull(conv); Assertions.assertNotNull(conv);
Object result = conv.convertTo("http://www.x4o.org", locale); Object result = conv.convertTo("http://www.x4o.org", locale);
Assertions.assertNotNull(result); Assertions.assertNotNull(result);
Assertions.assertEquals(URL.class,result.getClass(), "Result is not Url.class"); Assertions.assertEquals(URL.class, result.getClass(), "Result is not Url.class");
Assertions.assertEquals(new URL("http://www.x4o.org"),result, "Result is not http://www.x4o.org"); Assertions.assertEquals(new URL("http://www.x4o.org"), result, "Result is not http://www.x4o.org");
Object resultBack = conv.convertBack(result, locale); Object resultBack = conv.convertBack(result, locale);
Assertions.assertNotNull(resultBack); Assertions.assertNotNull(resultBack);
Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class"); Assertions.assertEquals(String.class, resultBack.getClass(), "resultBack is not String.class");
Assertions.assertEquals("http://www.x4o.org",resultBack, "resultBack is not http://www.x4o.org"); Assertions.assertEquals("http://www.x4o.org", resultBack, "resultBack is not http://www.x4o.org");
} }
@Test @Test
@ -179,7 +179,7 @@ public class DefaultObjectConverterProviderTest {
Exception e = null; Exception e = null;
try { try {
conv.convertTo("nonEnumError", locale); conv.convertTo("nonEnumError", locale);
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
@ -193,7 +193,7 @@ public class DefaultObjectConverterProviderTest {
EnumConverter conv = new EnumConverter(); EnumConverter conv = new EnumConverter();
Exception e = null; Exception e = null;
try { try {
conv.convertTo("nonEnumError", locale); conv.convertTo("nonEnumError", locale);
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }

View file

@ -49,11 +49,11 @@ public class AttributeBeanTest {
TestObjectRoot root = reader.readResource("tests/attributes/test-body.xml"); TestObjectRoot root = reader.readResource("tests/attributes/test-body.xml");
Assertions.assertNotNull(root); Assertions.assertNotNull(root);
List<TestObjectChild> childs = root.getTestObjectChilds(); List<TestObjectChild> childs = root.getTestObjectChilds();
Assertions.assertEquals(2,childs.size()); Assertions.assertEquals(2, childs.size());
TestObjectChild child0 = childs.get(0); TestObjectChild child0 = childs.get(0);
TestObjectChild child1 = childs.get(1); TestObjectChild child1 = childs.get(1);
Assertions.assertEquals("attr-name-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕",child0.getName()); Assertions.assertEquals("attr-name-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕", child0.getName());
Assertions.assertEquals("body-name-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕",child1.getName()); Assertions.assertEquals("body-name-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕", child1.getName());
} }
@Test @Test
@ -68,35 +68,35 @@ public class AttributeBeanTest {
TestBean b = root.getTestBeans().get(0); TestBean b = root.getTestBeans().get(0);
TestBean beanPublic = root.getTestBeans().get(1); TestBean beanPublic = root.getTestBeans().get(1);
Assertions.assertEquals(123 ,0+ b.getPrivateIntegerTypeField()); Assertions.assertEquals(123, 0 + b.getPrivateIntegerTypeField());
Assertions.assertEquals(123 ,0+ b.getPrivateIntegerObjectField()); Assertions.assertEquals(123, 0 + b.getPrivateIntegerObjectField());
Assertions.assertEquals(123l ,0+ b.getPrivateLongTypeField()); Assertions.assertEquals(123l, 0 + b.getPrivateLongTypeField());
Assertions.assertEquals(123l ,0+ b.getPrivateLongObjectField()); Assertions.assertEquals(123l, 0 + b.getPrivateLongObjectField());
Assertions.assertEquals(123.45d ,0+ b.getPrivateDoubleTypeField()); Assertions.assertEquals(123.45d, 0 + b.getPrivateDoubleTypeField());
Assertions.assertEquals(123.45d ,0+ b.getPrivateDoubleObjectField()); Assertions.assertEquals(123.45d, 0 + b.getPrivateDoubleObjectField());
Assertions.assertEquals(123.45f ,0+ b.getPrivateFloatTypeField()); Assertions.assertEquals(123.45f, 0 + b.getPrivateFloatTypeField());
Assertions.assertEquals(123.45f ,0+ b.getPrivateFloatObjectField()); Assertions.assertEquals(123.45f, 0 + b.getPrivateFloatObjectField());
Assertions.assertEquals(67 ,0+ b.getPrivateByteTypeField()); Assertions.assertEquals(67, 0 + b.getPrivateByteTypeField());
Assertions.assertEquals(67 ,0+ b.getPrivateByteObjectField()); Assertions.assertEquals(67, 0 + b.getPrivateByteObjectField());
Assertions.assertEquals(true, b.isPrivateBooleanTypeField()); Assertions.assertEquals(true, b.isPrivateBooleanTypeField());
Assertions.assertEquals(new Boolean(true), b.getPrivateBooleanObjectField()); Assertions.assertEquals(new Boolean(true), b.getPrivateBooleanObjectField());
Assertions.assertEquals('W' ,0+ b.getPrivateCharTypeField()); Assertions.assertEquals('W', 0 + b.getPrivateCharTypeField());
Assertions.assertEquals('C' ,0+ b.getPrivateCharObjectField()); Assertions.assertEquals('C', 0 + b.getPrivateCharObjectField());
Assertions.assertEquals("x4o-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕" ,b.getPrivateStringObjectField()); Assertions.assertEquals("x4o-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕", b.getPrivateStringObjectField());
//Assertions.assertEquals("x4o-ᒡᒢᑊᒻᒻᓫᔿ" ,b.getPrivateStringObjectFieldUnicodeᒡᒢᑊᒻᒻᓫᔿ()); // SAX fails // Assertions.assertEquals("x4o-ᒡᒢᑊᒻᒻᓫᔿ" ,b.getPrivateStringObjectFieldUnicodeᒡᒢᑊᒻᒻᓫᔿ()); // SAX fails
Assertions.assertEquals("x4o-仙上主天" ,b.getPrivateStringObjectFieldUnicode仙上主天()); Assertions.assertEquals("x4o-仙上主天", b.getPrivateStringObjectFieldUnicode仙上主天());
//TODO: add again: assertEquals(true ,null!=b.getPrivateDateObjectField()); // TODO: add again: assertEquals(true ,null!=b.getPrivateDateObjectField());
Assertions.assertEquals("x4o-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕" ,beanPublic.publicStringObjectField); Assertions.assertEquals("x4o-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕", beanPublic.publicStringObjectField);
//Assertions.assertEquals("x4o-ᒡᒢᑊᒻᒻᓫᔿ" ,beanPublic.publicStringObjectFieldUnicodeᒡᒢᑊᒻᒻᓫᔿ); // SAX fails // Assertions.assertEquals("x4o-ᒡᒢᑊᒻᒻᓫᔿ" ,beanPublic.publicStringObjectFieldUnicodeᒡᒢᑊᒻᒻᓫᔿ); // SAX fails
Assertions.assertEquals("x4o-仙上主天" ,beanPublic.publicStringObjectFieldUnicode仙上主天); Assertions.assertEquals("x4o-仙上主天", beanPublic.publicStringObjectFieldUnicode仙上主天);
} }
} }

View file

@ -50,7 +50,7 @@ public class EmptyXmlTest {
Assertions.assertEquals(true, e.getMessage().contains("non-excisting-file.xml")); Assertions.assertEquals(true, e.getMessage().contains("non-excisting-file.xml"));
return; return;
} }
Assertions.assertEquals(true,false); Assertions.assertEquals(true, false);
} }
@Test @Test
@ -60,10 +60,10 @@ public class EmptyXmlTest {
try { try {
reader.readResource("tests/empty-xml/non-excisting-resource.xml"); reader.readResource("tests/empty-xml/non-excisting-resource.xml");
} catch (NullPointerException e) { } catch (NullPointerException e) {
Assertions.assertEquals(true,e.getMessage().contains("Could not find resource")); Assertions.assertEquals(true, e.getMessage().contains("Could not find resource"));
return; return;
} }
Assertions.assertEquals(true,false); Assertions.assertEquals(true, false);
} }
@Test @Test
@ -76,7 +76,7 @@ public class EmptyXmlTest {
// Assertions.assertEquals("No ElementNamespace found for empty namespace.", e.getMessage()); // Assertions.assertEquals("No ElementNamespace found for empty namespace.", e.getMessage());
return; return;
} }
Assertions.assertEquals(true,false); Assertions.assertEquals(true, false);
} }
@Test @Test
@ -86,10 +86,10 @@ public class EmptyXmlTest {
try { try {
reader.readResource("tests/empty-xml/empty-real.xml"); reader.readResource("tests/empty-xml/empty-real.xml");
} catch (SAXException e) { } catch (SAXException e) {
Assertions.assertEquals(true,e.getMessage().contains("Premature end of file.")); Assertions.assertEquals(true, e.getMessage().contains("Premature end of file."));
return; return;
} }
Assertions.assertEquals(true,false); Assertions.assertEquals(true, false);
} }
@Test @Test
@ -100,13 +100,13 @@ public class EmptyXmlTest {
reader.readResource("tests/empty-xml/empty-xml.xml"); reader.readResource("tests/empty-xml/empty-xml.xml");
} catch (SAXException e) { } catch (SAXException e) {
boolean hasError = e.getMessage().contains("Premature end of file."); // java6+ sax message boolean hasError = e.getMessage().contains("Premature end of file."); // java6+ sax message
if (hasError==false) { if (hasError == false) {
hasError = e.getMessage().contains("A well-formed document requires a root element."); // xercesImpl sax message hasError = e.getMessage().contains("A well-formed document requires a root element."); // xercesImpl sax message
} }
Assertions.assertEquals(true,hasError); Assertions.assertEquals(true, hasError);
return; return;
} }
Assertions.assertEquals(true,false); Assertions.assertEquals(true, false);
} }
@Test @Test
@ -120,9 +120,9 @@ public class EmptyXmlTest {
TestObjectRoot root = reader.readResource("tests/empty-xml/empty-x4o.xml"); TestObjectRoot root = reader.readResource("tests/empty-xml/empty-x4o.xml");
Assertions.assertNotNull(root); Assertions.assertNotNull(root);
Assertions.assertEquals(true,root.getTestBeans().isEmpty()); Assertions.assertEquals(true, root.getTestBeans().isEmpty());
Assertions.assertEquals(true,root.getTestObjectChilds().isEmpty()); Assertions.assertEquals(true, root.getTestObjectChilds().isEmpty());
Assertions.assertEquals(true,root.getTestObjectParents().isEmpty()); Assertions.assertEquals(true, root.getTestObjectParents().isEmpty());
Assertions.assertEquals(true,root.getTestObjects().isEmpty()); Assertions.assertEquals(true, root.getTestObjects().isEmpty());
} }
} }

View file

@ -46,7 +46,7 @@ public class NamespaceUriTest {
reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE); reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE);
try (X4OLanguageSession session = reader.createLanguageSession()) { try (X4OLanguageSession session = reader.createLanguageSession()) {
reader.readResourceSession(session, "tests/namespace/uri-simple.xml"); reader.readResourceSession(session, "tests/namespace/uri-simple.xml");
Assertions.assertEquals(true,session.getRootElement().getChilderen().size()==1); Assertions.assertEquals(true, session.getRootElement().getChilderen().size() == 1);
} }
} }
@ -58,7 +58,7 @@ public class NamespaceUriTest {
reader.setProperty(DefaultX4OReader.DOC_EMPTY_NAMESPACE_URI, "http://test.junit.x4o.org/xml/ns/junit-test-lang"); reader.setProperty(DefaultX4OReader.DOC_EMPTY_NAMESPACE_URI, "http://test.junit.x4o.org/xml/ns/junit-test-lang");
try (X4OLanguageSession session = reader.createLanguageSession()) { try (X4OLanguageSession session = reader.createLanguageSession()) {
reader.readResourceSession(session, "tests/namespace/uri-empty.xml"); reader.readResourceSession(session, "tests/namespace/uri-empty.xml");
Assertions.assertEquals(true,session.getRootElement().getChilderen().size()==1); Assertions.assertEquals(true, session.getRootElement().getChilderen().size() == 1);
} }
} }
@ -69,7 +69,7 @@ public class NamespaceUriTest {
reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE); reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE);
try (X4OLanguageSession session = reader.createLanguageSession()) { try (X4OLanguageSession session = reader.createLanguageSession()) {
reader.readResourceSession(session, "tests/namespace/uri-schema.xml"); reader.readResourceSession(session, "tests/namespace/uri-schema.xml");
Assertions.assertEquals(true,session.getRootElement().getChilderen().size()==1); Assertions.assertEquals(true, session.getRootElement().getChilderen().size() == 1);
} }
} }
} }

View file

@ -60,7 +60,7 @@ public class X4ODebugWriterTest {
} }
static public String readFile(File file) throws IOException { static public String readFile(File file) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file),Charset.forName("UTF-8"))); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), Charset.forName("UTF-8")));
try { try {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
String line = br.readLine(); String line = br.readLine();
@ -70,7 +70,7 @@ public class X4ODebugWriterTest {
line = br.readLine(); line = br.readLine();
} }
String out = sb.toString(); String out = sb.toString();
//System.out.println(out); // System.out.println(out);
return out; return out;
} finally { } finally {
br.close(); br.close();
@ -93,11 +93,11 @@ public class X4ODebugWriterTest {
Assertions.assertTrue(debugFile.exists(), "Debug file does not exists."); Assertions.assertTrue(debugFile.exists(), "Debug file does not exists.");
String debug = readFile(debugFile); String debug = readFile(debugFile);
Assertions.assertNotNull(debug); Assertions.assertNotNull(debug);
Assertions.assertFalse(debug.length()==0, "no debug content"); Assertions.assertFalse(debug.length() == 0, "no debug content");
Assertions.assertTrue(debug.length()>20, "debug content to small"); Assertions.assertTrue(debug.length() > 20, "debug content to small");
//System.out.println("=================== Reader Output ======================"); // System.out.println("=================== Reader Output ======================");
//System.out.println(debug); // System.out.println(debug);
debugFile.delete(); debugFile.delete();
} }
@ -118,11 +118,11 @@ public class X4ODebugWriterTest {
Assertions.assertTrue(debugFile.exists(), "Debug file does not exists."); Assertions.assertTrue(debugFile.exists(), "Debug file does not exists.");
String debug = readFile(debugFile); String debug = readFile(debugFile);
Assertions.assertNotNull(debug); Assertions.assertNotNull(debug);
Assertions.assertFalse(debug.length()==0, "no debug content"); Assertions.assertFalse(debug.length() == 0, "no debug content");
Assertions.assertTrue(debug.length()>20, "debug content to small"); Assertions.assertTrue(debug.length() > 20, "debug content to small");
//System.out.println("=================== Writer Output ======================"); // System.out.println("=================== Writer Output ======================");
//System.out.println(debug); // System.out.println(debug);
debugFile.delete(); debugFile.delete();
} }
} }

View file

@ -52,7 +52,7 @@ public class X4OEntityResolverTest {
public void testElementLangugeNull() throws Exception { public void testElementLangugeNull() throws Exception {
Exception e = null; Exception e = null;
try { try {
new X4OEntityResolver(null,null); new X4OEntityResolver(null, null);
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
@ -68,7 +68,7 @@ public class X4OEntityResolverTest {
try (X4OLanguageSession session = language.createLanguageSession()) { try (X4OLanguageSession session = language.createLanguageSession()) {
X4OLanguageLocal.class.cast(language).init(session); X4OLanguageLocal.class.cast(language).init(session);
X4OEntityResolver resolver = new X4OEntityResolver(session, DefaultX4OReader.DEFAULT_PROPERTY_CONFIG); X4OEntityResolver resolver = new X4OEntityResolver(session, DefaultX4OReader.DEFAULT_PROPERTY_CONFIG);
InputSource input = resolver.resolveEntity("","http://cel.x4o.org/xml/ns/cel-root-1.0.xsd"); InputSource input = resolver.resolveEntity("", "http://cel.x4o.org/xml/ns/cel-root-1.0.xsd");
Assertions.assertNotNull(input); Assertions.assertNotNull(input);
} }
} }
@ -77,10 +77,10 @@ public class X4OEntityResolverTest {
public void testResolveMissing() throws Exception { public void testResolveMissing() throws Exception {
X4ODriver<TestObjectRoot> driver = new TestDriver(); X4ODriver<TestObjectRoot> driver = new TestDriver();
// NOTE: this session is not inited, see fix code above. // NOTE: this session is not inited, see fix code above.
X4OEntityResolver resolver = new X4OEntityResolver(driver.createLanguage().createLanguageSession(),DefaultX4OReader.DEFAULT_PROPERTY_CONFIG); X4OEntityResolver resolver = new X4OEntityResolver(driver.createLanguage().createLanguageSession(), DefaultX4OReader.DEFAULT_PROPERTY_CONFIG);
Exception e = null; Exception e = null;
try { try {
resolver.resolveEntity("","http://cel.x4o.org/xml/ns/cel-root-1.0.xsd-missing-resource"); resolver.resolveEntity("", "http://cel.x4o.org/xml/ns/cel-root-1.0.xsd-missing-resource");
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
@ -93,13 +93,13 @@ public class X4OEntityResolverTest {
public void testResolveProperty() throws Exception { public void testResolveProperty() throws Exception {
X4ODriver<TestObjectRoot> driver = new TestDriver(); X4ODriver<TestObjectRoot> driver = new TestDriver();
X4OLanguageSession language = driver.createLanguage().createLanguageSession(); X4OLanguageSession language = driver.createLanguage().createLanguageSession();
SAX3PropertyConfig conf = new SAX3PropertyConfig(DefaultX4OReader.DEFAULT_PROPERTY_CONFIG,SAX3PropertyConfig.X4O_PROPERTIES_PREFIX+"reader/x4o/"); SAX3PropertyConfig conf = new SAX3PropertyConfig(DefaultX4OReader.DEFAULT_PROPERTY_CONFIG, SAX3PropertyConfig.X4O_PROPERTIES_PREFIX + "reader/x4o/");
conf.setProperty(DefaultX4OReader.SAX_ENTITY_RESOLVER, new TestEntityResolver()); conf.setProperty(DefaultX4OReader.SAX_ENTITY_RESOLVER, new TestEntityResolver());
X4OEntityResolver resolver = new X4OEntityResolver(language,conf); X4OEntityResolver resolver = new X4OEntityResolver(language, conf);
Exception e = null; Exception e = null;
InputSource input = null; InputSource input = null;
try { try {
input = resolver.resolveEntity("","http://cel.x4o.org/xml/ns/cel-root-1.0.xsd"); input = resolver.resolveEntity("", "http://cel.x4o.org/xml/ns/cel-root-1.0.xsd");
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
@ -111,12 +111,12 @@ public class X4OEntityResolverTest {
public void testResolvePropertyNull() throws Exception { public void testResolvePropertyNull() throws Exception {
X4ODriver<TestObjectRoot> driver = new TestDriver(); X4ODriver<TestObjectRoot> driver = new TestDriver();
X4OLanguageSession language = driver.createLanguage().createLanguageSession(); X4OLanguageSession language = driver.createLanguage().createLanguageSession();
SAX3PropertyConfig conf = new SAX3PropertyConfig(DefaultX4OReader.DEFAULT_PROPERTY_CONFIG,SAX3PropertyConfig.X4O_PROPERTIES_PREFIX+"reader/x4o/"); SAX3PropertyConfig conf = new SAX3PropertyConfig(DefaultX4OReader.DEFAULT_PROPERTY_CONFIG, SAX3PropertyConfig.X4O_PROPERTIES_PREFIX + "reader/x4o/");
conf.setProperty(DefaultX4OReader.SAX_ENTITY_RESOLVER, new TestEntityResolver()); conf.setProperty(DefaultX4OReader.SAX_ENTITY_RESOLVER, new TestEntityResolver());
X4OEntityResolver resolver = new X4OEntityResolver(language,conf); X4OEntityResolver resolver = new X4OEntityResolver(language, conf);
Exception e = null; Exception e = null;
try { try {
resolver.resolveEntity("","http://cel.x4o.org/xml/ns/cel-root-1.0.xsd-null"); resolver.resolveEntity("", "http://cel.x4o.org/xml/ns/cel-root-1.0.xsd-null");
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }

View file

@ -50,9 +50,9 @@ public class X4OParserConfigurationTest {
@Test @Test
public void testParserConfigurationLanguage() { public void testParserConfigurationLanguage() {
Assertions.assertEquals("test",driver.getLanguageName()); Assertions.assertEquals("test", driver.getLanguageName());
Assertions.assertEquals(X4OLanguageConfiguration.DEFAULT_LANG_MODULES_FILE,config.getLanguageResourceModulesFileName()); Assertions.assertEquals(X4OLanguageConfiguration.DEFAULT_LANG_MODULES_FILE, config.getLanguageResourceModulesFileName());
Assertions.assertEquals(X4OLanguageConfiguration.DEFAULT_LANG_PATH_PREFIX,config.getLanguageResourcePathPrefix()); Assertions.assertEquals(X4OLanguageConfiguration.DEFAULT_LANG_PATH_PREFIX, config.getLanguageResourcePathPrefix());
} }
@Test @Test

View file

@ -35,8 +35,8 @@ import org.x4o.xml.lang.phase.X4OPhaseType;
import org.x4o.xml.test.TestDriver; import org.x4o.xml.test.TestDriver;
/** /**
* Tests some code for testing x4o phases. * Tests some code for testing x4o phases. *
* * *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Jan 15, 2009 * @version 1.0 Jan 15, 2009
*/ */
@ -53,32 +53,23 @@ public class X4OPhaseManagerTest {
public void testPhases() throws Exception { public void testPhases() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OLanguageSession context = driver.createLanguage().createLanguageSession(); X4OLanguageSession context = driver.createLanguage().createLanguageSession();
DefaultX4OPhaseManager manager = (DefaultX4OPhaseManager)context.getLanguage().getPhaseManager(); DefaultX4OPhaseManager manager = (DefaultX4OPhaseManager) context.getLanguage().getPhaseManager();
Collection<X4OPhase> phasesAll = manager.getAllPhases(); Collection<X4OPhase> phasesAll = manager.getAllPhases();
List<X4OPhase> phases = manager.getOrderedPhases(X4OPhaseType.XML_READ); List<X4OPhase> phases = manager.getOrderedPhases(X4OPhaseType.XML_READ);
Assertions.assertNotNull(phases); Assertions.assertNotNull(phases);
Assertions.assertFalse(phases.isEmpty()); Assertions.assertFalse(phases.isEmpty());
Assertions.assertNotNull(phasesAll); Assertions.assertNotNull(phasesAll);
Assertions.assertFalse(phasesAll.isEmpty()); Assertions.assertFalse(phasesAll.isEmpty());
for (X4OPhase phase:phases) { for (X4OPhase phase : phases) {
Assertions.assertNotNull(phase); Assertions.assertNotNull(phase);
Assertions.assertNotNull(phase.getId()); Assertions.assertNotNull(phase.getId());
} }
} }
/* /*
public void testPhaseManager() throws Exception { * public void testPhaseManager() throws Exception { TestDriver driver = TestDriver.getInstance(); ElementLanguage context = driver.createLanguageSession();
TestDriver driver = TestDriver.getInstance(); * X4OPhaseManager manager = context.getLanguage().getPhaseManager();
ElementLanguage context = driver.createLanguageSession(); *
X4OPhaseManager manager = context.getLanguage().getPhaseManager(); * Exception e = null; try { manager.addX4OPhaseHandler(null); } catch (NullPointerException ee) { e = ee; } Assertions.assertEquals(true, e!=null ); }
*/
Exception e = null;
try {
manager.addX4OPhaseHandler(null);
} catch (NullPointerException ee) {
e = ee;
}
Assertions.assertEquals(true, e!=null );
}
*/
} }

View file

@ -41,9 +41,9 @@ public class EldValidatingTest {
public void testValidation() throws Exception { public void testValidation() throws Exception {
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
X4OReader<TestObjectRoot> reader = driver.createReader(); X4OReader<TestObjectRoot> reader = driver.createReader();
//reader.getContentConfig().setProperty("",true); // reader.getContentConfig().setProperty("",true);
reader.setProperty(DefaultX4OReader.VALIDATION_INPUT_DOC, true); reader.setProperty(DefaultX4OReader.VALIDATION_INPUT_DOC, true);
//parser.setProperty(DefaultX4OReader.VALIDATION_SCHEMA_PATH, "/tmp"); // parser.setProperty(DefaultX4OReader.VALIDATION_SCHEMA_PATH, "/tmp");
try { try {
// TODO: reader.readResource("META-INF/eld/eld-lang.eld"); // TODO: reader.readResource("META-INF/eld/eld-lang.eld");
} finally { } finally {

View file

@ -44,58 +44,46 @@ import org.x4o.xml.test.TestDriver;
public class X4OWriteLanguageDocExecutorTest { public class X4OWriteLanguageDocExecutorTest {
private File createOutputPath(String dir) throws Exception { private File createOutputPath(String dir) throws Exception {
File result = new File("target/tests"+File.separator+dir); File result = new File("target/tests" + File.separator + dir);
if (result.exists()==false) { if (result.exists() == false) {
result.mkdirs(); result.mkdirs();
} }
return result; return result;
} }
public void testDoc(String language,String outputPostfix) throws Exception { public void testDoc(String language, String outputPostfix) throws Exception {
X4ODriver<?> driver = X4ODriverManager.getX4ODriver(language); X4ODriver<?> driver = X4ODriverManager.getX4ODriver(language);
X4OLanguageTask task = driver.getLanguageTask(EldDocLanguageTask.TASK_ID); X4OLanguageTask task = driver.getLanguageTask(EldDocLanguageTask.TASK_ID);
SAX3PropertyConfig config = task.createTaskConfig(); SAX3PropertyConfig config = task.createTaskConfig();
File outputPath = createOutputPath(outputPostfix); File outputPath = createOutputPath(outputPostfix);
config.setProperty(EldDocWriter.OUTPUT_PATH,outputPath); config.setProperty(EldDocWriter.OUTPUT_PATH, outputPath);
X4OTaskRunner.runTaskLanguage(task, driver.createLanguage(), config); X4OTaskRunner.runTaskLanguage(task, driver.createLanguage(), config);
Assertions.assertTrue(outputPath.exists()); Assertions.assertTrue(outputPath.exists());
Assertions.assertTrue(outputPath.list()!=null); Assertions.assertTrue(outputPath.list() != null);
Assertions.assertTrue(outputPath.list().length>2); Assertions.assertTrue(outputPath.list().length > 2);
} }
@Test @Test
public void testCelDoc() throws Exception { public void testCelDoc() throws Exception {
testDoc(CelDriver.LANGUAGE_NAME,"junit-doc-cel"); testDoc(CelDriver.LANGUAGE_NAME, "junit-doc-cel");
} }
@Test @Test
public void testEldDoc() throws Exception { public void testEldDoc() throws Exception {
testDoc(EldDriver.LANGUAGE_NAME,"junit-doc-eld"); testDoc(EldDriver.LANGUAGE_NAME, "junit-doc-eld");
} }
@Test @Test
public void testUnitDoc() throws Exception { public void testUnitDoc() throws Exception {
testDoc(TestDriver.LANGUAGE_NAME,"junit-doc-test"); testDoc(TestDriver.LANGUAGE_NAME, "junit-doc-test");
} }
/* /*
@Test * @Test public void testSwiXml2Doc() throws Exception { testDoc(EldDriver.LANGUAGE_NAME,"junit-doc-eld"); EldDocLanguageTask writer = new
public void testSwiXml2Doc() throws Exception { * EldDocLanguageTask(); writer.setBasePath(createOutputTargetPath("junit-swixml2")); writer.setLanguageName(SwiXmlDriver.LANGUAGE_NAME);
testDoc(EldDriver.LANGUAGE_NAME,"junit-doc-eld"); * writer.setLanguageVersion(SwiXmlDriver.LANGUAGE_VERSION_2); writer.execute(); }
EldDocLanguageTask writer = new EldDocLanguageTask(); *
writer.setBasePath(createOutputTargetPath("junit-swixml2")); * @Test public void testSwiXml3Doc() throws Exception { testDoc(EldDriver.LANGUAGE_NAME,"junit-doc-eld"); EldDocLanguageTask writer = new
writer.setLanguageName(SwiXmlDriver.LANGUAGE_NAME); * EldDocLanguageTask(); writer.setBasePath(createOutputTargetPath("junit-swixml3")); writer.setLanguageName(SwiXmlDriver.LANGUAGE_NAME);
writer.setLanguageVersion(SwiXmlDriver.LANGUAGE_VERSION_2); * writer.setLanguageVersion(SwiXmlDriver.LANGUAGE_VERSION_3); writer.execute(); }
writer.execute(); */
}
@Test
public void testSwiXml3Doc() throws Exception {
testDoc(EldDriver.LANGUAGE_NAME,"junit-doc-eld");
EldDocLanguageTask writer = new EldDocLanguageTask();
writer.setBasePath(createOutputTargetPath("junit-swixml3"));
writer.setLanguageName(SwiXmlDriver.LANGUAGE_NAME);
writer.setLanguageVersion(SwiXmlDriver.LANGUAGE_VERSION_3);
writer.execute();
}
*/
} }

View file

@ -49,71 +49,71 @@ import org.x4o.xml.test.swixml.SwiXmlDriver;
public class EldXsdLanguageTaskTest { public class EldXsdLanguageTaskTest {
private File createOutputPath(String dir) throws Exception { private File createOutputPath(String dir) throws Exception {
File result = new File("target/tests"+File.separator+dir); File result = new File("target/tests" + File.separator + dir);
if (result.exists()==false) { if (result.exists() == false) {
result.mkdirs(); result.mkdirs();
} }
return result; return result;
} }
@Test @Test
private File testSchema(String language,String outputPostfix,Map<String,Object> props) throws Exception { private File testSchema(String language, String outputPostfix, Map<String, Object> props) throws Exception {
X4ODriver<?> driver = X4ODriverManager.getX4ODriver(language); X4ODriver<?> driver = X4ODriverManager.getX4ODriver(language);
X4OLanguageTask task = driver.getLanguageTask(EldXsdLanguageTask.TASK_ID); X4OLanguageTask task = driver.getLanguageTask(EldXsdLanguageTask.TASK_ID);
SAX3PropertyConfig config = task.createTaskConfig(); SAX3PropertyConfig config = task.createTaskConfig();
File outputPath = createOutputPath(outputPostfix); File outputPath = createOutputPath(outputPostfix);
config.setProperty(EldXsdWriter.OUTPUT_PATH,outputPath); config.setProperty(EldXsdWriter.OUTPUT_PATH, outputPath);
config.setProperty(EldXsdWriter.OUTPUT_DOCUMENTATION,false); config.setProperty(EldXsdWriter.OUTPUT_DOCUMENTATION, false);
config.setProperty(SAX3WriterXml.PROLOG_LICENCE_FILE,new File("../licence.txt")); config.setProperty(SAX3WriterXml.PROLOG_LICENCE_FILE, new File("../licence.txt"));
config.setProperty(SAX3WriterXml.PROLOG_USER_COMMENT,"Generated by junit-test-run in class: "+this.getClass().getSimpleName()); config.setProperty(SAX3WriterXml.PROLOG_USER_COMMENT, "Generated by junit-test-run in class: " + this.getClass().getSimpleName());
if (props!=null) { if (props != null) {
for (String key:props.keySet()) { for (String key : props.keySet()) {
Object value = props.get(key); Object value = props.get(key);
config.setProperty(key, value); config.setProperty(key, value);
} }
} }
X4OTaskRunner.runTaskLanguage(task, driver.createLanguage(), config); X4OTaskRunner.runTaskLanguage(task, driver.createLanguage(), config);
Assertions.assertTrue(outputPath.exists()); Assertions.assertTrue(outputPath.exists());
Assertions.assertTrue(outputPath.list()!=null); Assertions.assertTrue(outputPath.list() != null);
return outputPath; return outputPath;
} }
@Test @Test
public void testEldSchema() throws Exception { public void testEldSchema() throws Exception {
File outputPath = testSchema(EldDriver.LANGUAGE_NAME,"junit-xsd-eld",null); File outputPath = testSchema(EldDriver.LANGUAGE_NAME, "junit-xsd-eld", null);
Assertions.assertTrue(outputPath.list().length>2); Assertions.assertTrue(outputPath.list().length > 2);
} }
@Test @Test
public void testEldCoreSchema() throws Exception { public void testEldCoreSchema() throws Exception {
File outputPath = testSchema(CelDriver.LANGUAGE_NAME,"junit-xsd-cel",null); File outputPath = testSchema(CelDriver.LANGUAGE_NAME, "junit-xsd-cel", null);
Assertions.assertTrue(outputPath.list().length>1); Assertions.assertTrue(outputPath.list().length > 1);
} }
@Test @Test
public void testSwiXmlSchema() throws Exception { public void testSwiXmlSchema() throws Exception {
File outputPath = testSchema(SwiXmlDriver.LANGUAGE_NAME,"junit-xsd-swixml",null); File outputPath = testSchema(SwiXmlDriver.LANGUAGE_NAME, "junit-xsd-swixml", null);
Assertions.assertTrue(outputPath.list().length>1); Assertions.assertTrue(outputPath.list().length > 1);
} }
@Test @Test
public void testFilterNamespace() throws Exception { public void testFilterNamespace() throws Exception {
Map<String,Object> props = new HashMap<String,Object>(); Map<String, Object> props = new HashMap<String, Object>();
props.put(EldXsdWriter.FILTER_NAMESPACE, EldModuleLoaderCore.CEL_ROOT_URI); props.put(EldXsdWriter.FILTER_NAMESPACE, EldModuleLoaderCore.CEL_ROOT_URI);
File outputPath = testSchema(CelDriver.LANGUAGE_NAME,"junit-one-ns",props); File outputPath = testSchema(CelDriver.LANGUAGE_NAME, "junit-one-ns", props);
Assertions.assertTrue(outputPath.list().length==1); Assertions.assertTrue(outputPath.list().length == 1);
} }
@Test @Test
public void testFilterElement() throws Exception { public void testFilterElement() throws Exception {
Map<String,Object> props = new HashMap<String,Object>(); Map<String, Object> props = new HashMap<String, Object>();
props.put(EldXsdWriter.FILTER_NAMESPACE, EldModuleLoaderCore.CEL_CORE_URI); props.put(EldXsdWriter.FILTER_NAMESPACE, EldModuleLoaderCore.CEL_CORE_URI);
props.put(EldXsdWriter.FILTER_ELEMENT, "elementInterface"); props.put(EldXsdWriter.FILTER_ELEMENT, "elementInterface");
props.put(EldXsdWriter.PROLOG_GENERATED_ENABLE, false); props.put(EldXsdWriter.PROLOG_GENERATED_ENABLE, false);
props.put(EldXsdWriter.PROLOG_XMLNS_INFO_ENABLE, false); props.put(EldXsdWriter.PROLOG_XMLNS_INFO_ENABLE, false);
props.put(SAX3WriterXml.PROLOG_LICENCE_ENABLE,false); props.put(SAX3WriterXml.PROLOG_LICENCE_ENABLE, false);
File outputPath = testSchema(CelDriver.LANGUAGE_NAME,"junit-one-element",props); File outputPath = testSchema(CelDriver.LANGUAGE_NAME, "junit-one-element", props);
Assertions.assertTrue(outputPath.list().length==1); Assertions.assertTrue(outputPath.list().length == 1);
String text = X4OWriterTest.readFile(new File("target/tests/junit-one-element/cel-core-1.0.xsd")); String text = X4OWriterTest.readFile(new File("target/tests/junit-one-element/cel-core-1.0.xsd"));
Assertions.assertNotNull(text); Assertions.assertNotNull(text);
@ -123,6 +123,6 @@ public class EldXsdLanguageTaskTest {
Assertions.assertFalse(text.contains("bindingHandler")); Assertions.assertFalse(text.contains("bindingHandler"));
Assertions.assertFalse(text.contains("classConverter")); Assertions.assertFalse(text.contains("classConverter"));
Assertions.assertTrue(text.length()<10000); Assertions.assertTrue(text.length() < 10000);
} }
} }

View file

@ -45,7 +45,7 @@ public class DefaultElementObjectPropertyValueTest {
public static void setUp() throws Exception { public static void setUp() throws Exception {
// enable all logs // enable all logs
InputStream loggingProperties = DefaultElementObjectPropertyValueTest.class.getResourceAsStream("/META-INF/logging.properties"); InputStream loggingProperties = DefaultElementObjectPropertyValueTest.class.getResourceAsStream("/META-INF/logging.properties");
LogManager.getLogManager().readConfiguration( loggingProperties ); LogManager.getLogManager().readConfiguration(loggingProperties);
loggingProperties.close(); loggingProperties.close();
} }
@ -69,7 +69,7 @@ public class DefaultElementObjectPropertyValueTest {
TestObjectChild obj = new TestObjectChild(); TestObjectChild obj = new TestObjectChild();
helper.setProperty(obj, "price", 666); helper.setProperty(obj, "price", 666);
Assertions.assertEquals(666,helper.getProperty(obj, "price")); Assertions.assertEquals(666, helper.getProperty(obj, "price"));
} }
@Test @Test
@ -83,7 +83,7 @@ public class DefaultElementObjectPropertyValueTest {
} catch (ElementObjectPropertyValueException not) { } catch (ElementObjectPropertyValueException not) {
error = true; error = true;
} }
Assertions.assertEquals(true,error); Assertions.assertEquals(true, error);
} }
@Test @Test
@ -91,9 +91,9 @@ public class DefaultElementObjectPropertyValueTest {
TestBean obj = new TestBean(); TestBean obj = new TestBean();
helper.setProperty(obj, "privateStringObjectField", "foo"); helper.setProperty(obj, "privateStringObjectField", "foo");
Assertions.assertEquals("foo",helper.getProperty(obj, "privateStringObjectField")); Assertions.assertEquals("foo", helper.getProperty(obj, "privateStringObjectField"));
helper.setProperty(obj, "privateStringObjectFieldUnicode仙上主天", "bar"); helper.setProperty(obj, "privateStringObjectFieldUnicode仙上主天", "bar");
Assertions.assertEquals("bar",helper.getProperty(obj, "privateStringObjectFieldUnicode仙上主天")); Assertions.assertEquals("bar", helper.getProperty(obj, "privateStringObjectFieldUnicode仙上主天"));
} }
} }

View file

@ -64,7 +64,7 @@ public class X4OReaderSessionTest {
File xmlFile = copyResourceToTempFile(); File xmlFile = copyResourceToTempFile();
TestObjectRoot root = reader.readFile(xmlFile.getAbsolutePath()); TestObjectRoot root = reader.readFile(xmlFile.getAbsolutePath());
Assertions.assertNotNull(root); Assertions.assertNotNull(root);
Assertions.assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size() > 0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
Assertions.assertNotNull(bean); Assertions.assertNotNull(bean);
} }
@ -93,7 +93,7 @@ public class X4OReaderSessionTest {
File xmlFile = copyResourceToTempFile(); File xmlFile = copyResourceToTempFile();
TestObjectRoot root = reader.readFile(xmlFile); TestObjectRoot root = reader.readFile(xmlFile);
Assertions.assertNotNull(root); Assertions.assertNotNull(root);
Assertions.assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size() > 0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
Assertions.assertNotNull(bean); Assertions.assertNotNull(bean);
} }
@ -180,17 +180,14 @@ public class X4OReaderSessionTest {
public void testReadString() throws Exception { public void testReadString() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession(); X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
TestObjectRoot root = reader.readString( TestObjectRoot root = reader.readString("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+ + "<root:root xmlns:root=\"http://test.junit.x4o.org/xml/ns/junit-test-root\" xmlns=\"http://test.junit.x4o.org/xml/ns/junit-test-lang\">"
"<root:root xmlns:root=\"http://test.junit.x4o.org/xml/ns/junit-test-root\" xmlns=\"http://test.junit.x4o.org/xml/ns/junit-test-lang\">"+ + "<testBean privateIntegerTypeField=\"987654321\"/>" + "</root:root>");
"<testBean privateIntegerTypeField=\"987654321\"/>"+
"</root:root>"
);
Assertions.assertNotNull(root); Assertions.assertNotNull(root);
Assertions.assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size() > 0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
Assertions.assertNotNull(bean); Assertions.assertNotNull(bean);
Assertions.assertEquals("987654321", ""+bean.getPrivateIntegerTypeField()); Assertions.assertEquals("987654321", "" + bean.getPrivateIntegerTypeField());
} }
@Test @Test
@ -216,7 +213,7 @@ public class X4OReaderSessionTest {
URL xmlUrl = Thread.currentThread().getContextClassLoader().getResource("tests/attributes/test-bean.xml"); URL xmlUrl = Thread.currentThread().getContextClassLoader().getResource("tests/attributes/test-bean.xml");
TestObjectRoot root = reader.readUrl(xmlUrl); TestObjectRoot root = reader.readUrl(xmlUrl);
Assertions.assertNotNull(root); Assertions.assertNotNull(root);
Assertions.assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size() > 0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
Assertions.assertNotNull(bean); Assertions.assertNotNull(bean);
} }

View file

@ -71,7 +71,7 @@ public class X4OReaderTest {
inputStream.close(); inputStream.close();
} }
Assertions.assertNotNull(root); Assertions.assertNotNull(root);
Assertions.assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size() > 0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
Assertions.assertNotNull(bean); Assertions.assertNotNull(bean);
} }
@ -104,17 +104,14 @@ public class X4OReaderTest {
public void testReadString() throws Exception { public void testReadString() throws Exception {
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
X4OReader<TestObjectRoot> reader = driver.createReader(); X4OReader<TestObjectRoot> reader = driver.createReader();
TestObjectRoot root = reader.readString( TestObjectRoot root = reader.readString("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+ + "<root:root xmlns:root=\"http://test.junit.x4o.org/xml/ns/junit-test-root\" xmlns=\"http://test.junit.x4o.org/xml/ns/junit-test-lang\">"
"<root:root xmlns:root=\"http://test.junit.x4o.org/xml/ns/junit-test-root\" xmlns=\"http://test.junit.x4o.org/xml/ns/junit-test-lang\">"+ + "<testBean privateIntegerTypeField=\"987654321\"/>" + "</root:root>");
"<testBean privateIntegerTypeField=\"987654321\"/>"+
"</root:root>"
);
Assertions.assertNotNull(root); Assertions.assertNotNull(root);
Assertions.assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size() > 0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
Assertions.assertNotNull(bean); Assertions.assertNotNull(bean);
Assertions.assertEquals("987654321", ""+bean.getPrivateIntegerTypeField()); Assertions.assertEquals("987654321", "" + bean.getPrivateIntegerTypeField());
} }
@Test @Test
@ -140,7 +137,7 @@ public class X4OReaderTest {
URL xmlUrl = Thread.currentThread().getContextClassLoader().getResource("tests/attributes/test-bean.xml"); URL xmlUrl = Thread.currentThread().getContextClassLoader().getResource("tests/attributes/test-bean.xml");
TestObjectRoot root = reader.readUrl(xmlUrl); TestObjectRoot root = reader.readUrl(xmlUrl);
Assertions.assertNotNull(root); Assertions.assertNotNull(root);
Assertions.assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size() > 0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
Assertions.assertNotNull(bean); Assertions.assertNotNull(bean);
} }
@ -168,7 +165,7 @@ public class X4OReaderTest {
File xmlFile = copyResourceToTempFile(); File xmlFile = copyResourceToTempFile();
TestObjectRoot root = reader.readFile(xmlFile.getAbsolutePath()); TestObjectRoot root = reader.readFile(xmlFile.getAbsolutePath());
Assertions.assertNotNull(root); Assertions.assertNotNull(root);
Assertions.assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size() > 0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
Assertions.assertNotNull(bean); Assertions.assertNotNull(bean);
} }
@ -197,7 +194,7 @@ public class X4OReaderTest {
File xmlFile = copyResourceToTempFile(); File xmlFile = copyResourceToTempFile();
TestObjectRoot root = reader.readFile(xmlFile); TestObjectRoot root = reader.readFile(xmlFile);
Assertions.assertNotNull(root); Assertions.assertNotNull(root);
Assertions.assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size() > 0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
Assertions.assertNotNull(bean); Assertions.assertNotNull(bean);
} }

View file

@ -57,7 +57,7 @@ public class X4OWriterSessionTest {
X4OLanguageSession context = driver.createLanguage().createLanguageSession(); X4OLanguageSession context = driver.createLanguage().createLanguageSession();
Element rootElement = null; Element rootElement = null;
try { try {
rootElement = (Element)context.getLanguage().getLanguageConfiguration().getDefaultElement().newInstance(); rootElement = (Element) context.getLanguage().getLanguageConfiguration().getDefaultElement().newInstance();
} catch (InstantiationException e) { } catch (InstantiationException e) {
throw new SAXException(e); throw new SAXException(e);
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
@ -75,7 +75,7 @@ public class X4OWriterSessionTest {
X4OWriterSession<TestObjectRoot> writer = driver.createWriterSession(); X4OWriterSession<TestObjectRoot> writer = driver.createWriterSession();
writer.writeFileSession(createContext(), outputFile); writer.writeFileSession(createContext(), outputFile);
String text = X4OWriterTest.readFile( outputFile ); String text = X4OWriterTest.readFile(outputFile);
outputFile.delete(); outputFile.delete();
Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
@ -108,7 +108,7 @@ public class X4OWriterSessionTest {
X4OWriterSession<TestObjectRoot> writer = driver.createWriterSession(); X4OWriterSession<TestObjectRoot> writer = driver.createWriterSession();
writer.writeFileSession(createContext(), outputFile.getAbsolutePath()); writer.writeFileSession(createContext(), outputFile.getAbsolutePath());
String text = X4OWriterTest.readFile( outputFile ); String text = X4OWriterTest.readFile(outputFile);
outputFile.delete(); outputFile.delete();
Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
@ -142,11 +142,11 @@ public class X4OWriterSessionTest {
OutputStream outputStream = new FileOutputStream(outputFile); OutputStream outputStream = new FileOutputStream(outputFile);
try { try {
writer.writeSession(createContext(),outputStream); writer.writeSession(createContext(), outputStream);
} finally { } finally {
outputStream.close(); outputStream.close();
} }
String text = X4OWriterTest.readFile( outputFile ); String text = X4OWriterTest.readFile(outputFile);
outputFile.delete(); outputFile.delete();
Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));

View file

@ -56,7 +56,7 @@ public class X4OWriterTest {
} }
static public String readFile(File file) throws IOException { static public String readFile(File file) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file),Charset.forName("UTF-8"))); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), Charset.forName("UTF-8")));
try { try {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
String line = br.readLine(); String line = br.readLine();
@ -66,7 +66,7 @@ public class X4OWriterTest {
line = br.readLine(); line = br.readLine();
} }
String out = sb.toString(); String out = sb.toString();
//System.out.println(out); // System.out.println(out);
return out; return out;
} finally { } finally {
br.close(); br.close();
@ -83,8 +83,8 @@ public class X4OWriterTest {
X4OReader<Component> reader = driver.createReader(); X4OReader<Component> reader = driver.createReader();
X4OWriter<Component> writer = driver.createWriter(SwiXmlDriver.LANGUAGE_VERSION_3); X4OWriter<Component> writer = driver.createWriter(SwiXmlDriver.LANGUAGE_VERSION_3);
//reader.setProperty(key, value); // reader.setProperty(key, value);
//writer.setProperty(key, value); // writer.setProperty(key, value);
reader.addELBeanInstance(SwiXmlDriver.LANGUAGE_EL_SWING_ENGINE, engine); reader.addELBeanInstance(SwiXmlDriver.LANGUAGE_EL_SWING_ENGINE, engine);
Component root = reader.readResource("tests/swixml/swixml-accelerator-3.0.xml"); Component root = reader.readResource("tests/swixml/swixml-accelerator-3.0.xml");
@ -92,8 +92,8 @@ public class X4OWriterTest {
Assertions.assertTrue(outputFile.exists(), "Debug file does not exists."); Assertions.assertTrue(outputFile.exists(), "Debug file does not exists.");
//String text = new Scanner( outputFile ).useDelimiter("\\A").next(); // String text = new Scanner( outputFile ).useDelimiter("\\A").next();
//System.out.println("Output: '\n"+text+"\n' end in "+outputFile.getAbsolutePath()); // System.out.println("Output: '\n"+text+"\n' end in "+outputFile.getAbsolutePath());
outputFile.delete(); outputFile.delete();
} }
@ -107,7 +107,7 @@ public class X4OWriterTest {
TestObjectRoot root = reader.readResource("tests/attributes/test-bean.xml"); TestObjectRoot root = reader.readResource("tests/attributes/test-bean.xml");
writer.writeFile(root, outputFile); writer.writeFile(root, outputFile);
String text = readFile( outputFile ); String text = readFile(outputFile);
outputFile.delete(); outputFile.delete();
Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
@ -125,7 +125,7 @@ public class X4OWriterTest {
TestObjectRoot root = reader.readResource("tests/attributes/test-bean.xml"); TestObjectRoot root = reader.readResource("tests/attributes/test-bean.xml");
writer.writeFile(root, outputFile.getAbsolutePath()); writer.writeFile(root, outputFile.getAbsolutePath());
String text = readFile( outputFile ); String text = readFile(outputFile);
outputFile.delete(); outputFile.delete();
Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
@ -144,13 +144,13 @@ public class X4OWriterTest {
TestObjectRoot root = reader.readResource("tests/attributes/test-bean.xml"); TestObjectRoot root = reader.readResource("tests/attributes/test-bean.xml");
OutputStream outputStream = new FileOutputStream(outputFile); OutputStream outputStream = new FileOutputStream(outputFile);
try { try {
writer.write(root,outputStream); writer.write(root, outputStream);
} finally { } finally {
outputStream.close(); outputStream.close();
} }
writer.writeFile(root, outputFile.getAbsolutePath()); writer.writeFile(root, outputFile.getAbsolutePath());
String text = readFile( outputFile ); String text = readFile(outputFile);
outputFile.delete(); outputFile.delete();
Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));

View file

@ -49,10 +49,10 @@ public class DefaultX4OLanguageLoaderTest {
@BeforeAll @BeforeAll
public static void setUp() throws Exception { public static void setUp() throws Exception {
driver = TestDriver.getInstance(); driver = TestDriver.getInstance();
language = (X4OLanguageLocal)driver.createLanguage(); language = (X4OLanguageLocal) driver.createLanguage();
session = language.createLanguageSession(); session = language.createLanguageSession();
language.init(session); language.init(session);
loader = (DefaultX4OLanguageLoader)language.getLanguageConfiguration().getDefaultLanguageLoader().newInstance(); loader = (DefaultX4OLanguageLoader) language.getLanguageConfiguration().getDefaultLanguageLoader().newInstance();
} }
@Test @Test
@ -69,31 +69,31 @@ public class DefaultX4OLanguageLoaderTest {
@Test @Test
public void testModulesSimple() throws Exception { public void testModulesSimple() throws Exception {
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("tests/modules/test-modules-simple.xml"); InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("tests/modules/test-modules-simple.xml");
Assertions.assertNotNull(in); Assertions.assertNotNull(in);
List<VersionedResources> result = loader.loadLanguageModulesXml(in, "test-modules-simple.xml"); List<VersionedResources> result = loader.loadLanguageModulesXml(in, "test-modules-simple.xml");
Assertions.assertNotNull(result); Assertions.assertNotNull(result);
Assertions.assertFalse(result.isEmpty()); Assertions.assertFalse(result.isEmpty());
Assertions.assertTrue(result.size()==1, "Simple test returned non-one result: "+result.size()); Assertions.assertTrue(result.size() == 1, "Simple test returned non-one result: " + result.size());
} }
@Test @Test
public void testModulesFull() throws Exception { public void testModulesFull() throws Exception {
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("tests/modules/test-modules-full.xml"); InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("tests/modules/test-modules-full.xml");
Assertions.assertNotNull(in); Assertions.assertNotNull(in);
List<VersionedResources> result = loader.loadLanguageModulesXml(in, "test-modules-full.xml"); List<VersionedResources> result = loader.loadLanguageModulesXml(in, "test-modules-full.xml");
Assertions.assertNotNull(result); Assertions.assertNotNull(result);
Assertions.assertFalse(result.isEmpty()); Assertions.assertFalse(result.isEmpty());
VersionedResources vr = result.get(0); VersionedResources vr = result.get(0);
Assertions.assertTrue(vr.eldResources.size()>1); Assertions.assertTrue(vr.eldResources.size() > 1);
Assertions.assertTrue(vr.moduleLoaders.size()>1); Assertions.assertTrue(vr.moduleLoaders.size() > 1);
Assertions.assertTrue(vr.elbResources.size()>1); Assertions.assertTrue(vr.elbResources.size() > 1);
Assertions.assertTrue(vr.siblingLoaders.size()==1); Assertions.assertTrue(vr.siblingLoaders.size() == 1);
} }
@Test @Test
public void testModulesDuplicateLoaderNoError() throws Exception { public void testModulesDuplicateLoaderNoError() throws Exception {
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("tests/modules/test-modules-err-loader.xml"); InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("tests/modules/test-modules-err-loader.xml");
Assertions.assertNotNull(in); Assertions.assertNotNull(in);
List<VersionedResources> result = loader.loadLanguageModulesXml(in, "test-modules-err-loader.xml"); List<VersionedResources> result = loader.loadLanguageModulesXml(in, "test-modules-err-loader.xml");
Assertions.assertNotNull(result); Assertions.assertNotNull(result);
@ -102,39 +102,39 @@ public class DefaultX4OLanguageLoaderTest {
@Test @Test
public void testModulesDuplicateLoader() throws Exception { public void testModulesDuplicateLoader() throws Exception {
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("tests/modules/test-modules-err-loader.xml"); InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("tests/modules/test-modules-err-loader.xml");
Assertions.assertNotNull(in); Assertions.assertNotNull(in);
List<VersionedResources> result = loader.loadLanguageModulesXml(in, "test-modules-err-loader.xml"); List<VersionedResources> result = loader.loadLanguageModulesXml(in, "test-modules-err-loader.xml");
Assertions.assertNotNull(result); Assertions.assertNotNull(result);
Assertions.assertFalse(result.isEmpty()); Assertions.assertFalse(result.isEmpty());
Exception e=null; Exception e = null;
try { try {
loader.validateModules(result); loader.validateModules(result);
} catch (Exception ee) { } catch (Exception ee) {
e=ee; e = ee;
} }
Assertions.assertNotNull(e); Assertions.assertNotNull(e);
Assertions.assertTrue(e.getMessage().contains("Duplicate"), "No 'Duplicate' found in message: "+e.getMessage()); Assertions.assertTrue(e.getMessage().contains("Duplicate"), "No 'Duplicate' found in message: " + e.getMessage());
Assertions.assertTrue(e.getMessage().contains("module-loader"), "No 'module-loader' found in message: "+e.getMessage()); Assertions.assertTrue(e.getMessage().contains("module-loader"), "No 'module-loader' found in message: " + e.getMessage());
} }
@Test @Test
public void testModulesDuplicateSiblingLoader() throws Exception { public void testModulesDuplicateSiblingLoader() throws Exception {
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("tests/modules/test-modules-err-sibling.xml"); InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("tests/modules/test-modules-err-sibling.xml");
Assertions.assertNotNull(in); Assertions.assertNotNull(in);
List<VersionedResources> result = loader.loadLanguageModulesXml(in, "test-modules-err-sibling.xml"); List<VersionedResources> result = loader.loadLanguageModulesXml(in, "test-modules-err-sibling.xml");
Assertions.assertNotNull(result); Assertions.assertNotNull(result);
Assertions.assertFalse(result.isEmpty()); Assertions.assertFalse(result.isEmpty());
Exception e=null; Exception e = null;
try { try {
loader.validateModules(result); loader.validateModules(result);
} catch (Exception ee) { } catch (Exception ee) {
e=ee; e = ee;
} }
Assertions.assertNotNull(e); Assertions.assertNotNull(e);
Assertions.assertTrue(e.getMessage().contains("Duplicate"), "No 'Duplicate' found in message: "+e.getMessage()); Assertions.assertTrue(e.getMessage().contains("Duplicate"), "No 'Duplicate' found in message: " + e.getMessage());
Assertions.assertTrue(e.getMessage().contains("sibling-loader"), "No 'sibling-loader' found in message: "+e.getMessage()); Assertions.assertTrue(e.getMessage().contains("sibling-loader"), "No 'sibling-loader' found in message: " + e.getMessage());
} }
} }

View file

@ -28,7 +28,7 @@ import org.x4o.xml.X4ODriverManager;
public class MTestDriver extends X4ODriver<Object> { public class MTestDriver extends X4ODriver<Object> {
public static final String LANGUAGE_NAME = "mtest"; public static final String LANGUAGE_NAME = "mtest";
public static final String[] LANGUAGE_VERSIONS = new String[]{X4ODriver.DEFAULT_LANGUAGE_VERSION}; public static final String[] LANGUAGE_VERSIONS = new String[] { X4ODriver.DEFAULT_LANGUAGE_VERSION };
@Override @Override
public String getLanguageName() { public String getLanguageName() {
@ -41,6 +41,6 @@ public class MTestDriver extends X4ODriver<Object> {
} }
static public MTestDriver getInstance() { static public MTestDriver getInstance() {
return (MTestDriver)X4ODriverManager.getX4ODriver(LANGUAGE_NAME); return (MTestDriver) X4ODriverManager.getX4ODriver(LANGUAGE_NAME);
} }
} }

View file

@ -47,10 +47,10 @@ public class ParentObjectTest {
reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE); reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE);
try (X4OLanguageSession session = reader.createLanguageSession()) { try (X4OLanguageSession session = reader.createLanguageSession()) {
reader.readResourceSession(session, "junit/test-meta-parent-element.xml"); reader.readResourceSession(session, "junit/test-meta-parent-element.xml");
Assertions.assertEquals(1,session.getRootElement().getChilderen().size()); Assertions.assertEquals(1, session.getRootElement().getChilderen().size());
Element childElement = session.getRootElement().getChilderen().get(0); Element childElement = session.getRootElement().getChilderen().get(0);
JLabel test = (JLabel)childElement.getElementObject(); JLabel test = (JLabel) childElement.getElementObject();
Assertions.assertEquals("parentTest",test.getText()); Assertions.assertEquals("parentTest", test.getText());
} }
} }
@ -73,9 +73,9 @@ public class ParentObjectTest {
Assertions.assertNull(o); Assertions.assertNull(o);
e.setElementObject("test"); e.setElementObject("test");
o = e.getElementObject(); o = e.getElementObject();
Assertions.assertEquals("test",o); Assertions.assertEquals("test", o);
o = ep.getElementObject(); o = ep.getElementObject();
Assertions.assertEquals("test",o); Assertions.assertEquals("test", o);
Assertions.assertEquals(e.getElementObject(),ep.getElementObject()); Assertions.assertEquals(e.getElementObject(), ep.getElementObject());
} }
} }

View file

@ -45,7 +45,7 @@ public class ReferenceStoreTest {
reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE); reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE);
try (X4OLanguageSession session = reader.createLanguageSession()) { try (X4OLanguageSession session = reader.createLanguageSession()) {
reader.readResourceSession(session, "junit/test-meta-generic.xml"); reader.readResourceSession(session, "junit/test-meta-generic.xml");
Assertions.assertEquals(Date.class.getName(),session.getRootElement().getChilderen().get(0).getElementObject().getClass().getName()); Assertions.assertEquals(Date.class.getName(), session.getRootElement().getChilderen().get(0).getElementObject().getClass().getName());
} }
} }
@ -56,7 +56,7 @@ public class ReferenceStoreTest {
reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE); reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE);
try (X4OLanguageSession session = reader.createLanguageSession()) { try (X4OLanguageSession session = reader.createLanguageSession()) {
reader.readResourceSession(session, "junit/test-meta-reference.xml"); reader.readResourceSession(session, "junit/test-meta-reference.xml");
Assertions.assertEquals(Date.class.getName(),session.getRootElement().getChilderen().get(0).getElementObject().getClass().getName()); Assertions.assertEquals(Date.class.getName(), session.getRootElement().getChilderen().get(0).getElementObject().getClass().getName());
} }
} }
@ -67,10 +67,10 @@ public class ReferenceStoreTest {
reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE); reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE);
try (X4OLanguageSession session = reader.createLanguageSession()) { try (X4OLanguageSession session = reader.createLanguageSession()) {
reader.readResourceSession(session, "junit/test-meta-reference.xml"); reader.readResourceSession(session, "junit/test-meta-reference.xml");
Assertions.assertEquals(Date.class.getName(),session.getRootElement().getChilderen().get(0).getElementObject().getClass().getName()); Assertions.assertEquals(Date.class.getName(), session.getRootElement().getChilderen().get(0).getElementObject().getClass().getName());
Assertions.assertEquals(Date.class.getName(),session.getRootElement().getChilderen().get(1).getElementObject().getClass().getName()); Assertions.assertEquals(Date.class.getName(), session.getRootElement().getChilderen().get(1).getElementObject().getClass().getName());
Assertions.assertEquals(Date.class.getName(),session.getRootElement().getChilderen().get(2).getElementObject().getClass().getName()); Assertions.assertEquals(Date.class.getName(), session.getRootElement().getChilderen().get(2).getElementObject().getClass().getName());
Assertions.assertEquals(Date.class.getName(),session.getRootElement().getChilderen().get(3).getElementObject().getClass().getName()); Assertions.assertEquals(Date.class.getName(), session.getRootElement().getChilderen().get(3).getElementObject().getClass().getName());
} }
} }
} }