Converted to X4ODriver language base and prepared for write support.

This commit is contained in:
Willem Cazander 2013-04-06 23:07:06 +02:00
parent 6f4eca935e
commit f2844c61f2
118 changed files with 4370 additions and 2411 deletions

View file

@ -25,7 +25,7 @@ package org.x4o.xml.meta;
import org.x4o.xml.core.config.X4OLanguageLoader;
import org.x4o.xml.core.config.X4OLanguageLoaderException;
import org.x4o.xml.element.ElementLanguage;
import org.x4o.xml.core.config.X4OLanguageLocal;
import org.x4o.xml.element.ElementLanguageModule;
import org.x4o.xml.element.ElementLanguageModuleLoaderException;
import org.x4o.xml.element.ElementLanguageModuleLoaderSibling;
@ -46,12 +46,12 @@ public class MetaLanguageSiblingLoader implements ElementLanguageModuleLoaderSib
/**
* Loads an ElementLanguageModule.
* @param elementLanguage The ElementLanguage to load for.
* @param language The ElementLanguage to load for.
* @param elementLanguageModule The ElementLanguageModule to load into.
* @throws ElementLanguageModuleLoaderException Is thrown when meta language could not be loaded.
* @see org.x4o.xml.element.ElementLanguageModuleLoader#loadLanguageModule(org.x4o.xml.element.ElementLanguage, org.x4o.xml.element.ElementLanguageModule)
*/
public void loadLanguageModule(ElementLanguage elementLanguage,ElementLanguageModule elementLanguageModule) throws ElementLanguageModuleLoaderException {
public void loadLanguageModule(X4OLanguageLocal languageLocal,ElementLanguageModule elementLanguageModule) throws ElementLanguageModuleLoaderException {
elementLanguageModule.setId(META_LANGUAGE);
elementLanguageModule.setName(META_LANGUAGE);
elementLanguageModule.setProviderName(MetaLanguageSiblingLoader.class.getSimpleName());
@ -65,9 +65,9 @@ public class MetaLanguageSiblingLoader implements ElementLanguageModuleLoaderSib
* @throws X4OLanguageLoaderException
* @see org.x4o.xml.element.ElementLanguageModuleLoaderSibling#loadLanguageSibling(org.x4o.xml.element.ElementLanguage, org.x4o.xml.core.config.X4OLanguageLoader)
*/
public void loadLanguageSibling(ElementLanguage elementLanguage,X4OLanguageLoader loader) throws X4OLanguageLoaderException {
public void loadLanguageSibling(X4OLanguageLocal languageLocal,X4OLanguageLoader loader) throws X4OLanguageLoaderException {
// Load the meta language.
loader.loadLanguage(elementLanguage, META_LANGUAGE, META_LANGUAGE_VERSION);
loader.loadLanguage(languageLocal, META_LANGUAGE, META_LANGUAGE_VERSION);
}
}

View file

@ -26,7 +26,9 @@ package org.x4o.xml.meta;
import java.util.Date;
import org.x4o.xml.core.config.X4OLanguagePropertyKeys;
import org.x4o.xml.meta.test.MTestParser;
import org.x4o.xml.element.ElementLanguage;
import org.x4o.xml.io.X4OReaderContext;
import org.x4o.xml.meta.test.MTestDriver;
import junit.framework.TestCase;
@ -39,38 +41,44 @@ import junit.framework.TestCase;
public class ReferenceStoreTest extends TestCase {
public void testMetaGeneric() throws Exception {
MTestParser parser = new MTestParser();
parser.setProperty(X4OLanguagePropertyKeys.PHASE_SKIP_RELEASE, true);
ElementLanguage context = null;
MTestDriver driver = new MTestDriver();
X4OReaderContext<?> reader = driver.createReaderContext();
reader.setProperty(X4OLanguagePropertyKeys.PHASE_SKIP_RELEASE, true);
try {
parser.parseResource("tests/meta-generic.xml");
assertEquals(Date.class.getName(),parser.getElementLanguage().getRootElement().getChilderen().get(0).getElementObject().getClass().getName());
context = reader.readResourceContext("tests/meta-generic.xml");
assertEquals(Date.class.getName(),context.getRootElement().getChilderen().get(0).getElementObject().getClass().getName());
} finally {
parser.doReleasePhaseManual();
reader.releaseContext(context);
}
}
public void testLoadClass() throws Exception {
MTestParser parser = new MTestParser();
parser.setProperty(X4OLanguagePropertyKeys.PHASE_SKIP_RELEASE, true);
ElementLanguage context = null;
MTestDriver driver = new MTestDriver();
X4OReaderContext<?> reader = driver.createReaderContext();
reader.setProperty(X4OLanguagePropertyKeys.PHASE_SKIP_RELEASE, true);
try {
parser.parseResource("tests/reference/store-ref.xml");
assertEquals(Date.class.getName(),parser.getElementLanguage().getRootElement().getChilderen().get(0).getElementObject().getClass().getName());
context = reader.readResourceContext("tests/reference/store-ref.xml");
assertEquals(Date.class.getName(),context.getRootElement().getChilderen().get(0).getElementObject().getClass().getName());
} finally {
parser.doReleasePhaseManual();
reader.releaseContext(context);
}
}
public void testStoreRef() throws Exception {
MTestParser parser = new MTestParser();
parser.setProperty(X4OLanguagePropertyKeys.PHASE_SKIP_RELEASE, true);
ElementLanguage context = null;
MTestDriver driver = new MTestDriver();
X4OReaderContext<?> reader = driver.createReaderContext();
reader.setProperty(X4OLanguagePropertyKeys.PHASE_SKIP_RELEASE, true);
try {
parser.parseResource("tests/reference/store-ref.xml");
assertEquals(Date.class.getName(),parser.getElementLanguage().getRootElement().getChilderen().get(0).getElementObject().getClass().getName());
assertEquals(Date.class.getName(),parser.getElementLanguage().getRootElement().getChilderen().get(1).getElementObject().getClass().getName());
assertEquals(Date.class.getName(),parser.getElementLanguage().getRootElement().getChilderen().get(2).getElementObject().getClass().getName());
assertEquals(Date.class.getName(),parser.getElementLanguage().getRootElement().getChilderen().get(3).getElementObject().getClass().getName());
context = reader.readResourceContext("tests/reference/store-ref.xml");
assertEquals(Date.class.getName(),context.getRootElement().getChilderen().get(0).getElementObject().getClass().getName());
assertEquals(Date.class.getName(),context.getRootElement().getChilderen().get(1).getElementObject().getClass().getName());
assertEquals(Date.class.getName(),context.getRootElement().getChilderen().get(2).getElementObject().getClass().getName());
assertEquals(Date.class.getName(),context.getRootElement().getChilderen().get(3).getElementObject().getClass().getName());
} finally {
parser.doReleasePhaseManual();
reader.releaseContext(context);
}
}

View file

@ -23,21 +23,44 @@
package org.x4o.xml.meta.test;
import org.x4o.xml.core.X4ODriver;
import org.x4o.xml.core.X4OParser;
import org.x4o.xml.element.ElementLanguage;
import org.x4o.xml.X4ODriver;
import org.x4o.xml.X4ODriverManager;
import org.x4o.xml.core.config.DefaultX4OLanguage;
import org.x4o.xml.core.config.DefaultX4OLanguageConfiguration;
import org.x4o.xml.core.config.X4OLanguage;
import org.x4o.xml.core.phase.X4OPhaseManagerFactory;
import org.x4o.xml.io.X4OReaderContext;
import org.x4o.xml.io.X4OWriterContext;
public class MTestParser extends X4OParser {
public class MTestDriver extends X4ODriver {
public MTestParser() {
super("mtest");
public static final String LANGUAGE_NAME = "mtest";
public static final String[] LANGUAGE_VERSIONS = new String[]{X4ODriver.DEFAULT_LANGUAGE_VERSION};
@Override
public String getLanguageName() {
return LANGUAGE_NAME;
}
public ElementLanguage getElementLanguage() {
return getDriver().getElementLanguage();
@Override
public String[] getLanguageVersions() {
return LANGUAGE_VERSIONS;
}
public X4ODriver getDriver() {
return super.getDriver();
@Override
public X4OLanguage buildLanguage(String version) {
return new DefaultX4OLanguage(new DefaultX4OLanguageConfiguration(),X4OPhaseManagerFactory.createDefaultX4OPhaseManager(),getLanguageName(),getLanguageVersionDefault());
}
static public MTestDriver getInstance() {
return (MTestDriver)X4ODriverManager.getX4ODriver(LANGUAGE_NAME);
}
public X4OReaderContext<?> createReaderContext() {
return (X4OReaderContext<?>)super.createReader();
}
public X4OWriterContext<?> createWriterContext() {
return (X4OWriterContext<?>)super.createWriter();
}
}