X4O: Fixed recursief debugging xml output

This commit is contained in:
Willem Cazander 2025-11-07 20:13:30 +01:00
parent 889e4b9eb8
commit 2819b36a45
37 changed files with 592 additions and 570 deletions

View file

@ -26,6 +26,10 @@ import java.util.List;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.lang.X4OLanguage;
import org.x4o.xml.lang.X4OLanguageLocal;
import org.x4o.xml.lang.X4OLanguageSession;
import org.x4o.xml.lang.X4OLanguageSessionLocal;
/**
* X4ODriverManager
@ -86,12 +90,13 @@ public class X4ODriverManagerTest {
@Test
public void testLanguageVersionNonExcisting() throws Exception {
String language = "test";
String version = "99.9";
String languageTest = "test";
String versionTest = "99.9";
Throwable e = null;
try {
X4ODriver<?> driver = X4ODriverManager.getX4ODriver(language);
driver.createLanguage(version).createLanguageSession();
X4ODriver<?> driver = X4ODriverManager.getX4ODriver(languageTest);
X4OLanguage language = driver.createLanguage(versionTest);
X4OLanguageLocal.class.cast(language).init(language.createLanguageSession());
} catch (Throwable catchE) {
e = catchE;
}

View file

@ -28,13 +28,18 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.nio.charset.Charset;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.sax3.SAX3WriterXml;
import org.x4o.sax3.io.ContentCloseable;
import org.x4o.sax3.io.ContentWriter;
import org.x4o.xml.X4ODriver;
import org.x4o.xml.io.DefaultX4OReader;
import org.x4o.xml.io.DefaultX4OWriter;
import org.x4o.xml.io.X4ODebugWriter;
import org.x4o.xml.io.X4OReader;
import org.x4o.xml.io.X4OWriter;
import org.x4o.xml.test.TestDriver;
@ -77,8 +82,13 @@ public class X4ODebugWriterTest {
File debugFile = createDebugFile();
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
X4OReader<TestObjectRoot> reader = driver.createReader();
reader.setProperty(DefaultX4OReader.DEBUG_OUTPUT_STREAM, new FileOutputStream(debugFile));
reader.readResource("tests/attributes/test-bean.xml");
try (ContentWriter debugHandler = new SAX3WriterXml(new FileOutputStream(debugFile))) {
try (ContentCloseable docClosure = debugHandler.startDocumentClosure()) {
debugHandler.startPrefixMapping(X4ODebugWriter.DEBUG_URI_NS, X4ODebugWriter.DEBUG_URI);
reader.setProperty(DefaultX4OReader.DEBUG_OUTPUT_HANDLER, debugHandler);
reader.readResource("tests/attributes/test-bean.xml");
}
}
Assertions.assertTrue(debugFile.exists(), "Debug file does not exists.");
String debug = readFile(debugFile);
@ -86,8 +96,8 @@ public class X4ODebugWriterTest {
Assertions.assertFalse(debug.length()==0, "no debug content");
Assertions.assertTrue(debug.length()>20, "debug content to small");
System.out.println("=================== Reader Output ======================");
System.out.println(debug);
//System.out.println("=================== Reader Output ======================");
//System.out.println(debug);
debugFile.delete();
}
@ -100,8 +110,10 @@ public class X4ODebugWriterTest {
X4OWriter<TestObjectRoot> writer = driver.createWriter();
TestObjectRoot object = reader.readResource("tests/attributes/test-bean.xml");
writer.setProperty(DefaultX4OWriter.DEBUG_OUTPUT_STREAM, new FileOutputStream(debugFile));
writer.writeFile(object, writeFile);
try (OutputStream out = new FileOutputStream(debugFile)) {
writer.setProperty(DefaultX4OWriter.DEBUG_OUTPUT_STREAM, out);
writer.writeFile(object, writeFile);
}
Assertions.assertTrue(debugFile.exists(), "Debug file does not exists.");
String debug = readFile(debugFile);

View file

@ -31,6 +31,8 @@ import org.x4o.xml.X4ODriver;
import org.x4o.xml.eld.CelDriver;
import org.x4o.xml.io.DefaultX4OReader;
import org.x4o.xml.io.X4OEntityResolver;
import org.x4o.xml.lang.X4OLanguage;
import org.x4o.xml.lang.X4OLanguageLocal;
import org.x4o.xml.lang.X4OLanguageSession;
import org.x4o.xml.test.TestDriver;
import org.x4o.xml.test.models.TestObjectRoot;
@ -62,14 +64,19 @@ public class X4OEntityResolverTest {
@Test
public void testResolve() throws Exception {
X4ODriver<?> driver = new CelDriver();
X4OEntityResolver resolver = new X4OEntityResolver(driver.createLanguage().createLanguageSession(),DefaultX4OReader.DEFAULT_PROPERTY_CONFIG);
InputSource input = resolver.resolveEntity("","http://cel.x4o.org/xml/ns/cel-root-1.0.xsd");
Assertions.assertNotNull(input);
X4OLanguage language = driver.createLanguage();
try (X4OLanguageSession session = language.createLanguageSession()) {
X4OLanguageLocal.class.cast(language).init(session);
X4OEntityResolver resolver = new X4OEntityResolver(session, DefaultX4OReader.DEFAULT_PROPERTY_CONFIG);
InputSource input = resolver.resolveEntity("","http://cel.x4o.org/xml/ns/cel-root-1.0.xsd");
Assertions.assertNotNull(input);
}
}
@Test
public void testResolveMissing() throws Exception {
X4ODriver<TestObjectRoot> driver = new TestDriver();
// NOTE: this session is not inited, see fix code above.
X4OEntityResolver resolver = new X4OEntityResolver(driver.createLanguage().createLanguageSession(),DefaultX4OReader.DEFAULT_PROPERTY_CONFIG);
Exception e = null;
try {

View file

@ -32,6 +32,7 @@ import org.x4o.xml.X4ODriverManager;
import org.x4o.xml.eld.CelDriver;
import org.x4o.xml.eld.EldDriver;
import org.x4o.xml.lang.task.X4OLanguageTask;
import org.x4o.xml.lang.task.run.X4OTaskRunner;
import org.x4o.xml.test.TestDriver;
/**
@ -56,7 +57,7 @@ public class X4OWriteLanguageDocExecutorTest {
SAX3PropertyConfig config = task.createTaskConfig();
File outputPath = createOutputPath(outputPostfix);
config.setProperty(EldDocWriter.OUTPUT_PATH,outputPath);
task.createTaskExecutor(config).execute(driver.createLanguage());
X4OTaskRunner.runTaskLanguage(task, driver.createLanguage(), config);
Assertions.assertTrue(outputPath.exists());
Assertions.assertTrue(outputPath.list()!=null);
Assertions.assertTrue(outputPath.list().length>2);

View file

@ -37,6 +37,7 @@ import org.x4o.xml.eld.EldDriver;
import org.x4o.xml.eld.EldModuleLoaderCore;
import org.x4o.xml.io.X4OWriterTest;
import org.x4o.xml.lang.task.X4OLanguageTask;
import org.x4o.xml.lang.task.run.X4OTaskRunner;
import org.x4o.xml.test.swixml.SwiXmlDriver;
/**
@ -71,7 +72,7 @@ public class EldXsdLanguageTaskTest {
config.setProperty(key, value);
}
}
task.createTaskExecutor(config).execute(driver.createLanguage());
X4OTaskRunner.runTaskLanguage(task, driver.createLanguage(), config);
Assertions.assertTrue(outputPath.exists());
Assertions.assertTrue(outputPath.list()!=null);
return outputPath;

View file

@ -42,13 +42,16 @@ import org.x4o.xml.test.models.TestObjectRoot;
public class DefaultX4OLanguageLoaderTest {
static X4ODriver<TestObjectRoot> driver;
static X4OLanguage language;
static X4OLanguageLocal language;
static X4OLanguageSession session;
static DefaultX4OLanguageLoader loader;
@BeforeAll
public static void setUp() throws Exception {
driver = TestDriver.getInstance();
language = driver.createLanguage();
language = (X4OLanguageLocal)driver.createLanguage();
session = language.createLanguageSession();
language.init(session);
loader = (DefaultX4OLanguageLoader)language.getLanguageConfiguration().getDefaultLanguageLoader().newInstance();
}
@ -56,7 +59,7 @@ public class DefaultX4OLanguageLoaderTest {
public void testLoadingDuplicate() throws Exception {
Exception e = null;
try {
loader.loadLanguage((X4OLanguageLocal)language, "test", "1.0");
loader.loadLanguage(session, language, "test", "1.0");
} catch (Exception ee) {
e = ee;
}