Imported fixed + octal support.

This commit is contained in:
Willem Cazander 2024-06-15 16:19:20 +02:00
parent 0c811208ec
commit f08629dba0
120 changed files with 4881 additions and 1862 deletions

427
pom.xml
View file

@ -2,6 +2,11 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent>
<groupId>love.distributedrebirth.jedi</groupId>
<artifactId>parent-jedi-pom</artifactId>
<version>〇一。壬寅。一〄-SNAPSHOT</version>
</parent>
<groupId>org.x4o</groupId> <groupId>org.x4o</groupId>
<artifactId>x4o</artifactId> <artifactId>x4o</artifactId>
<packaging>pom</packaging> <packaging>pom</packaging>
@ -14,38 +19,6 @@
<name>X4O</name> <name>X4O</name>
<url>http://www.x4o.org/</url> <url>http://www.x4o.org/</url>
</organization> </organization>
<developers>
<developer>
<id>willem.cazander</id>
<name>Willem Cazander</name>
<email>w.cazander@gmail.com</email>
<organization>X4O.org</organization>
<timezone>+1</timezone>
<roles>
<role>Project Manager</role>
<role>Architect</role>
</roles>
</developer>
</developers>
<licenses>
<license>
<name>BSD</name>
<url>license.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<connection>scm:git:ssh://git.sv.gnu.org:/srv/git/x4o.git</connection>
<developerConnection>scm:git:ssh://git.sv.gnu.org:/srv/git/x4o.git</developerConnection>
<url>http://git.savannah.gnu.org/cgit/x4o.git</url>
</scm>
<issueManagement>
<system>savannah</system>
<url>https://savannah.nongnu.org/bugs/?group=x4o</url>
</issueManagement>
<prerequisites>
<maven>3.0.1</maven>
</prerequisites>
<modules> <modules>
<module>x4o-driver</module> <module>x4o-driver</module>
<module>x4o-eld-doc</module> <module>x4o-eld-doc</module>
@ -53,17 +26,9 @@
<module>x4o-meta</module> <module>x4o-meta</module>
<module>x4o-tool</module> <module>x4o-tool</module>
</modules> </modules>
<distributionManagement>
<site>
<id>x4o-site</id>
<url>http://www.x4o.org/</url>
</site>
</distributionManagement>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.javaVersion>1.5</project.build.javaVersion>
<!-- Build plugin versions --> <!-- Build plugin versions
<maven-compiler-plugin.version>2.3.2</maven-compiler-plugin.version> <maven-compiler-plugin.version>2.3.2</maven-compiler-plugin.version>
<maven-source-plugin.version>2.1.2</maven-source-plugin.version> <maven-source-plugin.version>2.1.2</maven-source-plugin.version>
<maven-javadoc-plugin.version>2.9</maven-javadoc-plugin.version> <maven-javadoc-plugin.version>2.9</maven-javadoc-plugin.version>
@ -81,6 +46,7 @@
<maven-jar-plugin.version>2.4</maven-jar-plugin.version> <maven-jar-plugin.version>2.4</maven-jar-plugin.version>
<maven-license-plugin.version>1.10.b1</maven-license-plugin.version> <maven-license-plugin.version>1.10.b1</maven-license-plugin.version>
<maven-clean-plugin.version>2.4.1</maven-clean-plugin.version> <maven-clean-plugin.version>2.4.1</maven-clean-plugin.version>
-->
<!-- Build non-maven plugin versions --> <!-- Build non-maven plugin versions -->
<webstart-maven-plugin.version>1.0-beta-1</webstart-maven-plugin.version> <webstart-maven-plugin.version>1.0-beta-1</webstart-maven-plugin.version>
@ -112,235 +78,55 @@
<plexus-utils.version>3.0.1</plexus-utils.version> <plexus-utils.version>3.0.1</plexus-utils.version>
<maven-plugin-plugin.version>3.2</maven-plugin-plugin.version> <maven-plugin-plugin.version>3.2</maven-plugin-plugin.version>
</properties> </properties>
<build> <dependencyManagement>
<plugins> <dependencies>
<plugin> <dependency>
<artifactId>maven-clean-plugin</artifactId> <groupId>org.junit.jupiter</groupId>
<version>${maven-clean-plugin.version}</version> <artifactId>junit-jupiter</artifactId>
<executions> <version>5.11.0-M1</version>
<execution> </dependency>
<id>default-clean</id> <dependency>
<phase>clean</phase> <groupId>org.apache.tomcat</groupId>
<goals> <artifactId>jasper-el</artifactId>
<goal>clean</goal> <version>6.0.53</version>
</goals> </dependency>
<configuration> <dependency>
<!-- only clean childeren of target not folder itself. --> <groupId>de.odysseus.juel</groupId>
<excludeDefaultDirectories>true</excludeDefaultDirectories> <artifactId>juel</artifactId>
<filesets> <version>2.1.0</version>
<fileset> </dependency>
<directory>${project.build.directory}</directory> <dependency>
<includes> <groupId>org.x4o</groupId>
<include>**/*</include> <artifactId>x4o-driver</artifactId>
</includes> <version>${project.version}</version>
</fileset> </dependency>
</filesets> <dependency>
</configuration> <groupId>org.x4o</groupId>
</execution> <artifactId>x4o-eld-doc</artifactId>
</executions> <version>${project.version}</version>
</plugin> </dependency>
<plugin> <dependency>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.x4o</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>x4o-html</artifactId>
<version>${maven-compiler-plugin.version}</version> <version>${project.version}</version>
<configuration> </dependency>
<encoding>${project.build.sourceEncoding}</encoding> <dependency>
<source>${project.build.javaVersion}</source> <groupId>org.x4o</groupId>
<target>${project.build.javaVersion}</target> <artifactId>x4o-meta</artifactId>
<showDeprecation>true</showDeprecation> <version>${project.version}</version>
<showWarnings>true</showWarnings> </dependency>
<optimize>true</optimize> <dependency>
<fork>false</fork> <groupId>org.x4o</groupId>
</configuration> <artifactId>x4o-tool-ant-plugin</artifactId>
</plugin> <version>${project.version}</version>
<plugin> </dependency>
<groupId>org.apache.maven.plugins</groupId> <dependency>
<artifactId>maven-source-plugin</artifactId> <groupId>org.x4o</groupId>
<version>${maven-source-plugin.version}</version> <artifactId>x4o-tool-maven-plugin</artifactId>
<executions> <version>${project.version}</version>
<execution> </dependency>
<id>attach-sources</id> </dependencies>
<goals> </dependencyManagement>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-plugin.version}</version>
<configuration>
<quiet>true</quiet>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<includes>
<include>**/*Test.java</include>
</includes>
<excludes>
<exclude>**/*InteractiveTest.java</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${maven-checkstyle-plugin.version}</version>
<configuration>
<enableRulesSummary>true</enableRulesSummary>
<configLocation>src/main/config/checkstyle.xml</configLocation>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>${maven-site-plugin.version}</version>
</plugin>
<!-- Build documention <plugin> <groupId>com.agilejava.docbkx</groupId>
<artifactId>docbkx-maven-plugin</artifactId> <version>2.0.9</version> <configuration>
<sourceDirectory>src/main/docbook/</sourceDirectory> <targetDirectory>target/site/docbook/</targetDirectory>
<includes>*.xml</includes> <xincludeSupported>true</xincludeSupported> <entities>
<entity><name>version</name><value>${project.version}</value></entity> </entities>
<chunkedOutput>true</chunkedOutput> </configuration> <executions> <execution>
<id>create-pdf-docs</id> <phase>site</phase> <goals><goal>generate-pdf</goal></goals>
<configuration> <imgSrcPath>file:///${basedir}/src/main/docbook/</imgSrcPath>
</configuration> </execution> <execution> <id>create-html-docs</id> <phase>site</phase>
<goals><goal>generate-html</goal></goals> <configuration> <preProcess> <copy
todir="target/site/docbook/images"> <fileset dir="src/main/docbook/images"
/> </copy> </preProcess> </configuration> </execution> </executions> <dependencies>
<dependency> <groupId>org.docbook</groupId> <artifactId>docbook-xml</artifactId>
<version>4.4</version> <scope>runtime</scope> </dependency> </dependencies>
</plugin> -->
<!-- Perform maven releases -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${maven-release-plugin.version}</version>
<configuration>
<preparationGoals>clean install verify</preparationGoals>
<goals>clean install</goals>
<!-- <goals>clean install javadoc:javadoc deploy</goals> <arguments>-Prelease
-DaltDeploymentRepository="${altDeploymentRepository}"</arguments> -->
</configuration>
</plugin>
</plugins>
<!-- Extensions -->
<extensions>
</extensions>
<!-- PluginManagement -->
<pluginManagement>
</pluginManagement>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>${maven-project-info-reports-plugin.version}</version>
<configuration>
<aggregate>true</aggregate>
<dependencyDetailsEnabled>false</dependencyDetailsEnabled>
<dependencyLocationsEnabled>false</dependencyLocationsEnabled>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-plugin.version}</version>
<configuration>
<quiet>true</quiet>
<aggregate>true</aggregate>
<linksource>true</linksource>
<minmemory>64m</minmemory>
<maxmemory>512m</maxmemory>
<docfilessubdirs>true</docfilessubdirs>
<linksource>true</linksource>
</configuration>
<reportSets>
<reportSet>
<reports>
<report>aggregate</report>
<report>test-aggregate</report>
<report>fix</report>
<report>test-fix</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>${cobertura-maven-plugin.version}</version>
<configuration>
<aggregate>true</aggregate>
<formats>
<format>html</format>
<format>xml</format>
</formats>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jdepend-maven-plugin</artifactId>
<version>${jdepend-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>${maven-pmd-plugin.version}</version>
<configuration>
<aggregate>true</aggregate>
<linkXref>true</linkXref>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
<minimumTokens>100</minimumTokens>
<targetJdk>${project.build.javaVersion}</targetJdk>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${maven-checkstyle-plugin.version}</version>
<configuration>
<aggregate>true</aggregate>
<enableRulesSummary>true</enableRulesSummary>
<configLocation>src/main/config/checkstyle.xml</configLocation>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>${maven-surefire-report-plugin.version}</version>
<configuration>
<aggregate>true</aggregate>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-changelog-plugin</artifactId>
<version>${maven-changelog-plugin.version}</version>
<inherited>false</inherited>
</plugin>
</plugins>
</reporting>
<profiles> <profiles>
<profile> <profile>
<id>x4o-test-none</id> <id>x4o-test-none</id>
@ -367,106 +153,5 @@
<skipTests>true</skipTests> <skipTests>true</skipTests>
</properties> </properties>
</profile> </profile>
<profile>
<id>x4o-build-site-doc</id>
<properties>
<skipTests>true</skipTests>
</properties>
</profile>
<profile>
<id>x4o-check-license</id>
<properties>
<skipTests>true</skipTests>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.mycila.maven-license-plugin</groupId>
<artifactId>maven-license-plugin</artifactId>
<version>${maven-license-plugin.version}</version>
<configuration>
<header>license.txt</header>
<strictCheck>true</strictCheck>
<useDefaultExcludes>true</useDefaultExcludes>
<useDefaultMapping>false</useDefaultMapping>
<aggregate>true</aggregate>
<excludes>
<exclude>**/*~</exclude>
<exclude>**/.git</exclude>
<exclude>**/.git/**</exclude>
<exclude>.gitignore</exclude>
<exclude>**/target/**</exclude>
<exclude>**/test-output/**</exclude>
<exclude>**/release.properties</exclude>
<exclude>**/dependency-reduced-pom.xml</exclude>
<exclude>**/.classpath</exclude>
<exclude>**/.project</exclude>
<exclude>**/.settings/**</exclude>
<exclude>**/*.txt</exclude>
<exclude>**/*.jks</exclude>
<exclude>**/*.sch</exclude>
<exclude>**/*.so</exclude>
<exclude>**/*.dll</exclude>
<exclude>**/*.png</exclude>
<exclude>**/*.pom</exclude>
<exclude>**/.empty</exclude>
<exclude>**/.directory</exclude>
<exclude>**/empty-real.xml</exclude>
<exclude>**/empty-test.xml</exclude>
<exclude>**/empty-x4o.xml</exclude>
<exclude>**/empty-xml.xml</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/html-3.2/HTML32.dcl</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/html-3.2/HTML32.dtd</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/html-3.2/ISOlat1.ent</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/html-3.2/html32.soc</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/html-4.01/HTML4.cat</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/html-4.01/HTML4.decl</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/html-4.01/HTMLlat1.ent</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/html-4.01/HTMLspecial.ent</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/html-4.01/HTMLsymbol.ent</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/html-4.01/frameset.dtd</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/html-4.01/loose.dtd</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/html-4.01/strict.dtd</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/xhtml-1.0/xhtml-lat1.ent</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/xhtml-1.0/xhtml-special.ent</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/xhtml-1.0/xhtml-symbol.ent</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/xhtml-1.0/xhtml.soc</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/xhtml-1.0/xhtml1-frameset.dtd</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/xhtml-1.0/xhtml1-strict.dtd</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/xhtml-1.0/xhtml1-transitional.dtd</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/xhtml-1.0/xhtml1.dcl</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/html-5.draft/html5dtd.org-draft.dtd</exclude>
<exclude>**/src/main/resources/org/x4o/html/spec/html-5.draft/entities.json</exclude>
</excludes>
<mapping>
<java>SLASHSTAR_STYLE</java>
<xml>XML_STYLE</xml>
<eld>XML_STYLE</eld>
<fml>XML_STYLE</fml>
<xsd>XML_STYLE</xsd>
<dtd>XML_STYLE</dtd>
<ent>XML_STYLE</ent>
<apt>DOUBLETILDE_STYLE</apt>
<properties>SCRIPT_STYLE</properties>
<sh>SCRIPT_STYLE</sh>
<css>SLASHSTAR_STYLE</css>
<soc>DOUBLEDASHES_STYLE</soc>
<cat>DOUBLEDASHES_STYLE</cat>
<dcl>XML_STYLE</dcl><!-- this is not correct need SGML_STYLE !! -->
<decl>XML_STYLE</decl><!-- this is not correct need SGML_STYLE !! -->
</mapping>
</configuration>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles> </profiles>
</project> </project>

View file

@ -14,45 +14,18 @@
<dependency> <dependency>
<groupId>org.apache.tomcat</groupId> <groupId>org.apache.tomcat</groupId>
<artifactId>jasper-el</artifactId> <artifactId>jasper-el</artifactId>
<version>${jasper-el.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>de.odysseus.juel</groupId> <groupId>org.junit.jupiter</groupId>
<artifactId>juel</artifactId> <artifactId>junit-jupiter</artifactId>
<version>${juel.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>${xerces.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>${maven-site-plugin.version}</version>
<configuration>
<siteDirectory>${project.basedir}/../src/site-child</siteDirectory>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId> <artifactId>maven-jar-plugin</artifactId>
<version>${maven-jar-plugin.version}</version>
<executions> <executions>
<execution> <execution>
<goals> <goals>

View file

@ -23,12 +23,14 @@
package org.x4o.xml.eld.lang; package org.x4o.xml.eld.lang;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import org.x4o.xml.element.AbstractElementBindingHandler; import org.x4o.xml.element.AbstractElementBindingHandler;
import org.x4o.xml.element.Element; import org.x4o.xml.element.Element;
import org.x4o.xml.element.ElementBindingHandlerException; import org.x4o.xml.element.ElementBindingHandlerException;
import org.x4o.xml.element.ElementObjectPropertyValueException;
/** /**
* Binds to objects together with a method found by reflection. * Binds to objects together with a method found by reflection.
@ -40,6 +42,7 @@ public class ElementRefectionBindingHandler extends AbstractElementBindingHandle
private Class<?> parentClass = null; private Class<?> parentClass = null;
private Class<?> childClass = null; private Class<?> childClass = null;
private String property = null;
private String addMethod = null; private String addMethod = null;
private String getMethod = null; private String getMethod = null;
private String skipChilderenClassRegex = null; private String skipChilderenClassRegex = null;
@ -61,10 +64,37 @@ public class ElementRefectionBindingHandler extends AbstractElementBindingHandle
/** /**
* @see org.x4o.xml.element.AbstractElementBindingHandler#bindChild(org.x4o.xml.element.Element, java.lang.Object, java.lang.Object) * @see org.x4o.xml.element.AbstractElementBindingHandler#bindChild(org.x4o.xml.element.Element, java.lang.Object, java.lang.Object)
*/ */
@SuppressWarnings(value = {"unchecked", "rawtypes"})
public void bindChild(Element childElement, Object parentObject, Object childObject) throws ElementBindingHandlerException { public void bindChild(Element childElement, Object parentObject, Object childObject) throws ElementBindingHandlerException {
if (parentClass==null | childClass==null | addMethod==null) { if (parentClass==null | childClass==null) {
throw new IllegalStateException("Missing property: parentClass="+parentClass+" childClass="+childClass+" addMethod="+addMethod+"."); throw new IllegalStateException("Missing property: parentClass="+parentClass+" childClass="+childClass+" addMethod="+addMethod+".");
} }
if (property != null) { // Tmp hanky code here...
try {
String pop = property.substring(0,1).toUpperCase() + property.substring(1);
Method propType = parentObject.getClass().getMethod("get" + pop);
if (List.class.isAssignableFrom(propType.getReturnType())) {
Object data = childElement.getLanguageSession().getElementObjectPropertyValue().getProperty(parentObject, property);
if (data == null) {
// TODO: redo wrong type, add accesser object return from ElementObjectPropertyValue !!
childElement.getLanguageSession().getElementObjectPropertyValue().setProperty(parentObject, property, new ArrayList<>());
data = childElement.getLanguageSession().getElementObjectPropertyValue().getProperty(parentObject, property);
}
if (data instanceof Collection) {
Collection dataCollection = (Collection)data;
dataCollection.add(childObject);
return;
}
throw new ElementBindingHandlerException("Unhandled property collection type: "+data.getClass()+" on: "+parentObject.getClass()+" id:"+getId());
}
childElement.getLanguageSession().getElementObjectPropertyValue().setProperty(parentObject, property, childObject);
return;
} catch (/*ElementObjectPropertyValueException |*/ Exception e) {
throw new ElementBindingHandlerException(getId() + " error " + e.getMessage(), e);
}
}
// TODO: remove old...
Method[] ms = parentObject.getClass().getMethods(); Method[] ms = parentObject.getClass().getMethods();
for (Method m:ms) { for (Method m:ms) {
Class<?>[] types = m.getParameterTypes(); Class<?>[] types = m.getParameterTypes();
@ -86,17 +116,26 @@ public class ElementRefectionBindingHandler extends AbstractElementBindingHandle
return; return;
} }
} }
throw new ElementBindingHandlerException("Could not find method: "+addMethod+" on: "+childClass+" id:"+getId()); throw new ElementBindingHandlerException("Could not find method: "+addMethod+" on: "+parentObject.getClass()+" id:"+getId());
} }
/** /**
* @see org.x4o.xml.element.AbstractElementBindingHandler#createChilderen(org.x4o.xml.element.Element, java.lang.Object) * @see org.x4o.xml.element.AbstractElementBindingHandler#createChilderen(org.x4o.xml.element.Element, java.lang.Object)
*/ */
@SuppressWarnings("rawtypes")
public void createChilderen(Element parentElement,Object parentObject) throws ElementBindingHandlerException { public void createChilderen(Element parentElement,Object parentObject) throws ElementBindingHandlerException {
if (parentClass==null | childClass==null | getMethod==null) { if (parentClass==null | childClass==null) {
throw new IllegalStateException("Missing property: parentClass="+parentClass+" childClass="+childClass+" getMethod="+getMethod+"."); throw new IllegalStateException("Missing property: parentClass="+parentClass+" childClass="+childClass+" getMethod="+getMethod+".");
} }
if (property != null) {
try {
Object data = parentElement.getLanguageSession().getElementObjectPropertyValue().getProperty(parentObject, property);
createSafeChildLoop(parentElement, data);
} catch (ElementObjectPropertyValueException e) {
throw new ElementBindingHandlerException(e.getMessage(), e);
}
return;
}
Method[] ms = parentObject.getClass().getMethods(); Method[] ms = parentObject.getClass().getMethods();
for (Method m:ms) { for (Method m:ms) {
Class<?>[] types = m.getParameterTypes(); Class<?>[] types = m.getParameterTypes();
@ -112,32 +151,38 @@ public class ElementRefectionBindingHandler extends AbstractElementBindingHandle
} catch (Exception e) { } catch (Exception e) {
throw new ElementBindingHandlerException("Invoke error: "+e.getMessage()+" from: "+getMethod+" on: "+parentObject+" id:"+getId(),e); throw new ElementBindingHandlerException("Invoke error: "+e.getMessage()+" from: "+getMethod+" on: "+parentObject+" id:"+getId(),e);
} }
if (result==null) { createSafeChildLoop(parentElement, result);
return; // null is no childeren return;
} }
if (result instanceof List) { throw new ElementBindingHandlerException("Could not find method: "+getMethod+" on: "+parentObject.getClass()+" id:"+getId());
for (Object o:(List)result) { }
createSafeChild(parentElement, o);
} @SuppressWarnings("rawtypes")
return; protected void createSafeChildLoop(Element parentElement,Object result) throws ElementBindingHandlerException {
} else if (result instanceof Collection) { if (result==null) {
for (Object o:(Collection)result) { return; // null is no childeren
createSafeChild(parentElement, o); }
} if (result instanceof List) {
return; for (Object o:(List)result) {
} else if (result.getClass().isArray()) { createSafeChild(parentElement, o);
for (Object o:(Object[])result) { }
createSafeChild(parentElement, o); return;
} } else if (result instanceof Collection) {
return; for (Object o:(Collection)result) {
} else if (childClass.isAssignableFrom(result.getClass())) { createSafeChild(parentElement, o);
createSafeChild(parentElement, result); }
return; return;
} else { } else if (result.getClass().isArray()) {
throw new ElementBindingHandlerException("Unsupported return type: "+result.getClass()+" need: "+childClass+" from: "+getMethod+" on: "+parentObject+" id:"+getId()); for (Object o:(Object[])result) {
} createSafeChild(parentElement, o);
}
return;
} else if (childClass.isAssignableFrom(result.getClass())) {
createSafeChild(parentElement, result);
return;
} else {
throw new ElementBindingHandlerException("Unsupported return type: "+result.getClass()+" need: "+childClass+" from: "+getMethod+" on: "+parentElement.getElementObject().getClass()+" id:"+getId());
} }
throw new ElementBindingHandlerException("Could not find method: "+getMethod+" on: "+parentObject+" id:"+getId());
} }
/** /**
@ -211,6 +256,20 @@ public class ElementRefectionBindingHandler extends AbstractElementBindingHandle
this.getMethod = getMethod; this.getMethod = getMethod;
} }
/**
* @return the property
*/
public String getProperty() {
return property;
}
/**
* @param property the property to set
*/
public void setProperty(String property) {
this.property = property;
}
/** /**
* @return the skipChilderenClassRegex * @return the skipChilderenClassRegex
*/ */

View file

@ -53,9 +53,15 @@ public class EldXsdWriter {
public final static String OUTPUT_DOCUMENTATION = PROPERTY_CONTEXT_PREFIX+"output/documentation"; public final static String OUTPUT_DOCUMENTATION = PROPERTY_CONTEXT_PREFIX+"output/documentation";
public final static String FILTER_NAMESPACE = PROPERTY_CONTEXT_PREFIX+"filter/namespace"; public final static String FILTER_NAMESPACE = PROPERTY_CONTEXT_PREFIX+"filter/namespace";
public final static String FILTER_ELEMENT = PROPERTY_CONTEXT_PREFIX+"filter/element"; public final static String FILTER_ELEMENT = PROPERTY_CONTEXT_PREFIX+"filter/element";
public final static String PROLOG_SEPERATOR_LINE = PROPERTY_CONTEXT_PREFIX+"prolog/seperator-line";
public final static String PROLOG_SEPERATOR_ENABLE = PROPERTY_CONTEXT_PREFIX+"prolog/seperator-enable";
public final static String PROLOG_GENERATED_VERSION = PROPERTY_CONTEXT_PREFIX+"prolog/generated-version";
public final static String PROLOG_GENERATED_BY = PROPERTY_CONTEXT_PREFIX+"prolog/generated-by"; public final static String PROLOG_GENERATED_BY = PROPERTY_CONTEXT_PREFIX+"prolog/generated-by";
public final static String PROLOG_GENERATED_BY_ENABLE = PROPERTY_CONTEXT_PREFIX+"prolog/generated-by-enable"; public final static String PROLOG_GENERATED_ENABLE = PROPERTY_CONTEXT_PREFIX+"prolog/generated-enable";
public final static String PROLOG_PROVIDER_INFO_ENABLE = PROPERTY_CONTEXT_PREFIX+"prolog/provider-info-enable"; public final static String PROLOG_XMLNS_INFO_ENABLE = PROPERTY_CONTEXT_PREFIX+"prolog/xmlns-info-enable";
public final static String PROLOG_XMLNS_DESC_ENABLE = PROPERTY_CONTEXT_PREFIX+"prolog/xmlns-desc-enable";
private static final String DEFAULT_PROLOG_SEPERATOR = " ===================================================================== ";
static { static {
DEFAULT_PROPERTY_CONFIG = new PropertyConfig(true,ContentWriterXml.DEFAULT_PROPERTY_CONFIG,PROPERTY_CONTEXT_PREFIX, DEFAULT_PROPERTY_CONFIG = new PropertyConfig(true,ContentWriterXml.DEFAULT_PROPERTY_CONFIG,PROPERTY_CONTEXT_PREFIX,
@ -63,9 +69,13 @@ public class EldXsdWriter {
new PropertyConfigItem(OUTPUT_DOCUMENTATION, Boolean.class, true), new PropertyConfigItem(OUTPUT_DOCUMENTATION, Boolean.class, true),
new PropertyConfigItem(FILTER_NAMESPACE, String.class ), new PropertyConfigItem(FILTER_NAMESPACE, String.class ),
new PropertyConfigItem(FILTER_ELEMENT, String.class ), new PropertyConfigItem(FILTER_ELEMENT, String.class ),
new PropertyConfigItem(PROLOG_SEPERATOR_LINE, String.class, DEFAULT_PROLOG_SEPERATOR),
new PropertyConfigItem(PROLOG_SEPERATOR_ENABLE, Boolean.class, true),
new PropertyConfigItem(PROLOG_GENERATED_VERSION, String.class ),
new PropertyConfigItem(PROLOG_GENERATED_BY, String.class ), new PropertyConfigItem(PROLOG_GENERATED_BY, String.class ),
new PropertyConfigItem(PROLOG_GENERATED_BY_ENABLE, Boolean.class, true), new PropertyConfigItem(PROLOG_GENERATED_ENABLE, Boolean.class, true),
new PropertyConfigItem(PROLOG_PROVIDER_INFO_ENABLE, Boolean.class, true) new PropertyConfigItem(PROLOG_XMLNS_INFO_ENABLE, Boolean.class, true),
new PropertyConfigItem(PROLOG_XMLNS_DESC_ENABLE, Boolean.class, true)
); );
} }

View file

@ -40,6 +40,7 @@ import org.x4o.xml.element.ElementMetaBase;
import org.x4o.xml.element.ElementNamespace; import org.x4o.xml.element.ElementNamespace;
import org.x4o.xml.element.ElementNamespaceAttribute; import org.x4o.xml.element.ElementNamespaceAttribute;
import org.x4o.xml.io.XMLConstants; import org.x4o.xml.io.XMLConstants;
import org.x4o.xml.io.sax.ext.ContentWriterXml;
import org.x4o.xml.io.sax.ext.ContentWriterXsd; import org.x4o.xml.io.sax.ext.ContentWriterXsd;
import org.x4o.xml.io.sax.ext.ContentWriterXsd.Tag; import org.x4o.xml.io.sax.ext.ContentWriterXsd.Tag;
import org.x4o.xml.io.sax.ext.PropertyConfig; import org.x4o.xml.io.sax.ext.PropertyConfig;
@ -144,62 +145,63 @@ public class EldXsdWriterElement {
} }
} }
private static final String COMMENT_SEPERATOR = " ==================================================================== ";
private static final String COMMENT_TEXT = "====="; private static final String COMMENT_FORMAT = "%1$-20s %2$s";
private void prologWriteGenerator() throws SAXException { private void prologWriteGenerator() throws SAXException {
if (!propertyConfig.getPropertyBoolean(EldXsdWriter.PROLOG_GENERATED_BY_ENABLE)) { if (propertyConfig.getPropertyBoolean(EldXsdWriter.PROLOG_SEPERATOR_ENABLE)) {
xsdWriter.printComment(propertyConfig.getPropertyString(EldXsdWriter.PROLOG_SEPERATOR_LINE));
}
if (!propertyConfig.getPropertyBoolean(EldXsdWriter.PROLOG_GENERATED_ENABLE)) {
return; return;
} }
//xsdWriter.ignorableWhitespace(XMLConstants.CHAR_NEWLINE); String chEnter = propertyConfig.getPropertyString(ContentWriterXml.OUTPUT_CHAR_NEWLINE);
xsdWriter.printComment(COMMENT_SEPERATOR); String chTab = propertyConfig.getPropertyString(ContentWriterXml.OUTPUT_CHAR_TAB);
String generatedBy = propertyConfig.getPropertyString(EldXsdWriter.PROLOG_GENERATED_BY, EldXsdWriter.class.getSimpleName());
String byValue = propertyConfig.getPropertyString(EldXsdWriter.PROLOG_GENERATED_BY, EldXsdWriter.class.getSimpleName()); String generatedVersion = propertyConfig.getPropertyString(EldXsdWriter.PROLOG_GENERATED_VERSION);
if (!byValue.endsWith(".")) { StringBuilder b = new StringBuilder();
byValue += '.'; b.append(chEnter + chTab + String.format(COMMENT_FORMAT,"GeneratedBy:",generatedBy));
b.append(chEnter + chTab + String.format(COMMENT_FORMAT,"GeneratedDate:",new Date()));
if (generatedVersion != null && !generatedVersion.isEmpty()) {
b.append(chEnter + chTab + String.format(COMMENT_FORMAT,"GeneratedVersion:",generatedVersion));
} }
b.append(chEnter + chTab + String.format(COMMENT_FORMAT,"LanguageName:",language.getLanguageName()));
// this is a mess; b.append(chEnter + chTab + String.format(COMMENT_FORMAT,"LanguageVersion:",language.getLanguageVersion()));
String desc = "Automatic generated schema for language: "+language.getLanguageName()+" by "+byValue; b.append(chEnter);
int space = COMMENT_SEPERATOR.length()-desc.length()-(2*COMMENT_TEXT.length())-4;
StringBuilder b = new StringBuilder(COMMENT_SEPERATOR.length());
b.append(" ");
b.append(COMMENT_TEXT);
b.append(" ");
b.append(desc);
for (int i=0;i<space;i++) {
b.append(' ');
}
b.append(COMMENT_TEXT);
b.append(" ");
xsdWriter.printComment(b.toString()); xsdWriter.printComment(b.toString());
xsdWriter.printComment(COMMENT_SEPERATOR);
} }
private void prologWriteProvider(ElementNamespace ns) throws SAXException { private void prologWriteNSMeta(ElementNamespace ns) throws SAXException {
if (!propertyConfig.getPropertyBoolean(EldXsdWriter.PROLOG_PROVIDER_INFO_ENABLE)) { String chEnter = propertyConfig.getPropertyString(ContentWriterXml.OUTPUT_CHAR_NEWLINE);
return; String chTab = propertyConfig.getPropertyString(ContentWriterXml.OUTPUT_CHAR_TAB);
if (propertyConfig.getPropertyBoolean(EldXsdWriter.PROLOG_XMLNS_INFO_ENABLE)) {
StringBuilder b = new StringBuilder();
b.append(chEnter + chTab + String.format(COMMENT_FORMAT,"NSId:",ns.getId()));
b.append(chEnter + chTab + String.format(COMMENT_FORMAT,"NSName:",ns.getName()));
b.append(chEnter + chTab + String.format(COMMENT_FORMAT,"NSUri:",ns.getUri()));
b.append(chEnter + chTab + String.format(COMMENT_FORMAT,"NSUriSchema:",ns.getSchemaUri()));
b.append(chEnter);
xsdWriter.printComment(b.toString());
} }
X4OLanguageModule module = null; boolean printDesc = false;
for (X4OLanguageModule elm:language.getLanguageModules()) { if (propertyConfig.getPropertyBoolean(EldXsdWriter.PROLOG_XMLNS_DESC_ENABLE)) {
ElementNamespace s = elm.getElementNamespace(ns.getUri()); if (ns.getDescription() != null && !ns.getDescription().isEmpty()) {
if (s!=null) { printDesc = true;
module = elm;
break;
} }
} }
StringBuilder b = new StringBuilder(COMMENT_SEPERATOR.length()); if (printDesc && propertyConfig.getPropertyBoolean(EldXsdWriter.PROLOG_SEPERATOR_ENABLE)) {
String formatLine = "\n\t%1$-20s %2$s"; xsdWriter.printComment(propertyConfig.getPropertyString(EldXsdWriter.PROLOG_SEPERATOR_LINE));
b.append(String.format(formatLine,"Id:",module.getId())); }
b.append(String.format(formatLine,"ProviderName:",module.getProviderName())); if (printDesc) {
b.append(String.format(formatLine,"ProviderHost:",module.getProviderHost())); StringBuilder buf = new StringBuilder();
b.append(String.format(formatLine,"Namespaces:",module.getElementNamespaces().size())); for (String line : ns.getDescription().split("\n")) {
b.append(String.format(formatLine,"Uri:",ns.getUri())); buf.append(chEnter);
b.append(String.format(formatLine,"Uri schema",ns.getSchemaUri())); buf.append(chTab);
b.append(String.format(formatLine,"Created on:",new Date())); buf.append(line);
b.append("\n"); }
buf.append(chEnter);
xsdWriter.printComment(b.toString()); xsdWriter.printComment(buf.toString());
}
} }
public void startSchema(ElementNamespace ns) throws SAXException { public void startSchema(ElementNamespace ns) throws SAXException {
@ -207,7 +209,7 @@ public class EldXsdWriterElement {
xsdWriter.startDocument(); xsdWriter.startDocument();
prologWriteGenerator(); prologWriteGenerator();
prologWriteProvider(ns); prologWriteNSMeta(ns);
for (String uri:namespaces.keySet()) { for (String uri:namespaces.keySet()) {
String prefix = namespaces.get(uri); String prefix = namespaces.get(uri);
@ -280,14 +282,14 @@ public class EldXsdWriterElement {
atts = new AttributesImpl(); atts = new AttributesImpl();
atts.addAttribute ("", "minOccurs", "", "", "0"); // TODO: make unordered elements atts.addAttribute ("", "minOccurs", "", "", "0"); // TODO: make unordered elements
atts.addAttribute ("", "maxOccurs", "", "", "unbounded"); atts.addAttribute ("", "maxOccurs", "", "", "unbounded");
xsdWriter.printTagStart(Tag.choise, atts); xsdWriter.printTagStart(Tag.choice, atts);
for (X4OLanguageModule mod:language.getLanguageModules()) { for (X4OLanguageModule mod:language.getLanguageModules()) {
for (ElementNamespace ns:mod.getElementNamespaces()) { for (ElementNamespace ns:mod.getElementNamespaces()) {
writeElementClassNamespaces(ec,nsWrite,ns); writeElementClassNamespaces(ec,nsWrite,ns);
} }
} }
xsdWriter.printTagEnd(Tag.choise); xsdWriter.printTagEnd(Tag.choice);
} }
List<String> attrNames = new ArrayList<String>(30); List<String> attrNames = new ArrayList<String>(30);

View file

@ -22,6 +22,8 @@
*/ */
package org.x4o.xml.io; package org.x4o.xml.io;
import java.util.PrimitiveIterator;
/** /**
* XMLConstants for writing XML. * XMLConstants for writing XML.
* *
@ -72,9 +74,9 @@ public final class XMLConstants {
public static final String NULL_NS_URI = javax.xml.XMLConstants.NULL_NS_URI; // "" public static final String NULL_NS_URI = javax.xml.XMLConstants.NULL_NS_URI; // ""
/** /**
* (Start) Definition of DTD doctype. * Definition of DTD doctype opening tag.
*/ */
public static final String XML_DOCTYPE = "<!DOCTYPE"; public static final String XML_DOCTYPE_TAG_OPEN = "<!DOCTYPE";
/** /**
* Opens xml element tag. * Opens xml element tag.
@ -146,7 +148,17 @@ public final class XMLConstants {
*/ */
public static final char CHAR_NEWLINE = '\n'; public static final char CHAR_NEWLINE = '\n';
/// Unicode entity reference escape sequence starter
public static final int CODE_POINT_ENTIY_REF_ESCAPE = '&';
/// Unicode entity reference by number
public static final int CODE_POINT_ENTIY_REF_NUMBER = '#';
/// Unicode entity reference by hex number
public static final int CODE_POINT_ENTIY_REF_NUMBER_HEX = 'x';
/// Unicode entity reference escape sequence terminator
public static final int CODE_POINT_ENTIY_REF_TERMINATOR = ';';
static public String getDocumentDeclaration(String encoding) { static public String getDocumentDeclaration(String encoding) {
return getDocumentDeclaration(encoding,null); return getDocumentDeclaration(encoding,null);
@ -221,8 +233,9 @@ public final class XMLConstants {
} }
static public boolean isCharString(String value) { static public boolean isCharString(String value) {
for (int i=0;i<value.length();i++) { PrimitiveIterator.OfInt iterator = value.codePoints().iterator();
char c = value.charAt(i); while (iterator.hasNext()) {
int c = iterator.nextInt();
if (isNameChar(c)==false) { if (isNameChar(c)==false) {
return false; return false;
} }
@ -231,11 +244,17 @@ public final class XMLConstants {
} }
static public boolean isNameString(String value) { static public boolean isNameString(String value) {
for (int i=0;i<value.length();i++) { boolean first = true;
char c = value.charAt(i); PrimitiveIterator.OfInt iterator = value.codePoints().iterator();
if (i==0 && isNameStartChar(c)==false) { while (iterator.hasNext()) {
return false; int c = iterator.nextInt();
} else if (isNameChar(c)==false) { if (first) {
first = false;
if (isNameStartChar(c)==false) {
return false;
}
}
if (isNameChar(c)==false) {
return false; return false;
} }
} }
@ -246,92 +265,96 @@ public final class XMLConstants {
// &#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';' // &#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';'
//} //}
static private boolean escapeXMLValue(char c,StringBuilder result) { static private boolean escapeXMLValueAppend(int codePoint, StringBuilder result) {
if (c=='<') { if (codePoint == '<') {
result.append("&lt;"); result.append("&lt;");
return true; return true;
} }
if (c=='>') { if (codePoint == '>') {
result.append("&gt;"); result.append("&gt;");
return true; return true;
} }
if (c=='&') { if (codePoint == '&') {
result.append("&amp;"); result.append("&amp;");
return true; return true;
} }
if (c=='\"') { if (codePoint == '\"') {
result.append("&quote;"); result.append("&quote;");
return true; return true;
} }
if (c=='\'') { if (codePoint == '\'') {
result.append("&apos;"); result.append("&apos;");
return true; return true;
} }
return false; return false;
} }
static public String escapeAttributeName(String value) {
// Attribute ::= Name Eq AttValue
int length = value.length();
StringBuilder result = new StringBuilder(length);
for (int i=0;i<length;i++) {
char c = value.charAt(i);
if (isNameChar(c)) {
result.append(c);
} else {
result.append("#x");
result.append(Integer.toHexString(c));
result.append(";");
}
}
return result.toString();
}
static public String escapeAttributeValue(String value) { static public String escapeAttributeValue(String value) {
// Reference ::= EntityRef | CharRef // Reference ::= EntityRef | CharRef
// AttValue ::= '"' ([^<&"] | Reference)* '"' | "'" ([^<&'] | Reference)* "'" // AttValue ::= '"' ([^<&"] | Reference)* '"' | "'" ([^<&'] | Reference)* "'"
int length = value.length(); StringBuilder result = new StringBuilder(value.length());
StringBuilder result = new StringBuilder(length); PrimitiveIterator.OfInt iterator = value.codePoints().iterator();
for (int i=0;i<length;i++) { while (iterator.hasNext()) {
char c = value.charAt(i); int c = iterator.nextInt();
if (escapeXMLValue(c,result)) { // 3.3.3 Attribute-Value Normalization.
if (escapeXMLValueAppend(c,result)) {
continue; continue;
} }
if (/*isNameChar(c)*/true==false) {// TODO: add correct if (/*isNameChar(c)*/true==false) {// TODO: add correct
result.append("#x"); // 4.1 Character and Entity References;
// If the character reference begins with " &#x ", the digits and letters up to the terminating ; provide a hexadecimal representation of the character's code point in ISO/IEC 10646.
// If it begins just with " &# ", the digits up to the terminating ; provide a decimal representation of the character's code point.
result.append("&#x");
result.append(Integer.toHexString(c)); result.append(Integer.toHexString(c));
result.append(";"); result.append(";");
continue; continue;
} else { } else {
result.append(c); result.appendCodePoint(c);
} }
} }
return result.toString(); return result.toString();
} }
static public String escapeCharacters(String value) { static public String escapeCharacters(String value) {
int length = value.length(); StringBuilder result = new StringBuilder(value.length());
StringBuilder result = new StringBuilder(length); PrimitiveIterator.OfInt iterator = value.codePoints().iterator();
for (int i=0;i<length;i++) { while (iterator.hasNext()) {
char c = value.charAt(i); int c = iterator.nextInt();
if (c=='&') { //for (int i=0;i<length;i++) {
StringBuilder buf = new StringBuilder(length); // char c = value.charAt(i);
int iOrg = i; if (c == '&') {
i = charEntityLookup(i,value,buf); StringBuilder entity = new StringBuilder(16);
String entity = buf.toString(); entity.appendCodePoint(c);
if (entity.length()>0) { while (iterator.hasNext()) {
if (charEntityAllowed(entity)) { int entityCodePoint = iterator.nextInt();
result.append(entity); entity.appendCodePoint(entityCodePoint);
continue; // contine to next i char. if (entityCodePoint == ';') {
} else { break;
i = iOrg; // continue normal escape. }
if (entityCodePoint == ' ') { // TODO: impl DTD and check if add more or inverse only allow abc...
break;
} }
} }
if (charEntityAllowed(entity.toString())) {
result.append(entity);
continue; // contine to next i char.
} else {
//i = iOrg; // continue normal escape.
PrimitiveIterator.OfInt entityIterator = entity.codePoints().iterator();
while (entityIterator.hasNext()) {
int entityCodePoint = entityIterator.nextInt();
if (escapeXMLValueAppend(entityCodePoint,result)) {
continue;
}
result.appendCodePoint(entityCodePoint);
}
}
} else {
if (escapeXMLValueAppend(c,result)) {
continue;
}
result.appendCodePoint(c);
} }
if (escapeXMLValue(c,result)) {
continue;
}
result.append(c);
} }
return result.toString(); return result.toString();
} }
@ -382,20 +405,6 @@ public final class XMLConstants {
return false; return false;
} }
static private int charEntityLookup(int iStart,String value,StringBuilder buf) {
StringBuilder result = new StringBuilder();
int iMax = 10;
for (int i=iStart;i<value.length() && i<(iStart+iMax);i++) {
char c = value.charAt(i);
result.append(c);
if (c==';') {
buf.append(result);
return i;
}
}
return iStart; // not found continue escaping.
}
static public String escapeCharactersCdata(String value,String replaceCdataStart,String replaceCdataEnd) { static public String escapeCharactersCdata(String value,String replaceCdataStart,String replaceCdataEnd) {
value = value.replaceAll(CDATA_START_REGEX, replaceCdataStart); value = value.replaceAll(CDATA_START_REGEX, replaceCdataStart);
value = value.replaceAll(CDATA_END_REGEX, replaceCdataEnd); value = value.replaceAll(CDATA_END_REGEX, replaceCdataEnd);
@ -405,19 +414,19 @@ public final class XMLConstants {
static public String escapeCharactersComment(String value,String charTab,int indent) { static public String escapeCharactersComment(String value,String charTab,int indent) {
value = value.replaceAll(COMMENT_START, ""); value = value.replaceAll(COMMENT_START, "");
value = value.replaceAll(COMMENT_END, ""); value = value.replaceAll(COMMENT_END, "");
int length = value.length(); StringBuilder result = new StringBuilder(value.length());
StringBuilder result = new StringBuilder(length); PrimitiveIterator.OfInt iterator = value.codePoints().iterator();
for (int i=0;i<length;i++) { while (iterator.hasNext()) {
char c = value.charAt(i); int c = iterator.nextInt();
if (c=='\n') { if (c == '\n') {
result.append(c); result.appendCodePoint(c);
for (int ii = 0; ii < indent; ii++) { for (int ii = 0; ii < indent; ii++) {
result.append(charTab); result.append(charTab);
} }
continue; continue;
} }
result.append(c); result.appendCodePoint(c);
} }
return result.toString(); return result.toString();
} }

View file

@ -35,6 +35,7 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.PrimitiveIterator;
import java.util.Set; import java.util.Set;
import java.util.Stack; import java.util.Stack;
@ -213,12 +214,16 @@ public class AbstractContentWriterHandler implements ContentHandler {
return; return;
} }
String userComment = propertyConfig.getPropertyString(PROLOG_USER_COMMENT); String userComment = propertyConfig.getPropertyString(PROLOG_USER_COMMENT);
if (userComment==null) { if (userComment == null) {
return; return;
} }
ignorableWhitespace(XMLConstants.CHAR_NEWLINE); if (userComment.isEmpty()) {
comment(" "+userComment+" "); return;
ignorableWhitespace(XMLConstants.CHAR_NEWLINE); }
String chEnter = getPropertyConfig().getPropertyString(OUTPUT_CHAR_NEWLINE);
String chTab = getPropertyConfig().getPropertyString(OUTPUT_CHAR_TAB);
userComment = userComment.replaceAll("\n", chEnter + chTab);
comment(chEnter + chTab + userComment + chEnter);
} }
/** /**
@ -245,6 +250,26 @@ public class AbstractContentWriterHandler implements ContentHandler {
if (XMLConstants.isNameString(localName)==false) { if (XMLConstants.isNameString(localName)==false) {
throw new SAXException("LocalName of element is not valid in xml; '"+localName+"'"); throw new SAXException("LocalName of element is not valid in xml; '"+localName+"'");
} }
for (int i=0;i<atts.getLength();i++) {
boolean isFirst = true;
String attrLocalName = atts.getLocalName(i);
if (attrLocalName.isEmpty()) {
throw new SAXException("LocalAttributeName is missing characters");
}
PrimitiveIterator.OfInt iterator = attrLocalName.codePoints().iterator();
while (iterator.hasNext()) {
int c = iterator.nextInt();
if (isFirst) {
isFirst = false;
if (!XMLConstants.isNameStartChar(attrLocalName.codePoints().findFirst().getAsInt())) {
throw new SAXException("LocalAttributeName has illegal start character: " + attrLocalName);
}
}
if (!XMLConstants.isNameChar(c)) {
throw new SAXException("LocalAttributeName has illegal name character: " + attrLocalName);
}
}
}
autoCloseStartElement(); autoCloseStartElement();
startElement = new StringBuilder(200); startElement = new StringBuilder(200);
startElement.append(getPropertyConfig().getPropertyString(OUTPUT_CHAR_NEWLINE)); startElement.append(getPropertyConfig().getPropertyString(OUTPUT_CHAR_NEWLINE));
@ -344,7 +369,7 @@ public class AbstractContentWriterHandler implements ContentHandler {
int prevChars = 0; int prevChars = 0;
for (int i=0;i<atts.getLength();i++) { for (int i=0;i<atts.getLength();i++) {
String attributeUri = atts.getURI(i); String attributeUri = atts.getURI(i);
String attributeName = XMLConstants.escapeAttributeName(atts.getLocalName(i)); String attributeName = atts.getLocalName(i);
String attributeValue = atts.getValue(i); String attributeValue = atts.getValue(i);
if (attributeValue==null) { if (attributeValue==null) {
attributeValue = propertyConfig.getPropertyString(OUTPUT_CHAR_NULL); attributeValue = propertyConfig.getPropertyString(OUTPUT_CHAR_NULL);

View file

@ -67,7 +67,7 @@ public abstract class AbstractContentWriterLexical extends AbstractContentWriter
* @see org.xml.sax.ext.LexicalHandler#startDTD(java.lang.String, java.lang.String, java.lang.String) * @see org.xml.sax.ext.LexicalHandler#startDTD(java.lang.String, java.lang.String, java.lang.String)
*/ */
public void startDTD(String name, String publicId, String systemId) throws SAXException { public void startDTD(String name, String publicId, String systemId) throws SAXException {
charactersRaw(XMLConstants.XML_DOCTYPE); charactersRaw(XMLConstants.XML_DOCTYPE_TAG_OPEN);
charactersRaw(" "); charactersRaw(" ");
charactersRaw(name); charactersRaw(name);
if (publicId!=null) { if (publicId!=null) {

View file

@ -75,7 +75,7 @@ public class ContentWriterXsd extends ContentWriterTagWrapper<ContentWriterXsd.T
public enum Tag { public enum Tag {
all,annotation,any,anyAttribute,appinfo,attribute,attributeGroup, all,annotation,any,anyAttribute,appinfo,attribute,attributeGroup,
choise,complexContent,complexType,documentation,element,extension, choice,complexContent,complexType,documentation,element,extension,
field,group,_import,include,key,keyref,list,notation, field,group,_import,include,key,keyref,list,notation,
redefine,restriction,schema,selector,sequence, redefine,restriction,schema,selector,sequence,
simpleContent,simpleType,unoin,unique simpleContent,simpleType,unoin,unique

View file

@ -28,6 +28,7 @@ import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Supplier;
/** /**
* ContentConfig Defines checked config options. * ContentConfig Defines checked config options.
@ -48,8 +49,9 @@ public final class PropertyConfig implements Cloneable {
//public final static String X4O_PROPERTIES_READER_DTD = "reader/dtd/"; //public final static String X4O_PROPERTIES_READER_DTD = "reader/dtd/";
public final static String X4O_PROPERTIES_WRITER = "writer/x4o/"; public final static String X4O_PROPERTIES_WRITER = "writer/x4o/";
public final static String X4O_PROPERTIES_WRITER_XML = "content/"; public final static String X4O_PROPERTIES_WRITER_XML = "content/";
public final static String X4O_PROPERTIES_ELD_XSD = "eld-xsd/"; public final static String X4O_PROPERTIES_ELD_XSD = "eld-xsd/";
public final static String X4O_PROPERTIES_ELD_DOC = "eld-doc/"; public final static String X4O_PROPERTIES_ELD_DOC = "eld-doc/";
public final static String X4O_PROPERTIES_X4O_STATIC = "x4o-static/";
//public final static String X4O_PROPERTIES_WRITER_DTD = "writer/dtd/"; //public final static String X4O_PROPERTIES_WRITER_DTD = "writer/dtd/";
//public final static String X4O_PROPERTIES_WRITER_HTML = "writer/html/"; //public final static String X4O_PROPERTIES_WRITER_HTML = "writer/html/";
@ -267,6 +269,14 @@ public final class PropertyConfig implements Cloneable {
return item.getValueType(); return item.getValueType();
} }
public final Class<?> getPropertyType(String key,Supplier<Class<?>> defaultValue) {
Class<?> result = getPropertyType(key);
if (result != null) {
return result;
}
return defaultValue.get();
}
public final File getPropertyFile(String key) { public final File getPropertyFile(String key) {
Object value = getProperty(key); Object value = getProperty(key);
if (value instanceof File) { if (value instanceof File) {
@ -278,6 +288,14 @@ public final class PropertyConfig implements Cloneable {
throw new IllegalStateException("Wrong value type: "+value.getClass()+" for key: "+key); throw new IllegalStateException("Wrong value type: "+value.getClass()+" for key: "+key);
} }
public final File getPropertyFile(String key,Supplier<File> defaultValue) {
File result = getPropertyFile(key);
if (result != null) {
return result;
}
return defaultValue.get();
}
public final Boolean getPropertyBoolean(String key) { public final Boolean getPropertyBoolean(String key) {
Object value = getProperty(key); Object value = getProperty(key);
if (value instanceof Boolean) { if (value instanceof Boolean) {
@ -289,6 +307,14 @@ public final class PropertyConfig implements Cloneable {
throw new IllegalStateException("Wrong value type: "+value.getClass()+" for key: "+key); throw new IllegalStateException("Wrong value type: "+value.getClass()+" for key: "+key);
} }
public final Boolean getPropertyBoolean(String key,Supplier<Boolean> defaultValue) {
Boolean result = getPropertyBoolean(key);
if (result != null) {
return result;
}
return defaultValue.get();
}
public final Integer getPropertyInteger(String key) { public final Integer getPropertyInteger(String key) {
Object value = getProperty(key); Object value = getProperty(key);
if (value instanceof Integer) { if (value instanceof Integer) {
@ -300,6 +326,14 @@ public final class PropertyConfig implements Cloneable {
throw new IllegalStateException("Wrong value type: "+value.getClass()+" for key: "+key); throw new IllegalStateException("Wrong value type: "+value.getClass()+" for key: "+key);
} }
public final Integer getPropertyInteger(String key,Supplier<Integer> defaultValue) {
Integer result = getPropertyInteger(key);
if (result != null) {
return result;
}
return defaultValue.get();
}
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public final List<String> getPropertyList(String key) { public final List<String> getPropertyList(String key) {
Object value = getProperty(key); Object value = getProperty(key);
@ -312,6 +346,14 @@ public final class PropertyConfig implements Cloneable {
throw new IllegalStateException("Wrong value type: "+value.getClass()+" for key: "+key); throw new IllegalStateException("Wrong value type: "+value.getClass()+" for key: "+key);
} }
public final List<String> getPropertyList(String key, Supplier<List<String>> defaultValue) {
List<String> result = getPropertyList(key);
if (result != null) {
return result;
}
return defaultValue.get();
}
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public final Map<String,String> getPropertyMap(String key) { public final Map<String,String> getPropertyMap(String key) {
Object value = getProperty(key); Object value = getProperty(key);
@ -324,6 +366,14 @@ public final class PropertyConfig implements Cloneable {
throw new IllegalStateException("Wrong value type: "+value.getClass()+" for key: "+key); throw new IllegalStateException("Wrong value type: "+value.getClass()+" for key: "+key);
} }
public final Map<String,String> getPropertyMap(String key, Supplier<Map<String,String>> defaultValue) {
Map<String,String> result = getPropertyMap(key);
if (result != null) {
return result;
}
return defaultValue.get();
}
public final String getPropertyString(String key) { public final String getPropertyString(String key) {
Object value = getProperty(key); Object value = getProperty(key);
if (value instanceof String) { if (value instanceof String) {
@ -344,6 +394,14 @@ public final class PropertyConfig implements Cloneable {
} }
} }
public final String getPropertyString(String key,Supplier<String> defaultValue) {
String result = getPropertyString(key);
if (result != null) {
return result;
}
return defaultValue.get();
}
public final void copyParentProperties(PropertyConfig config) { public final void copyParentProperties(PropertyConfig config) {
for (String key:getPropertyKeys()) { for (String key:getPropertyKeys()) {
Object value = config.getProperty(key); Object value = config.getProperty(key);

View file

@ -0,0 +1,63 @@
/*
* Copyright (c) 2004-2014, Willem Cazander
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.lang.task;
import java.io.IOException;
import org.x4o.xml.io.sax.ext.PropertyConfig;
import org.x4o.xml.lang.X4OLanguage;
import org.xml.sax.SAXException;
/**
* X4OStaticLanguageTask is support class to write static resources files for X4O.
*
* @author Willem Cazander
* @version 1.0 May 6, 2024
*/
public class X4OStaticLanguageTask extends AbstractX4OLanguageTask {
public static final String TASK_ID = "x4o-static";
private static final String TASK_NAME = "X4O Static Task";
private static final String TASK_DESC = "Writes static support resources of X4O.";
public X4OStaticLanguageTask() {
super(TASK_ID,TASK_NAME,TASK_DESC,X4OStaticWriter.DEFAULT_PROPERTY_CONFIG);
}
/**
* Executes this language task.
*/
protected X4OLanguageTaskExecutor createTaskExecutorChecked(final PropertyConfig config) {
return new X4OLanguageTaskExecutor() {
public void execute(X4OLanguage language) throws X4OLanguageTaskException {
try {
new X4OStaticWriter(config).writeStatic();
} catch (SAXException e) {
throw new X4OLanguageTaskException(config,e.getMessage(),e);
} catch (IOException e) {
throw new X4OLanguageTaskException(config,e.getMessage(),e);
}
}
};
}
}

View file

@ -0,0 +1,107 @@
/*
* Copyright (c) 2004-2014, Willem Cazander
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.lang.task;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.x4o.xml.io.sax.ext.PropertyConfig;
import org.x4o.xml.io.sax.ext.PropertyConfig.PropertyConfigItem;
import org.x4o.xml.lang.X4OLanguageClassLoader;
import org.xml.sax.SAXException;
/**
* X4OStaticWriter writes the static support resources of X4O.
*
* @author Willem Cazander
* @version 1.0 May 6, 2024
*/
public class X4OStaticWriter {
private final static String PROPERTY_CONTEXT_PREFIX = PropertyConfig.X4O_PROPERTIES_PREFIX+PropertyConfig.X4O_PROPERTIES_X4O_STATIC;
public final static PropertyConfig DEFAULT_PROPERTY_CONFIG;
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";
static {
DEFAULT_PROPERTY_CONFIG = new PropertyConfig(true,null,PROPERTY_CONTEXT_PREFIX,
new PropertyConfigItem(true,OUTPUT_PATH, File.class ),
new PropertyConfigItem(OUTPUT_OASIS_XMLNS_CATALOG, Boolean.class, false)
);
}
private final PropertyConfig propertyConfig;
public X4OStaticWriter(PropertyConfig parentConfig) {
this.propertyConfig=new PropertyConfig(DEFAULT_PROPERTY_CONFIG,PROPERTY_CONTEXT_PREFIX);
this.propertyConfig.copyParentProperties(parentConfig);
}
public void writeStatic() throws SAXException, IOException {
File basePath = propertyConfig.getPropertyFile(OUTPUT_PATH);
Boolean outputOasis = propertyConfig.getPropertyBoolean(OUTPUT_OASIS_XMLNS_CATALOG);
if (basePath==null) {
throw new NullPointerException("Can't write resources to null output path.");
}
if (!basePath.exists()) {
basePath.mkdirs();
}
copyResourceToFile("META-INF/language/drivers-1.0.xsd", new File(basePath, "drivers-1.0.xsd"));
copyResourceToFile("META-INF/language/modules-1.0.xsd", new File(basePath, "modules-1.0.xsd"));
if (outputOasis != null && outputOasis) {
copyResourceToFile("META-INF/language/oasis-xmlns-catalog.dtd", new File(basePath, "oasis-xmlns-catalog.dtd"));
}
}
private void copyResourceToFile(String resource,File output) throws IOException {
ClassLoader cl = X4OLanguageClassLoader.getClassLoader();
InputStream inputStream = cl.getResourceAsStream(resource);
try {
copyStreamToFile(inputStream,output);
} catch (SecurityException | IOException | InterruptedException e) {
throw new IOException(e);
}
}
private void copyStreamToFile(InputStream inputStream,File output) throws SecurityException, IOException, InterruptedException {
OutputStream outputStream = new FileOutputStream(output);
try {
byte[] buffer = new byte[4096];
int len = inputStream.read(buffer);
while (len != -1) {
outputStream.write(buffer, 0, len);
len = inputStream.read(buffer);
if (Thread.interrupted()) {
throw new InterruptedException();
}
}
} finally {
inputStream.close();
outputStream.close();
}
}
}

View file

@ -0,0 +1,30 @@
/*
* Copyright (c) 2004-2014, Willem Cazander
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
/**
* October bits input and output interfaces.
*
*
* @since 1.0
*/
package org.x4o.xml.o4o.io;

View file

@ -0,0 +1,64 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.io.tlv;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
abstract public class AbstractTLVChainAtom<E, T extends TLVChainAtomFrame<E>, S extends TLVChainAtomFrameType<E>> implements TLVChainAtom<E, T, S> {
private final List<T> frames = new ArrayList<>();
@Override
public void clear() {
frames.clear();
}
@Override
public int getFrameCount() {
return frames.size();
}
@Override
public T getFrame(int index) {
return frames.get(index);
}
@Override
public Iterator<T> iterator() {
return frames.iterator();
}
@Override
public void addFrame(T frame) {
frames.add(frame);
}
}

View file

@ -0,0 +1,75 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.io.tlv;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public interface TLVChainAtom<E, T extends TLVChainAtomFrame<E>, S extends TLVChainAtomFrameType<E>> {
void clear();
int getFrameCount();
T getFrame(int index);
Iterator<T> iterator();
void addFrame(T frame);
default List<T> getFramesByType(S type) {
return getFramesByType(type.ordinalFrameType());
}
default List<T> getFramesByType(E type) {
List<T> result = new ArrayList<>();
int framesLength = getFrameCount();
for (int frameIdx = 0; frameIdx < framesLength; frameIdx++) {
T frame =getFrame(frameIdx);
if (frame.getSegmentProlog().equals(type)) {
result.add(frame);
}
}
return result;
}
default E[] getFirstDataOfType(S type) {
return getFirstDataOfType(type.ordinalFrameType());
}
default E[] getFirstDataOfType(E type) {
List<T> frames = getFramesByType(type);
if (frames.isEmpty()) {
return null;
}
return frames.get(0).getSegmentChain();
}
}

View file

@ -0,0 +1,37 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.io.tlv;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public interface TLVChainAtomFrame<T> {
T getSegmentProlog();
T[] getSegmentChain();
}

View file

@ -0,0 +1,35 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.io.tlv;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public interface TLVChainAtomFrameType<T> {
T ordinalFrameType();
}

View file

@ -0,0 +1,70 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.io.tlv;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public interface TLVChainAtomSerializable<E, T extends TLVChainAtomFrame<E>, S extends TLVChainAtomFrameType<E>> extends TLVChainAtom<E, T, S> {
void dataReadStream(InputStream input) throws IOException;
default void dataReadArray(byte[] input) {
try {
dataReadStream(new ByteArrayInputStream(input));
} catch (IOException e) {
throw new IllegalStateException(e);
}
}
default void dataReadBuffer(ByteBuffer input) {
dataReadArray(input.array());
}
void dataWriteStream(OutputStream output) throws IOException;
default byte[] dataWriteArray() {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
dataWriteStream(baos);
} catch (IOException e) {
throw new IllegalStateException(e);
}
return baos.toByteArray();
}
default ByteBuffer dataWriteBuffer() {
return ByteBuffer.wrap(dataWriteArray());
}
}

View file

@ -0,0 +1,99 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.io.tlv;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import org.x4o.xml.o4o.octal.PrimordialOctal;
import org.x4o.xml.o4o.octal.PrimordialOctalIterator;
import org.x4o.xml.o4o.octal.PrimordialOctalOrangeJuice;
import org.x4o.xml.o4o.octal.PrimordialOctalOrangeJuiceAtoms;
import org.x4o.xml.o4o.octal.PrimordialOctalOrangeSexWord;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public final class TLVChainOctalSex
extends AbstractTLVChainAtom<PrimordialOctalOrangeJuice, TLVChainOctalSexFrame, TLVChainOctalSexFrameType>
implements TLVChainAtomSerializable<PrimordialOctalOrangeJuice, TLVChainOctalSexFrame, TLVChainOctalSexFrameType> {
public void addFrame(PrimordialOctalOrangeJuice type, PrimordialOctalOrangeJuice[] data) {
addFrame(new TLVChainOctalSexFrame(type, data));
}
public void addFrame(TLVChainOctalSexFrameType type, PrimordialOctalOrangeJuice[] data) {
addFrame(type.ordinalFrameType(), data);
}
public void addFrame(PrimordialOctalOrangeJuice type, PrimordialOctalOrangeJuiceAtoms data) {
addFrame(type, data.toJuiceArray());
}
public void addFrame(TLVChainOctalSexFrameType type, PrimordialOctalOrangeJuiceAtoms data) {
addFrame(type.ordinalFrameType(), data.toJuiceArray());
}
public void dataReadIterator(PrimordialOctalIterator octalIterator) {
while (octalIterator.hasNext()) {
PrimordialOctalOrangeJuice frameType = PrimordialOctalOrangeSexWord.valueOfOctals(octalIterator);
PrimordialOctalOrangeJuice frameLength = PrimordialOctalOrangeSexWord.valueOfOctals(octalIterator);
List<PrimordialOctalOrangeJuice> frame = new ArrayList<>(frameLength.baitOctalNumber());
for (int i=0;i<frameLength.baitOctalNumber();i++) {
frame.add(PrimordialOctalOrangeSexWord.valueOfOctals(octalIterator));
}
addFrame(frameType, frame.toArray(new PrimordialOctalOrangeJuice[] {}));
}
}
@Override
public void dataReadStream(InputStream input) throws IOException {
dataReadIterator(PrimordialOctalIterator.valuesFrom(PrimordialOctal.valuesOfSmurfs(input)));
}
@Override
public void dataWriteStream(OutputStream output) throws IOException {
int framesLength = getFrameCount();
for (int frameIdx = 0; frameIdx < framesLength; frameIdx++) {
TLVChainOctalSexFrame frame = getFrame(frameIdx);
PrimordialOctalOrangeJuice[] data = frame.getSegmentChain();
if (data.length > PrimordialOctalOrangeJuice.MAX_VALUE) {
throw new IllegalStateException("Data frame segment to large: " + data.length);
}
PrimordialOctalOrangeJuice prolog = frame.getSegmentProlog();
PrimordialOctal.valuesToSmurfs(output, prolog.baitOctalIterator());
PrimordialOctal.valuesToSmurfs(output, PrimordialOctalOrangeSexWord.valueOfSmurf(data.length).baitOctalIterator());
for (int dataIdx = 0; dataIdx < data.length; dataIdx++) {
PrimordialOctal.valuesToSmurfs(output, data[dataIdx].baitOctalIterator());
}
output.flush();
}
}
}

View file

@ -0,0 +1,61 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.io.tlv;
import java.util.Objects;
import org.x4o.xml.o4o.octal.PrimordialOctalOrangeJuice;
import org.x4o.xml.o4o.octal.PrimordialOctalOrangeJuiceAtoms;
import org.x4o.xml.o4o.octal.PrimordialOctalOrangeString;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public final class TLVChainOctalSexFrame implements TLVChainAtomFrame<PrimordialOctalOrangeJuice> {
private final PrimordialOctalOrangeJuice segmentProlog;
private final PrimordialOctalOrangeJuice[] segmentChain;
public TLVChainOctalSexFrame(PrimordialOctalOrangeJuice segmentProlog, PrimordialOctalOrangeJuice[] segmentChain) {
this.segmentProlog = segmentProlog;
this.segmentChain = Objects.requireNonNull(segmentChain);
}
@Override
public PrimordialOctalOrangeJuice getSegmentProlog() {
return segmentProlog;
}
@Override
public PrimordialOctalOrangeJuice[] getSegmentChain() {
return segmentChain;
}
public PrimordialOctalOrangeJuiceAtoms getSegmentChainAtoms() {
return new PrimordialOctalOrangeString(segmentChain);
}
}

View file

@ -0,0 +1,35 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.io.tlv;
import org.x4o.xml.o4o.octal.PrimordialOctalOrangeJuice;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public interface TLVChainOctalSexFrameType extends TLVChainAtomFrameType<PrimordialOctalOrangeJuice> {
}

View file

@ -0,0 +1,90 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.io.tlv;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import org.x4o.xml.o4o.octo.OctoBitConverter;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public final class TLVChainOctoBit
extends AbstractTLVChainAtom<Byte, TLVChainOctoBitFrame, TLVChainOctoBitFrameType>
implements TLVChainAtomSerializable<Byte, TLVChainOctoBitFrame, TLVChainOctoBitFrameType> {
public void addFrame(byte type, byte[] data) {
addFrame(new TLVChainOctoBitFrame(type, data));
}
public void addFrame(TLVChainOctoBitFrameType type, byte[] data) {
addFrame(type.ordinalFrameTypeSmurf(), data);
}
public void addFrameString(byte type, OctoBitConverter<String> conv, String data) {
addFrame(type, conv.toBytes(data));
}
public void addFrameString(TLVChainOctoBitFrameType type, OctoBitConverter<String> conv, String data) {
addFrame(type.ordinalFrameTypeSmurf(), conv.toBytes(data));
}
@Override
public void dataReadStream(InputStream input) throws IOException {
ByteBuffer buffer = ByteBuffer.wrap(input.readAllBytes());
while (buffer.hasRemaining()) {
byte frameType = buffer.get();
int frameLength = Byte.toUnsignedInt(buffer.get());
ByteBuffer buff = ByteBuffer.allocate(frameLength);
for (int i = 0; i < frameLength; i++) {
buff.put(buffer.get());
}
addFrame(frameType, buff.array());
}
}
@Override
public void dataWriteStream(OutputStream output) throws IOException {
int framesLength = getFrameCount();
for (int frameIdx = 0; frameIdx < framesLength; frameIdx++) {
TLVChainOctoBitFrame frame = getFrame(frameIdx);
byte[] data = frame.getSegmentChainSmurfs();
if (data.length > (Character.MAX_VALUE >> Byte.SIZE)) {
throw new IllegalStateException("Data frame segment to large: " + data.length);
}
output.write(frame.getSegmentPrologSmurf());
output.write(data.length);
for (int dataIdx = 0; dataIdx < data.length; dataIdx++) {
output.write(data[dataIdx]);
}
output.flush();
}
}
}

View file

@ -0,0 +1,68 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.io.tlv;
import java.util.Arrays;
import java.util.Objects;
import org.x4o.xml.o4o.octo.OctoBitConverter;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public final class TLVChainOctoBitFrame implements TLVChainAtomFrame<Byte> {
private final byte segmentProlog;
private final byte[] segmentChain;
public TLVChainOctoBitFrame(byte segmentProlog, byte[] segmentChain) {
this.segmentProlog = segmentProlog;
this.segmentChain = Objects.requireNonNull(segmentChain);
}
public byte getSegmentPrologSmurf() {
return segmentProlog;
}
public byte[] getSegmentChainSmurfs() {
return segmentChain;
}
public String getSegmentChainString(OctoBitConverter<String> conv) {
return conv.fromBytes(getSegmentChainSmurfs());
}
@Override
public Byte getSegmentProlog() {
return Byte.valueOf(segmentProlog);
}
@Override
public Byte[] getSegmentChain() {
return Arrays.asList(segmentChain).toArray(new Byte[] {});
}
}

View file

@ -0,0 +1,40 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.io.tlv;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public interface TLVChainOctoBitFrameType extends TLVChainAtomFrameType<Byte> {
byte ordinalFrameTypeSmurf();
@Override
default Byte ordinalFrameType() {
return Byte.valueOf(ordinalFrameTypeSmurf());
}
}

View file

@ -0,0 +1,95 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.io.tlv;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.StandardCharsets;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public final class TLVChainSexTeenBit
extends AbstractTLVChainAtom<Character, TLVChainSexTeenBitFrame, TLVChainSexTeenBitFrameType>
implements TLVChainAtomSerializable<Character, TLVChainSexTeenBitFrame, TLVChainSexTeenBitFrameType> {
public void addFrame(char type, char[] data) {
addFrame(new TLVChainSexTeenBitFrame(type, data));
}
public void addFrame(TLVChainSexTeenBitFrameType type, char[] data) {
addFrame(type.ordinalFrameTypeSmurf(), data);
}
public void addFrameString(char type, String data) {
addFrame(type, data.toCharArray());
}
public void addFrameString(TLVChainSexTeenBitFrameType type, String data) {
addFrame(type.ordinalFrameTypeSmurf(), data.toCharArray());
}
@Override
public void dataReadStream(InputStream input) throws IOException {
CharsetDecoder decoder = StandardCharsets.UTF_16BE.newDecoder();
CharBuffer data = decoder.decode(ByteBuffer.wrap(input.readAllBytes()));
while (data.hasRemaining()) {
char frameType = data.get();
char frameLength = data.get();
CharBuffer buff = CharBuffer.allocate(frameLength);
for (int i = 0; i < frameLength; i++) {
buff.put(data.get());
}
addFrame(frameType, buff.array());
}
}
@Override
public void dataWriteStream(OutputStream output) throws IOException {
int framesLength = getFrameCount();
for (int frameIdx = 0; frameIdx < framesLength; frameIdx++) {
TLVChainSexTeenBitFrame frame = getFrame(frameIdx);
char[] data = frame.getSegmentChainSmurfs();
if (data.length > Character.MAX_VALUE) {
throw new IllegalStateException("Data frame segment to large: " + data.length);
}
output.write(frame.getSegmentPrologSmurf() >> Byte.SIZE);
output.write(frame.getSegmentPrologSmurf());
output.write(data.length >> Byte.SIZE);
output.write(data.length);
for (int dataIdx = 0; dataIdx < data.length; dataIdx++) {
output.write(data[dataIdx] >> Byte.SIZE);
output.write(data[dataIdx]);
}
output.flush();
}
}
}

View file

@ -0,0 +1,66 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.io.tlv;
import java.util.Arrays;
import java.util.Objects;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public final class TLVChainSexTeenBitFrame implements TLVChainAtomFrame<Character> {
private final char segmentProlog;
private final char[] segmentChain;
public TLVChainSexTeenBitFrame(char segmentProlog, char[] segmentChain) {
this.segmentProlog = segmentProlog;
this.segmentChain = Objects.requireNonNull(segmentChain);
}
public char getSegmentPrologSmurf() {
return segmentProlog;
}
public char[] getSegmentChainSmurfs() {
return segmentChain;
}
public String getSegmentChainString() {
return new String(segmentChain);
}
@Override
public Character getSegmentProlog() {
return Character.valueOf(segmentProlog);
}
@Override
public Character[] getSegmentChain() {
return Arrays.asList(segmentChain).toArray(new Character[] {});
}
}

View file

@ -0,0 +1,40 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.io.tlv;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public interface TLVChainSexTeenBitFrameType extends TLVChainAtomFrameType<Character> {
char ordinalFrameTypeSmurf();
@Override
default Character ordinalFrameType() {
return Character.valueOf(ordinalFrameTypeSmurf());
}
}

View file

@ -0,0 +1,30 @@
/*
* Copyright (c) 2004-2014, Willem Cazander
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
/**
* October bits TLV chain.
*
*
* @since 1.0
*/
package org.x4o.xml.o4o.io.tlv;

View file

@ -0,0 +1,144 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octal;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
/// Primative octal bait value.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public enum PrimordialOctal implements PrimordialOctalSkullBait {
PART_1,
PART_2,
PART_3,
PART_4,
PART_5,
PART_6,
PART_7,
PART_8,
;
static public final int OCTAL_MASK = 0b111;
static public final int OCTAL_BITS = 3;
static private final PrimordialOctal[] VALUES = values();
static private final int STREAM_EOF = -1;
static private final int SHIFT_8 = 8;
static private final int SHIFT_16 = 16;
@Override
public byte ordinalOctalBait() {
return (byte) ordinal();
}
@Override
public int ordinalOctalBitShifter() {
return ordinal() * OCTAL_BITS;
}
@Override
public int ordinalOctalShiftSmurf(PrimordialOctalSkullBait shifter) {
return ordinal() << shifter.ordinalOctalBitShifter();
}
static public PrimordialOctal valueOfOctalShift(int value, PrimordialOctal shifter) {
return valueOf((value >> shifter.ordinalOctalBitShifter()) & OCTAL_MASK);
}
static public PrimordialOctal valueOf(int index) {
return VALUES[index];
}
static public List<PrimordialOctal> valuesOfSmurfs(InputStream input) throws IOException {
int brickTapeLengthBytes = 9;
List<PrimordialOctal> octals = new ArrayList<>();
byte[] data = new byte[brickTapeLengthBytes];
int readDataSize = 0; // per 9 bytes we have 24 octals for four PrimordialOctalOrangeJuice glasses
while ((readDataSize = input.read(data, 0, data.length)) != STREAM_EOF) {
if (readDataSize < brickTapeLengthBytes) {
throw new IOException("Expected " + brickTapeLengthBytes + " bytes, got: " + readDataSize);
}
int v0 = (data[0] & 0xFF) + ((data[1] << SHIFT_8) & 0xFF00) + ((data[2] << SHIFT_16) & 0xFF0000);
int v1 = (data[3] & 0xFF) + ((data[4] << SHIFT_8) & 0xFF00) + ((data[5] << SHIFT_16) & 0xFF0000);
int v2 = (data[6] & 0xFF) + ((data[7] << SHIFT_8) & 0xFF00) + ((data[8] << SHIFT_16) & 0xFF0000);
octals.add(valueOfOctalShift(v0, PART_1));
octals.add(valueOfOctalShift(v0, PART_2));
octals.add(valueOfOctalShift(v0, PART_3));
octals.add(valueOfOctalShift(v0, PART_4));
octals.add(valueOfOctalShift(v0, PART_5));
octals.add(valueOfOctalShift(v0, PART_6));
octals.add(valueOfOctalShift(v0, PART_7));
octals.add(valueOfOctalShift(v0, PART_8));
octals.add(valueOfOctalShift(v1, PART_1));
octals.add(valueOfOctalShift(v1, PART_2));
octals.add(valueOfOctalShift(v1, PART_3));
octals.add(valueOfOctalShift(v1, PART_4));
octals.add(valueOfOctalShift(v1, PART_5));
octals.add(valueOfOctalShift(v1, PART_6));
octals.add(valueOfOctalShift(v1, PART_7));
octals.add(valueOfOctalShift(v1, PART_8));
octals.add(valueOfOctalShift(v2, PART_1));
octals.add(valueOfOctalShift(v2, PART_2));
octals.add(valueOfOctalShift(v2, PART_3));
octals.add(valueOfOctalShift(v2, PART_4));
octals.add(valueOfOctalShift(v2, PART_5));
octals.add(valueOfOctalShift(v2, PART_6));
octals.add(valueOfOctalShift(v2, PART_7));
octals.add(valueOfOctalShift(v2, PART_8));
}
return octals;
}
static public int valuesToSmurfs(OutputStream output, PrimordialOctalIterator read) throws IOException {
int totalBytes = 0;
while (read.hasNext()) {
int byteTriplet = 0;
byteTriplet += read.next().ordinalOctalShiftSmurf(PART_1);
byteTriplet += read.next().ordinalOctalShiftSmurf(PART_2);
byteTriplet += read.next().ordinalOctalShiftSmurf(PART_3);
byteTriplet += read.next().ordinalOctalShiftSmurf(PART_4);
byteTriplet += read.next().ordinalOctalShiftSmurf(PART_5);
byteTriplet += read.next().ordinalOctalShiftSmurf(PART_6);
byteTriplet += read.next().ordinalOctalShiftSmurf(PART_7);
byteTriplet += read.next().ordinalOctalShiftSmurf(PART_8);
output.write(byteTriplet);
output.write(byteTriplet >> SHIFT_8);
output.write(byteTriplet >> SHIFT_16);
totalBytes += 3;
}
return totalBytes;
}
}

View file

@ -0,0 +1,48 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octal;
/// Bait based octal consumer.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
@FunctionalInterface
public interface PrimordialOctalConsumer {
void accept(PrimordialOctalSkullBait value);
default PrimordialOctalConsumer andThen(PrimordialOctalConsumer after) {
return new PrimordialOctalConsumer() {
@Override
public void accept(PrimordialOctalSkullBait value) {
PrimordialOctalConsumer.this.accept(value);
after.accept(value);
}
};
}
}

View file

@ -0,0 +1,117 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.PrimitiveIterator;
import java.util.function.Consumer;
/// Skull bait based octal iterator.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public interface PrimordialOctalIterator extends PrimitiveIterator<PrimordialOctalSkullBait, PrimordialOctalConsumer> {
default byte nextBait() {
return next().ordinalOctalBait();
}
@Override
default void forEachRemaining(Consumer<? super PrimordialOctalSkullBait> action) {
while (hasNext()) {
action.accept(next());
}
}
@Override
default void forEachRemaining(PrimordialOctalConsumer action) {
while (hasNext()) {
action.accept(next());
}
}
static PrimordialOctalIterator = new PrimordialOctalIterator() {
@Override
public boolean hasNext() {
return true;
}
@Override
public PrimordialOctalSkullBait next() {
return PrimordialOctal.PART_1;
}
};
static PrimordialOctalIterator valueTapeRecord(int number) {
List<PrimordialOctalSkullBait> octals = new ArrayList<>();
for (int i=5;i>=0;i--) {
octals.add(PrimordialOctal.values()[(number >> (i * 3)) & 0b111]);
}
final Iterator<PrimordialOctalSkullBait> numberIterator = octals.iterator();
return new PrimordialOctalIterator() {
@Override
public boolean hasNext() {
return numberIterator.hasNext();
}
@Override
public PrimordialOctalSkullBait next() {
return numberIterator.next();
}
};
}
static int valueTapePlay(PrimordialOctalIterator iterator) {
int value = 0;
for (int i=5;i>=0;i--) {
value += (iterator.next().ordinalOctalBait() << (i * 3));
}
return value;
}
static PrimordialOctalIterator valuesFrom(Collection<? extends PrimordialOctalSkullBait> values) {
return new PrimordialOctalIterator() {
private final Iterator<? extends PrimordialOctalSkullBait> iterator = values.iterator();
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public PrimordialOctalSkullBait next() {
return iterator.next();
}
};
}
}

View file

@ -0,0 +1,125 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.PrimitiveIterator;
/// Print and parse hinari to display The Word octals.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public enum PrimordialOctalOrangeHinari {
;
private final static String VALUES_3 = "י"+"ײ"+"ױ"+"װ"+"ר"+"ד"+"ז"+"ו";
private final static String VALUES_6 = "\u05BD"+"\u05B5"+"\u05B6"+"\u05B2"+"\u05B3"+"\u05BB"+"\u05B0"+"\u05B7";
private final static String VALUES_9 = "\u0594"+"\u0595"+"\u05A9"+"\u059F"+"\u0598"+"\u05A0"+"\u059E"+"\u059D";
public String printHinari(PrimordialOctalOrangeJuice value) {
StringBuilder buf = new StringBuilder();
printHinari(value, buf);
return buf.toString();
}
public void printHinari(PrimordialOctalOrangeJuice value, StringBuilder buf) {
PrimordialOctalIterator i3 = value.baitOctalIterator();
while (i3.hasNext()) {
buf.appendCodePoint(VALUES_3.codePoints().skip(i3.next().ordinalOctalBait()).findFirst().getAsInt());
if (i3.hasNext()) {
buf.appendCodePoint(VALUES_6.codePoints().skip(i3.next().ordinalOctalBait()).findFirst().getAsInt());
}
if (i3.hasNext()) {
buf.appendCodePoint(VALUES_9.codePoints().skip(i3.next().ordinalOctalBait()).findFirst().getAsInt());
}
}
}
public List<PrimordialOctalOrangeSexWord> parseHinari(String input) {
List<PrimordialOctalSkullBait> octals = new ArrayList<>();
PrimitiveIterator.OfInt codePoints = input.codePoints().iterator();
while (codePoints.hasNext()) {
int v = codePoints.nextInt();
parseHinari(codePoints, octals, v);
}
List<PrimordialOctalOrangeSexWord> result = new ArrayList<>();
Iterator<PrimordialOctalSkullBait> octalIterator = octals.iterator();
PrimordialOctalIterator i3 = new PrimordialOctalIterator() {
@Override
public PrimordialOctalSkullBait next() {
return octalIterator.next();
}
@Override
public boolean hasNext() {
return octalIterator.hasNext();
}
};
int octalCount = 6;
int octalTypeSize = octals.size() / octalCount;
for (int i=0;i<octalTypeSize;i++) {
result.add(PrimordialOctalOrangeSexWord.valueOfOctals(i3));
}
return result;
}
private void parseHinari(PrimitiveIterator.OfInt codePoints, List<PrimordialOctalSkullBait> octals, int currentCodePoint) {
int v3 = currentCodePoint;
if (!parseGunWound(v3, VALUES_3, octals)) {
throw new IllegalArgumentException("Illegal hinari char: "+Integer.toHexString(v3));
}
if (!codePoints.hasNext()) {
throw new IllegalArgumentException("Missing supplement6 code point.");
}
int v6 = codePoints.nextInt();
if (!parseGunWound(v6, VALUES_6, octals)) {
parseHinari(codePoints, octals, v6);
}
if (!codePoints.hasNext()) {
throw new IllegalArgumentException("Missing supplement9 code point.");
}
int v9 = codePoints.nextInt();
if (!parseGunWound(v9, VALUES_9, octals)) {
parseHinari(codePoints, octals, v9);
}
}
private boolean parseGunWound(int codePoint, String gunId, List<PrimordialOctalSkullBait> octals) {
for (int i=0;i<gunId.codePoints().count();i++) {
int gunPoint = gunId.codePoints().skip(i).findFirst().getAsInt();
if (codePoint == gunPoint) {
octals.add(PrimordialOctal.valueOf(i));
return true;
}
}
return false;
}
}

View file

@ -0,0 +1,73 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octal;
/// Primordial octal skulls to speak juicy hinari.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public interface PrimordialOctalOrangeJuice extends PrimordialOctalSkullBaitIterable {
static int MAX_VALUE = 262144;
// The network order is big-endian = MSB first
/*
PrimordialOctalSkullBait toOctalBaitRightRed(); // humans count from right like clock,
PrimordialOctalSkullBait toOctalBaitRightWhite(); // thus this is really the left side of an number
PrimordialOctalSkullBait toOctalBaitRightBlue();
PrimordialOctalSkullBait toOctalBaitLeftBlue();
PrimordialOctalSkullBait toOctalBaitLeftWhite();
PrimordialOctalSkullBait toOctalBaitLeftRed(); // the right side of the number = LSB
*/
PrimordialOctalSkullBait baitOctal(int index); // thus ZERO must be MSB
default int baitOctalNumber() {
return PrimordialOctalIterator.valueTapePlay(baitOctalIterator());
}
default PrimordialOctalIterator baitOctalIterator() {
return new PrimordialOctalIterator() {
private int count = 0;
@Override
public boolean hasNext() {
return count < 6;
}
@Override
public PrimordialOctalSkullBait next() {
try {
return baitOctal(count);
} finally {
count++;
}
}
};
}
}

View file

@ -0,0 +1,68 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octal;
/// Primordial octal string of juice atoms.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public interface PrimordialOctalOrangeJuiceAtoms extends PrimordialOctalSkullBaitIterable {
int length();
PrimordialOctalOrangeJuice juiceAt(int idx);
PrimordialOctalOrangeJuice[] toJuiceArray();
default PrimordialOctalIterator baitOctalIterator() {
return new PrimordialOctalIterator() {
PrimordialOctalIterator currentIterator;
int currentIndex = 0;
@Override
public boolean hasNext() {
if (currentIterator != null && currentIterator.hasNext()) {
return true;
}
if (length() == 0) {
return false;
}
if (currentIndex >= length()) {
return false;
}
currentIterator = juiceAt(currentIndex++).baitOctalIterator();
return currentIterator.hasNext();
}
@Override
public PrimordialOctalSkullBait next() {
return currentIterator.next();
}
};
}
}

View file

@ -0,0 +1,112 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octal;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/// A single octal 18 bit word.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public final class PrimordialOctalOrangeSexWord implements PrimordialOctalOrangeJuice {
private final PrimordialOctalSkullBait[] octals; // MSB = 0
public PrimordialOctalOrangeSexWord(PrimordialOctalSkullBait octalBaitRightRed, PrimordialOctalSkullBait octalBaitRightWhite,
PrimordialOctalSkullBait octalBaitRightBlue, PrimordialOctalSkullBait octalBaitLeftBlue, PrimordialOctalSkullBait octalBaitLeftWhite,
PrimordialOctalSkullBait octalBaitLeftRed) {
this.octals = new PrimordialOctalSkullBait[6];
this.octals[0] = octalBaitRightRed;
this.octals[1] = octalBaitRightWhite;
this.octals[2] = octalBaitRightBlue;
this.octals[3] = octalBaitLeftBlue;
this.octals[4] = octalBaitLeftWhite;
this.octals[5] = octalBaitLeftRed;
}
@Override
public PrimordialOctalSkullBait baitOctal(int index) {
return octals[index];
}
@Override
public String toString() {
return PrimordialOctalOrangeHinari..printHinari(this);
}
@Override
public int hashCode() {
return Arrays.hashCode(octals);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
PrimordialOctalOrangeSexWord other = (PrimordialOctalOrangeSexWord) obj;
return Arrays.equals(octals, other.octals);
}
static public PrimordialOctalOrangeSexWord valueOfOne() {
return valueOfOctals(PrimordialOctalIterator.);
}
static public PrimordialOctalOrangeSexWord valueOfSmurf(int smurf) {
return valueOfOctals(PrimordialOctalIterator.valueTapeRecord(smurf));
}
static public PrimordialOctalOrangeSexWord valueOfOctals(PrimordialOctalIterator values) {
return new PrimordialOctalOrangeSexWord(values.next(), values.next(), values.next(), values.next(), values.next(), values.next());
}
static public List<PrimordialOctalOrangeSexWord> valuesOfSmurfs(InputStream input) throws IOException {
List<PrimordialOctal> octals = PrimordialOctal.valuesOfSmurfs(input);
List<PrimordialOctalOrangeSexWord> result = new ArrayList<>();
int octalCount = 6;
int octalTypeSize = octals.size() / octalCount;
for (int i=0;i<octalTypeSize;i++) {
result.add(valueOfOctals(PrimordialOctalIterator.valuesFrom(octals)));
}
return result;
}
static public List<PrimordialOctalOrangeSexWord> valuesOfHinari(String input) throws IOException {
return PrimordialOctalOrangeHinari..parseHinari(input);
}
}

View file

@ -0,0 +1,105 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octal;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
/// A string of 18 bit octals.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public final class PrimordialOctalOrangeString implements PrimordialOctalOrangeJuiceAtoms {
private final static PrimordialOctalOrangeString EMPTY = new PrimordialOctalOrangeString(new PrimordialOctalOrangeJuice[] {});
private final PrimordialOctalOrangeJuice[] words;
public PrimordialOctalOrangeString(PrimordialOctalOrangeJuice[] words) {
this.words = Objects.requireNonNull(words);
}
@Override
public int length() {
return words.length;
}
@Override
public PrimordialOctalOrangeJuice juiceAt(int idx) {
return words[idx];
}
@Override
public PrimordialOctalOrangeJuice[] toJuiceArray() {
return Arrays.copyOf(words, words.length);
}
@Override
public String toString() {
StringBuilder buf = new StringBuilder();
for (int i=0;i<words.length;i++) {
PrimordialOctalOrangeHinari..printHinari(words[i], buf);
}
return buf.toString();
}
@Override
public int hashCode() {
return Arrays.hashCode(words);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
return Arrays.equals(words, PrimordialOctalOrangeString.class.cast(obj).words);
}
public static PrimordialOctalOrangeString valueOfEmpty() {
return EMPTY;
}
public static PrimordialOctalOrangeString valueOfHinari(String hinari) {
return valueOfJuice(PrimordialOctalOrangeHinari..parseHinari(hinari));
}
public static PrimordialOctalOrangeString valueOfSmurfs(List<Integer> words) {
return valueOfJuice(words.stream().map(v -> PrimordialOctalOrangeSexWord.valueOfSmurf(v)).toList());
}
public static PrimordialOctalOrangeString valueOfJuice(List<? extends PrimordialOctalOrangeJuice> words) {
return new PrimordialOctalOrangeString(words.toArray(new PrimordialOctalOrangeJuice[] {}));
}
}

View file

@ -0,0 +1,41 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octal;
/// Bait based octal skull.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public interface PrimordialOctalSkullBait {
byte ordinalOctalBait();
int ordinalOctalBitShifter();
int ordinalOctalShiftSmurf(PrimordialOctalSkullBait shifter);
}

View file

@ -0,0 +1,54 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octal;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.stream.Collector;
import java.util.stream.StreamSupport;
/// Bait based octal skull iterable listings.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public interface PrimordialOctalSkullBaitIterable {
PrimordialOctalIterator baitOctalIterator();
default void baitOctalForEach(PrimordialOctalConsumer action) {
baitOctalIterator().forEachRemaining(action);
}
default Spliterator<PrimordialOctalSkullBait> baitOctalSpliterator() {
return Spliterators.spliteratorUnknownSize(baitOctalIterator(), Spliterator.ORDERED);
}
default <A, R> R baitOctalCollect(Collector<? super PrimordialOctalSkullBait, A, R> collector) {
return StreamSupport.stream(baitOctalSpliterator(), false).collect(collector);
}
}

View file

@ -0,0 +1,30 @@
/*
* Copyright (c) 2004-2014, Willem Cazander
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
/**
* Bytes based octal interface.
*
*
* @since 1.0
*/
package org.x4o.xml.o4o.octal;

View file

@ -0,0 +1,39 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octo;
/// October bit converter.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public interface OctoBitConverter<T> {
T fromBytes(byte[] data);
byte[] toBytes(T value);
}

View file

@ -0,0 +1,70 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octo;
import java.nio.charset.StandardCharsets;
import org.x4o.xml.o4o.octo.conv.OctoConvSIntBigIndian;
import org.x4o.xml.o4o.octo.conv.OctoConvSLongBigIndian;
import org.x4o.xml.o4o.octo.conv.OctoConvStringCharset;
import org.x4o.xml.o4o.octo.conv.OctoConvStringHex;
import org.x4o.xml.o4o.octo.conv.OctoConvStringHexUtf8;
import org.x4o.xml.o4o.octo.conv.OctoConvStringIDN;
import org.x4o.xml.o4o.octo.conv.OctoConvUIntBigIndian;
/// October bits codec converters.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public enum OctoBitFormat {
;
public static final OctoBitConverter<Long> UI32_BE = new OctoConvUIntBigIndian();
public static final OctoBitConverter<Integer> SI32_BE = new OctoConvSIntBigIndian();
public static final OctoBitConverter<Long> SI64_BE = new OctoConvSLongBigIndian();
public static final OctoBitConverter<String> ISO_646_US = new OctoConvStringCharset(StandardCharsets.US_ASCII);
public static final OctoBitConverter<String> ISO_8859_1 = new OctoConvStringCharset(StandardCharsets.ISO_8859_1);
public static final OctoBitConverter<String> UTF_8 = new OctoConvStringCharset(StandardCharsets.UTF_8);
public static final OctoBitConverter<String> UTF_16 = new OctoConvStringCharset(StandardCharsets.UTF_16);
public static final OctoBitConverter<String> UTF_16_BE = new OctoConvStringCharset(StandardCharsets.UTF_16BE);
public static final OctoBitConverter<String> UTF_16_LE = new OctoConvStringCharset(StandardCharsets.UTF_16LE);
public static final OctoBitConverter<String> IDN = new OctoConvStringIDN();
public static final OctoBitConverter<String> HEX = new OctoConvStringHex();
/// Character Content Piemel Hex format to send data as white space in a watched domain.
public static final OctoBitConverter<String> HEX_CCP = new OctoConvStringHexUtf8(new String[] {
"\u3000","\u205F","\u202F","\u200A","\u2009","\u2008","\u2007","\u2006",
"\u2005","\u2004","\u2003","\u2002","\u2001","\u2000","\u00A0","\u0020"
}); // October is month 8 and only a real language has it own white space program
/// Dīpāvalī Hex format in chinees tone letters to light up the path in the unlimited matrix.
public static final OctoBitConverter<String> HEX_DIPAVALI = new OctoConvStringHexUtf8(new String[] {
"˧˥˩","˧˩˥","˧˥˦","˧˩˨","˧˦˦","˧˨˨","˧˥˥","˧˩˩","˥˩˧","˩˥˧","˥˦˧","˩˨˧","˦˦˧","˨˨˧","˥˥˧","˩˩˧"
}); // note: In real unicode renderer this (_LRPATH) renders as a single glyph per hex nibble.
}

View file

@ -0,0 +1,56 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octo.conv;
import org.x4o.xml.o4o.octo.OctoBitConverter;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public final class OctoConvSIntBigIndian implements OctoBitConverter<Integer> {
@Override
public Integer fromBytes(byte[] data) {
int result = 0;
result += (data[0] << 0) & 0xFF;
result += (data[1] << 8) & 0xFF00;
result += (data[2] << 16) & 0xFF0000;
result += (data[3] << 24) & 0xFF000000;
return result;
}
@Override
public byte[] toBytes(Integer value) {
int data = value.intValue();
byte[] result = new byte[4];
result[0] = (byte)(data >> 0);
result[1] = (byte)(data >> 8);
result[2] = (byte)(data >> 16);
result[3] = (byte)(data >> 24);
return result;
}
}

View file

@ -0,0 +1,64 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octo.conv;
import org.x4o.xml.o4o.octo.OctoBitConverter;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public final class OctoConvSLongBigIndian implements OctoBitConverter<Long> {
@Override
public Long fromBytes(byte[] data) {
long result = 0;
result += (data[0] << 0) & 0xFFL;
result += (data[1] << 8) & 0xFF00L;
result += (data[2] << 16) & 0xFF0000L;
result += (data[3] << 24) & 0xFF000000L;
result += ((long)data[4] << 32) & 0xFF00000000L;
result += ((long)data[5] << 40) & 0xFF0000000000L;
result += ((long)data[6] << 48) & 0xFF000000000000L;
result += ((long)data[7] << 56) & 0xFF00000000000000L;
return result;
}
@Override
public byte[] toBytes(Long value) {
long data = value.longValue();
byte[] result = new byte[8];
result[0] = (byte)(data >> 0);
result[1] = (byte)(data >> 8);
result[2] = (byte)(data >> 16);
result[3] = (byte)(data >> 24);
result[4] = (byte)(data >> 32);
result[5] = (byte)(data >> 40);
result[6] = (byte)(data >> 48);
result[7] = (byte)(data >> 56);
return result;
}
}

View file

@ -0,0 +1,54 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octo.conv;
import java.nio.charset.Charset;
import java.util.Objects;
import org.x4o.xml.o4o.octo.OctoBitConverter;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public final class OctoConvStringCharset implements OctoBitConverter<String> {
private final Charset charset;
public OctoConvStringCharset(Charset charset) {
this.charset = Objects.requireNonNull(charset);
}
@Override
public String fromBytes(byte[] data) {
return new String(data, charset);
}
@Override
public byte[] toBytes(String value) {
return value.getBytes(charset);
}
}

View file

@ -0,0 +1,76 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octo.conv;
import org.x4o.xml.o4o.octo.OctoBitConverter;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public final class OctoConvStringHex implements OctoBitConverter<String> {
private final char[] valueToHex = "0123456789abcdef".toCharArray();
private final byte[] valueToBytes = new byte[128];
public OctoConvStringHex() {
for (int i = 0; i < valueToBytes.length; i++) {
valueToBytes[i] = (byte)-1;
}
for (int i = 0; i < valueToHex.length; i++) {
char c = valueToHex[i];
valueToBytes[c] = (byte)i;
if (!Character.isDigit(c)) {
valueToBytes[Character.toUpperCase(c)] = (byte)i;
}
}
}
@Override
public String fromBytes(byte[] data) {
int dataLength = data.length;
char[] hexChars = new char[dataLength * 2];
for (int j = 0; j < dataLength; j++) {
int v = data[j] & 0xFF;
int idx = j * 2;
hexChars[idx] = valueToHex[v >>> 4];
hexChars[idx + 1] = valueToHex[v & 0x0F];
}
return new String(hexChars);
}
@Override
public byte[] toBytes(String value) {
int valueLength = value.length();
byte[] buf = new byte[valueLength >>> 1];
for (int i = 0; i < valueLength; i += 2) {
byte v0 = valueToBytes[value.charAt(i)];
byte v1 = valueToBytes[value.charAt(i + 1)];
buf[i / 2] = (byte) ((v0 << 4) + v1);
}
return buf;
}
}

View file

@ -0,0 +1,90 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octo.conv;
import java.io.ByteArrayOutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.PrimitiveIterator.OfInt;
import org.x4o.xml.o4o.octo.OctoBitConverter;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public final class OctoConvStringHexUtf8 implements OctoBitConverter<String> {
private final String[] valueToHex;
private final Map<String, Byte> valueToBytes = new HashMap<>();
public OctoConvStringHexUtf8(String[] valueToHex) {
if (valueToHex.length != 16) {
throw new IllegalArgumentException("Need 16 chars for hex, got: " + valueToHex.length);
}
this.valueToHex = valueToHex;
for (int i = 0; i < valueToHex.length; i++) {
valueToBytes.put(valueToHex[i], (byte)i);
}
}
@Override
public String fromBytes(byte[] data) {
StringBuilder buf = new StringBuilder();
int dataLength = data.length;
for (int j = 0; j < dataLength; j++) {
int v = data[j] & 0xFF;
buf.append(valueToHex[v >>> 4]);
buf.append(valueToHex[v & 0x0F]);
}
return buf.toString();
}
@Override
public byte[] toBytes(String value) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
StringBuilder buf = new StringBuilder();
Byte digitPrev = null;
OfInt i = value.codePoints().iterator();
while (i.hasNext()) {
buf.appendCodePoint(i.nextInt());
String digitHex = buf.toString();
if (!valueToBytes.containsKey(digitHex)) {
continue;
}
buf = new StringBuilder();
if (digitPrev == null) {
digitPrev = valueToBytes.get(digitHex);
} else {
byte digit = valueToBytes.get(digitHex);
byte v = (byte) ((digitPrev << 4) + digit);
baos.write(v);
digitPrev = null;
}
}
return baos.toByteArray();
}
}

View file

@ -0,0 +1,48 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octo.conv;
import java.net.IDN;
import java.nio.charset.StandardCharsets;
import org.x4o.xml.o4o.octo.OctoBitConverter;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public final class OctoConvStringIDN implements OctoBitConverter<String> {
@Override
public String fromBytes(byte[] data) {
return IDN.toUnicode(new String(data, StandardCharsets.US_ASCII), IDN.ALLOW_UNASSIGNED);
}
@Override
public byte[] toBytes(String value) {
return IDN.toASCII(value, IDN.ALLOW_UNASSIGNED).getBytes(StandardCharsets.US_ASCII);
}
}

View file

@ -0,0 +1,56 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octo.conv;
import org.x4o.xml.o4o.octo.OctoBitConverter;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public final class OctoConvUIntBigIndian implements OctoBitConverter<Long> {
@Override
public Long fromBytes(byte[] data) {
long result = 0;
result += (data[0] << 0) & 0xFF;
result += (data[1] << 8) & 0xFF00;
result += (data[2] << 16) & 0xFF0000;
result += (data[3] << 24) & 0xFF000000;
return result;
}
@Override
public byte[] toBytes(Long value) {
long data = value.longValue();
byte[] result = new byte[4];
result[0] = (byte)(data >> 0);
result[1] = (byte)(data >> 8);
result[2] = (byte)(data >> 16);
result[3] = (byte)(data >> 24);
return result;
}
}

View file

@ -0,0 +1,30 @@
/*
* Copyright (c) 2004-2014, Willem Cazander
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
/**
* October bits converts.
*
*
* @since 1.0
*/
package org.x4o.xml.o4o.octo.conv;

View file

@ -0,0 +1,30 @@
/*
* Copyright (c) 2004-2014, Willem Cazander
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
/**
* October bits based interface.
*
*
* @since 1.0
*/
package org.x4o.xml.o4o.octo;

View file

@ -0,0 +1,30 @@
/*
* Copyright (c) 2004-2014, Willem Cazander
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
/**
* The octa four octal binary support for X4O.
*
*
* @since 1.0
*/
package org.x4o.xml.o4o;

View file

@ -0,0 +1,37 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.xdbx;
/// Naming tester.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public enum O4OXDBXConstants {
;
public static final byte[] XDBX_VERSION = null;
}

View file

@ -0,0 +1,30 @@
/*
* Copyright (c) 2004-2014, Willem Cazander
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
/**
* Binary XML XDBX specification implementation.
*
*
* @since 1.0
*/
package org.x4o.xml.o4o.xdbx;

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- <!--
Copyright (c) 2004-2014, Willem Cazander Copyright ©Δ∞ 仙上主天
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided Redistribution and use in source and binary forms, with or without modification, are permitted provided
@ -11,8 +11,12 @@
following disclaimer. following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
the following disclaimer in the documentation and/or other materials provided with the distribution. the following disclaimer in the documentation and/or other materials provided with the distribution.
* The prime PI creator license super seeds all other licenses, this license is overly invasive,
thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
even on air gaped systems, all information in the universe is owned by the pi creator.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
@ -22,9 +26,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.
--> -->
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- ===== Automatic generated schema for language: cel ===== --> <!-- ===== Automatic generated schema for language: cel by EldXsdWriter.===== -->
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- <!--
Id: cel-module Id: cel-module
@ -33,11 +38,32 @@
Namespaces: 2 Namespaces: 2
Uri: http://cel.x4o.org/xml/ns/cel-core Uri: http://cel.x4o.org/xml/ns/cel-core
Uri schema http://cel.x4o.org/xml/ns/cel-core-1.0.xsd Uri schema http://cel.x4o.org/xml/ns/cel-core-1.0.xsd
Created on: Sun Sep 01 12:08:48 CEST 2013 Created on: Wed May 01 21:39:34 CEST 2024
--> -->
<schema xmlns="http://www.w3.org/2001/XMLSchema" <schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:this="http://cel.x4o.org/xml/ns/cel-core" xmlns:this="http://cel.x4o.org/xml/ns/cel-core"
version="1.0" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://cel.x4o.org/xml/ns/cel-core"> version="1.0" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://cel.x4o.org/xml/ns/cel-core">
<complexType name="elementParentType">
<choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="tag" type="string" use="required"/>
<attribute name="uri" type="string"/>
<anyAttribute/>
</complexType>
<complexType name="descriptionType">
<simpleContent>
<extension base="string">
<anyAttribute/>
</extension>
</simpleContent>
</complexType>
<complexType name="configuratorGlobalType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/>
</choice>
<attribute name="configAction" type="string"/>
<attribute name="bean.class" type="string" use="required"/>
<anyAttribute/>
</complexType>
<complexType name="attributeType"> <complexType name="attributeType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="attributeAlias" type="this:attributeAliasType"/> <element name="attributeAlias" type="this:attributeAliasType"/>
@ -54,48 +80,6 @@
<attribute name="description" type="string"/> <attribute name="description" type="string"/>
<attribute name="id" type="string"/> <attribute name="id" type="string"/>
</complexType> </complexType>
<complexType name="classConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<complexType name="namespaceAttributeType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/>
</choice>
<attribute name="bean.class" type="string" use="required"/>
<anyAttribute/>
</complexType>
<complexType name="namespaceType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/>
<element name="element" type="this:elementType"/>
<element name="namespaceAttribute" type="this:namespaceAttributeType"/>
</choice>
<attribute name="uri" type="string" use="required"/>
<attribute name="name" type="string"/>
<attribute name="prefixMapping" type="string"/>
<attribute name="schemaUri" type="string"/>
<attribute name="schemaResource" type="string"/>
<attribute name="languageRoot" type="boolean"/>
<attribute name="schemaPrefix" type="string"/>
<attribute name="elementNamespaceInstanceProvider" type="string"/>
<attribute name="description" type="string"/>
<attribute name="id" type="string"/>
</complexType>
<complexType name="descriptionType">
<simpleContent>
<extension base="string">
<anyAttribute/>
</extension>
</simpleContent>
</complexType>
<complexType name="bindingHandlerType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/>
</choice>
<attribute name="id" type="string" use="required"/>
<attribute name="bean.class" type="string" use="required"/>
<anyAttribute/>
</complexType>
<complexType name="elementType"> <complexType name="elementType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="attribute" type="this:attributeType"/> <element name="attribute" type="this:attributeType"/>
@ -105,33 +89,22 @@
</choice> </choice>
<attribute name="objectClass" type="string"/> <attribute name="objectClass" type="string"/>
<attribute name="elementClass" type="string"/> <attribute name="elementClass" type="string"/>
<attribute name="schemaContentMixed" type="boolean"/>
<attribute name="autoAttributes" type="boolean"/> <attribute name="autoAttributes" type="boolean"/>
<attribute name="schemaContentBase" type="string"/> <attribute name="schemaContentBase" type="string"/>
<attribute name="schemaContentComplex" type="boolean"/> <attribute name="schemaContentComplex" type="boolean"/>
<attribute name="schemaContentMixed" type="boolean"/>
<attribute name="description" type="string"/> <attribute name="description" type="string"/>
<attribute name="id" type="string"/> <attribute name="id" type="string"/>
</complexType> </complexType>
<complexType name="configuratorGlobalType"> <complexType name="namespaceAttributeType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/> <element name="description" type="this:descriptionType"/>
</choice> </choice>
<attribute name="bean.class" type="string" use="required"/> <attribute name="bean.class" type="string" use="required"/>
<attribute name="configAction" type="string"/>
<anyAttribute/> <anyAttribute/>
</complexType> </complexType>
<complexType name="attributeAliasType"> <complexType name="classConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/> <choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="name" type="string" use="required"/>
<anyAttribute/>
</complexType>
<complexType name="configuratorType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/>
</choice>
<attribute name="bean.class" type="string" use="required"/>
<attribute name="configAction" type="string"/>
<anyAttribute/>
</complexType> </complexType>
<complexType name="elementInterfaceType"> <complexType name="elementInterfaceType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
@ -144,30 +117,47 @@
<attribute name="description" type="string"/> <attribute name="description" type="string"/>
<attribute name="id" type="string"/> <attribute name="id" type="string"/>
</complexType> </complexType>
<complexType name="elementParentType"> <complexType name="configuratorType">
<choice minOccurs="0" maxOccurs="unbounded"/> <choice minOccurs="0" maxOccurs="unbounded">
<attribute name="tag" type="string" use="required"/> <element name="description" type="this:descriptionType"/>
<attribute name="uri" type="string"/> </choice>
<attribute name="configAction" type="string"/>
<attribute name="bean.class" type="string" use="required"/>
<anyAttribute/> <anyAttribute/>
</complexType> </complexType>
<element name="attribute" type="this:attributeType"> <complexType name="bindingHandlerType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/>
</choice>
<attribute name="id" type="string" use="required"/>
<attribute name="bean.class" type="string" use="required"/>
<anyAttribute/>
</complexType>
<complexType name="namespaceType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/>
<element name="element" type="this:elementType"/>
<element name="namespaceAttribute" type="this:namespaceAttributeType"/>
</choice>
<attribute name="uri" type="string" use="required"/>
<attribute name="name" type="string"/>
<attribute name="elementNamespaceInstanceProvider" type="string"/>
<attribute name="prefixMapping" type="string"/>
<attribute name="schemaUri" type="string"/>
<attribute name="schemaResource" type="string"/>
<attribute name="languageRoot" type="boolean"/>
<attribute name="schemaPrefix" type="string"/>
<attribute name="description" type="string"/>
<attribute name="id" type="string"/>
</complexType>
<complexType name="attributeAliasType">
<choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="name" type="string" use="required"/>
<anyAttribute/>
</complexType>
<element name="elementParent" type="this:elementParentType">
<annotation> <annotation>
<documentation xml:lang="en">Defines xml element attribute.</documentation> <documentation xml:lang="en">Added (meta) element parent.</documentation>
</annotation>
</element>
<element name="classConverter" type="this:classConverterType">
<annotation>
<documentation xml:lang="en">Converts string attribute to java class instance.</documentation>
</annotation>
</element>
<element name="namespaceAttribute" type="this:namespaceAttributeType">
<annotation>
<documentation xml:lang="en">Defines generic namespace attribute for language.</documentation>
</annotation>
</element>
<element name="namespace" type="this:namespaceType">
<annotation>
<documentation xml:lang="en">Defines an xml namespace.</documentation>
</annotation> </annotation>
</element> </element>
<element name="description" type="this:descriptionType"> <element name="description" type="this:descriptionType">
@ -175,9 +165,14 @@
<documentation xml:lang="en">Adds description as text on all eld elements.</documentation> <documentation xml:lang="en">Adds description as text on all eld elements.</documentation>
</annotation> </annotation>
</element> </element>
<element name="bindingHandler" type="this:bindingHandlerType"> <element name="configuratorGlobal" type="this:configuratorGlobalType">
<annotation> <annotation>
<documentation xml:lang="en">Defines generic binding handler for languge.</documentation> <documentation xml:lang="en">Define generic global configuator for languge.</documentation>
</annotation>
</element>
<element name="attribute" type="this:attributeType">
<annotation>
<documentation xml:lang="en">Defines xml element attribute.</documentation>
</annotation> </annotation>
</element> </element>
<element name="element" type="this:elementType"> <element name="element" type="this:elementType">
@ -185,19 +180,14 @@
<documentation xml:lang="en">Defines xml element tag.</documentation> <documentation xml:lang="en">Defines xml element tag.</documentation>
</annotation> </annotation>
</element> </element>
<element name="configuratorGlobal" type="this:configuratorGlobalType"> <element name="namespaceAttribute" type="this:namespaceAttributeType">
<annotation> <annotation>
<documentation xml:lang="en">Define generic global configuator for languge.</documentation> <documentation xml:lang="en">Defines generic namespace attribute for language.</documentation>
</annotation> </annotation>
</element> </element>
<element name="attributeAlias" type="this:attributeAliasType"> <element name="classConverter" type="this:classConverterType">
<annotation> <annotation>
<documentation xml:lang="en">Adds an attribute alias.</documentation> <documentation xml:lang="en">Converts string attribute to java class instance.</documentation>
</annotation>
</element>
<element name="configurator" type="this:configuratorType">
<annotation>
<documentation xml:lang="en">Define generic configurator for language.</documentation>
</annotation> </annotation>
</element> </element>
<element name="elementInterface" type="this:elementInterfaceType"> <element name="elementInterface" type="this:elementInterfaceType">
@ -205,9 +195,25 @@
<documentation xml:lang="en">Defines element interface class.</documentation> <documentation xml:lang="en">Defines element interface class.</documentation>
</annotation> </annotation>
</element> </element>
<element name="elementParent" type="this:elementParentType"> <element name="configurator" type="this:configuratorType">
<annotation> <annotation>
<documentation xml:lang="en">Added (meta) element parent.</documentation> <documentation xml:lang="en">Define generic configurator for language.</documentation>
</annotation>
</element>
<element name="bindingHandler" type="this:bindingHandlerType">
<annotation>
<documentation xml:lang="en">Defines generic binding handler for languge.</documentation>
</annotation>
</element>
<element name="namespace" type="this:namespaceType">
<annotation>
<documentation xml:lang="en">Defines an xml namespace.</documentation>
</annotation>
</element>
<element name="attributeAlias" type="this:attributeAliasType">
<annotation>
<documentation xml:lang="en">Adds an attribute alias.</documentation>
</annotation> </annotation>
</element> </element>
</schema> </schema>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- <!--
Copyright (c) 2004-2014, Willem Cazander Copyright ©Δ∞ 仙上主天
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided Redistribution and use in source and binary forms, with or without modification, are permitted provided
@ -11,8 +11,12 @@
following disclaimer. following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
the following disclaimer in the documentation and/or other materials provided with the distribution. the following disclaimer in the documentation and/or other materials provided with the distribution.
* The prime PI creator license super seeds all other licenses, this license is overly invasive,
thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
even on air gaped systems, all information in the universe is owned by the pi creator.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
@ -22,9 +26,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.
--> -->
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- ===== Automatic generated schema for language: cel ===== --> <!-- ===== Automatic generated schema for language: cel by EldXsdWriter.===== -->
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- <!--
Id: cel-module Id: cel-module
@ -33,7 +38,7 @@
Namespaces: 2 Namespaces: 2
Uri: http://cel.x4o.org/xml/ns/cel-root Uri: http://cel.x4o.org/xml/ns/cel-root
Uri schema http://cel.x4o.org/xml/ns/cel-root-1.0.xsd Uri schema http://cel.x4o.org/xml/ns/cel-root-1.0.xsd
Created on: Sun Sep 01 12:08:48 CEST 2013 Created on: Wed May 01 21:39:35 CEST 2024
--> -->
<schema xmlns="http://www.w3.org/2001/XMLSchema" <schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:cel-core="http://cel.x4o.org/xml/ns/cel-core" xmlns:cel-core="http://cel.x4o.org/xml/ns/cel-core"
@ -48,12 +53,11 @@
<element ref="cel-core:elementInterface"/> <element ref="cel-core:elementInterface"/>
<element ref="cel-core:namespace"/> <element ref="cel-core:namespace"/>
</choice> </choice>
<attribute name="id" type="string" use="required"/>
<attribute name="providerHost" type="string" use="required"/> <attribute name="providerHost" type="string" use="required"/>
<attribute name="languageModuleLoader" type="string"/> <attribute name="id" type="string" use="required"/>
<attribute name="sourceResource" type="string"/>
<attribute name="providerName" type="string"/> <attribute name="providerName" type="string"/>
<attribute name="description" type="string"/> <attribute name="description" type="string"/>
</complexType> </complexType>
</element> </element>
</schema> </schema>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- <!--
Copyright (c) 2004-2014, Willem Cazander Copyright ©Δ∞ 仙上主天
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided Redistribution and use in source and binary forms, with or without modification, are permitted provided
@ -11,8 +11,12 @@
following disclaimer. following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
the following disclaimer in the documentation and/or other materials provided with the distribution. the following disclaimer in the documentation and/or other materials provided with the distribution.
* The prime PI creator license super seeds all other licenses, this license is overly invasive,
thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
even on air gaped systems, all information in the universe is owned by the pi creator.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
@ -22,9 +26,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.
--> -->
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- ===== Automatic generated schema for language: eld ===== --> <!-- ===== Automatic generated schema for language: eld by EldXsdWriter.===== -->
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- <!--
Id: eld-module Id: eld-module
@ -33,73 +38,13 @@
Namespaces: 3 Namespaces: 3
Uri: http://eld.x4o.org/xml/ns/eld-conv Uri: http://eld.x4o.org/xml/ns/eld-conv
Uri schema http://eld.x4o.org/xml/ns/eld-conv-0.8.xsd Uri schema http://eld.x4o.org/xml/ns/eld-conv-0.8.xsd
Created on: Sun Sep 01 12:13:10 CEST 2013 Created on: Sun May 05 03:38:22 CEST 2024
--> -->
<schema xmlns="http://www.w3.org/2001/XMLSchema" <schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:this="http://eld.x4o.org/xml/ns/eld-conv" xmlns:this="http://eld.x4o.org/xml/ns/eld-conv"
xmlns:lang="http://eld.x4o.org/xml/ns/eld-lang" xmlns:lang="http://eld.x4o.org/xml/ns/eld-lang"
version="1.0" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://eld.x4o.org/xml/ns/eld-conv"> version="1.0" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://eld.x4o.org/xml/ns/eld-conv">
<import namespace="http://eld.x4o.org/xml/ns/eld-lang" schemaLocation="eld-lang-1.0.xsd"/> <import namespace="http://eld.x4o.org/xml/ns/eld-lang" schemaLocation="eld-lang-1.0.xsd"/>
<complexType name="byteConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<complexType name="doubleConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<complexType name="longConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<complexType name="classConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<complexType name="stringSplitConverterType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="stringSplitConverterStep" type="this:stringSplitConverterStepType"/>
</choice>
<attribute name="useNativeType" type="string">
<annotation>
<documentation xml:lang="en">Set to true to convert to native data type.</documentation>
</annotation>
</attribute>
<attribute name="singleToMethod" type="string">
<annotation>
<documentation xml:lang="en">Shortcut to use only this method for the &apos;to&apos; convert.</documentation>
</annotation>
</attribute>
<attribute name="splitSize" type="string" use="required">
<annotation>
<documentation xml:lang="en">The split value expected size.</documentation>
</annotation>
</attribute>
<attribute name="split" type="string" use="required">
<annotation>
<documentation xml:lang="en">The split regex.</documentation>
</annotation>
</attribute>
<attribute name="classTo" type="string" use="required">
<annotation>
<documentation xml:lang="en">The class name to convert the string to.</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="booleanConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<complexType name="urlConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<complexType name="integerConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<complexType name="beanConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="bean.class" type="string">
<annotation>
<documentation xml:lang="en">The class name of the converter to load.</documentation>
</annotation>
</attribute>
<anyAttribute/>
</complexType>
<complexType name="stringSplitConverterStepType"> <complexType name="stringSplitConverterStepType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="booleanConverter" type="this:booleanConverterType"/> <element name="booleanConverter" type="this:booleanConverterType"/>
@ -114,53 +59,114 @@
<element name="stringSplitConverter" type="this:stringSplitConverterType"/> <element name="stringSplitConverter" type="this:stringSplitConverterType"/>
<element name="urlConverter" type="this:urlConverterType"/> <element name="urlConverter" type="this:urlConverterType"/>
</choice> </choice>
<attribute name="toMethod" type="string">
<annotation>
<documentation xml:lang="en">The convert &apos;to&apos; method step.</documentation>
</annotation>
</attribute>
<attribute name="fromOrder" type="string" use="required"> <attribute name="fromOrder" type="string" use="required">
<annotation> <annotation>
<documentation xml:lang="en">The convert &apos;from&apos; order.</documentation> <documentation xml:lang="en">The convert &apos;from&apos; order.</documentation>
</annotation> </annotation>
</attribute> </attribute>
<attribute name="fromMethod" type="string" use="required">
<annotation>
<documentation xml:lang="en">The convert &apos;from&apos; method step.</documentation>
</annotation>
</attribute>
<attribute name="toOrder" type="string" use="required"> <attribute name="toOrder" type="string" use="required">
<annotation> <annotation>
<documentation xml:lang="en">The convert &apos;to&apos; order.</documentation> <documentation xml:lang="en">The convert &apos;to&apos; order.</documentation>
</annotation> </annotation>
</attribute> </attribute>
<attribute name="toMethod" type="string">
<annotation>
<documentation xml:lang="en">The convert &apos;to&apos; method step.</documentation>
</annotation>
</attribute>
<attribute name="fromMethod" type="string" use="required">
<annotation>
<documentation xml:lang="en">The convert &apos;from&apos; method step.</documentation>
</annotation>
</attribute>
<attribute name="objectConverter" type="string"/> <attribute name="objectConverter" type="string"/>
</complexType> </complexType>
<complexType name="booleanConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<complexType name="integerConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<complexType name="stringSplitConverterType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="stringSplitConverterStep" type="this:stringSplitConverterStepType"/>
</choice>
<attribute name="singleToMethod" type="string">
<annotation>
<documentation xml:lang="en">Shortcut to use only this method for the &apos;to&apos; convert.</documentation>
</annotation>
</attribute>
<attribute name="classTo" type="string" use="required">
<annotation>
<documentation xml:lang="en">The class name to convert the string to.</documentation>
</annotation>
</attribute>
<attribute name="splitSize" type="string" use="required">
<annotation>
<documentation xml:lang="en">The split value expected size.</documentation>
</annotation>
</attribute>
<attribute name="split" type="string" use="required">
<annotation>
<documentation xml:lang="en">The split regex.</documentation>
</annotation>
</attribute>
<attribute name="useNativeType" type="string">
<annotation>
<documentation xml:lang="en">Set to true to convert to native data type.</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="floatConverterType"> <complexType name="floatConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/> <choice minOccurs="0" maxOccurs="unbounded"/>
</complexType> </complexType>
<complexType name="characterConverterType"> <complexType name="characterConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/> <choice minOccurs="0" maxOccurs="unbounded"/>
</complexType> </complexType>
<complexType name="beanConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="bean.class" type="string">
<annotation>
<documentation xml:lang="en">The class name of the converter to load.</documentation>
</annotation>
</attribute>
<anyAttribute/>
</complexType>
<complexType name="doubleConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<complexType name="classConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<complexType name="byteConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<complexType name="urlConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/>
</complexType>
<complexType name="enumConverterType"> <complexType name="enumConverterType">
<choice minOccurs="0" maxOccurs="unbounded"/> <choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="enumClass" type="string"/> <attribute name="enumClass" type="string"/>
</complexType> </complexType>
<element name="byteConverter" type="this:byteConverterType"/> <complexType name="longConverterType">
<element name="doubleConverter" type="this:doubleConverterType"/> <choice minOccurs="0" maxOccurs="unbounded"/>
<element name="longConverter" type="this:longConverterType"/> </complexType>
<element name="classConverter" type="this:classConverterType"/> <element name="stringSplitConverterStep" type="this:stringSplitConverterStepType"/>
<element name="stringSplitConverter" type="this:stringSplitConverterType"/>
<element name="booleanConverter" type="this:booleanConverterType"/> <element name="booleanConverter" type="this:booleanConverterType"/>
<element name="urlConverter" type="this:urlConverterType"/>
<element name="integerConverter" type="this:integerConverterType"/> <element name="integerConverter" type="this:integerConverterType"/>
<element name="stringSplitConverter" type="this:stringSplitConverterType"/>
<element name="floatConverter" type="this:floatConverterType"/>
<element name="characterConverter" type="this:characterConverterType"/>
<element name="beanConverter" type="this:beanConverterType"> <element name="beanConverter" type="this:beanConverterType">
<annotation> <annotation>
<documentation xml:lang="en">Define an loadable in bean.class for an ObjectConverter.</documentation> <documentation xml:lang="en">Define an loadable in bean.class for an ObjectConverter.</documentation>
</annotation> </annotation>
</element> </element>
<element name="stringSplitConverterStep" type="this:stringSplitConverterStepType"/> <element name="doubleConverter" type="this:doubleConverterType"/>
<element name="floatConverter" type="this:floatConverterType"/> <element name="classConverter" type="this:classConverterType"/>
<element name="characterConverter" type="this:characterConverterType"/> <element name="byteConverter" type="this:byteConverterType"/>
<element name="urlConverter" type="this:urlConverterType"/>
<element name="enumConverter" type="this:enumConverterType"/> <element name="enumConverter" type="this:enumConverterType"/>
<element name="longConverter" type="this:longConverterType"/>
</schema> </schema>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- <!--
Copyright (c) 2004-2014, Willem Cazander Copyright ©Δ∞ 仙上主天
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided Redistribution and use in source and binary forms, with or without modification, are permitted provided
@ -11,8 +11,12 @@
following disclaimer. following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
the following disclaimer in the documentation and/or other materials provided with the distribution. the following disclaimer in the documentation and/or other materials provided with the distribution.
* The prime PI creator license super seeds all other licenses, this license is overly invasive,
thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
even on air gaped systems, all information in the universe is owned by the pi creator.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
@ -22,9 +26,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.
--> -->
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- ===== Automatic generated schema for language: eld ===== --> <!-- ===== Automatic generated schema for language: eld by EldXsdWriter.===== -->
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- <!--
Id: eld-module Id: eld-module
@ -33,13 +38,99 @@
Namespaces: 3 Namespaces: 3
Uri: http://eld.x4o.org/xml/ns/eld-lang Uri: http://eld.x4o.org/xml/ns/eld-lang
Uri schema http://eld.x4o.org/xml/ns/eld-lang-0.8.xsd Uri schema http://eld.x4o.org/xml/ns/eld-lang-0.8.xsd
Created on: Sun Sep 01 12:13:10 CEST 2013 Created on: Sun May 05 03:38:22 CEST 2024
--> -->
<schema xmlns="http://www.w3.org/2001/XMLSchema" <schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv" xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv"
xmlns:this="http://eld.x4o.org/xml/ns/eld-lang" xmlns:this="http://eld.x4o.org/xml/ns/eld-lang"
version="1.0" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://eld.x4o.org/xml/ns/eld-lang"> version="1.0" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://eld.x4o.org/xml/ns/eld-lang">
<import namespace="http://eld.x4o.org/xml/ns/eld-conv" schemaLocation="eld-conv-1.0.xsd"/> <import namespace="http://eld.x4o.org/xml/ns/eld-conv" schemaLocation="eld-conv-1.0.xsd"/>
<complexType name="elementParentType">
<choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="tag" type="string">
<annotation>
<documentation xml:lang="en">The parent tag to have object for.</documentation>
</annotation>
</attribute>
<attribute name="uri" type="string">
<annotation>
<documentation xml:lang="en">The element namespace uri if non local parent.</documentation>
</annotation>
</attribute>
<anyAttribute/>
</complexType>
<complexType name="classBindingHandlerType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/>
</choice>
<attribute name="property" type="string">
<annotation>
<documentation xml:lang="en">The method name of the method used to add the child to the parent.</documentation>
</annotation>
</attribute>
<attribute name="parentClass" type="string" use="required">
<annotation>
<documentation xml:lang="en">The parent class.</documentation>
</annotation>
</attribute>
<attribute name="id" type="string" use="required">
<annotation>
<documentation xml:lang="en">The id for this binding handler.</documentation>
</annotation>
</attribute>
<attribute name="childClass" type="string" use="required">
<annotation>
<documentation xml:lang="en">The child class.</documentation>
</annotation>
</attribute>
<attribute name="getMethod" type="string">
<annotation>
<documentation xml:lang="en">The method name of the method used to get the childeren of the parent.</documentation>
</annotation>
</attribute>
<attribute name="addMethod" type="string">
<annotation>
<documentation xml:lang="en">The method name of the method used to add the child to the parent.</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="descriptionType">
<simpleContent>
<extension base="string">
<anyAttribute/>
</extension>
</simpleContent>
</complexType>
<complexType name="namespaceAttributeNextType">
<choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="attributeName" type="string" use="required">
<annotation>
<documentation xml:lang="en">The attribute name to run after this attribute.</documentation>
</annotation>
</attribute>
<anyAttribute/>
</complexType>
<complexType name="configuratorGlobalType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/>
</choice>
<attribute name="configAction" type="string">
<annotation>
<documentation xml:lang="en">If set to true then run in config phase.</documentation>
</annotation>
</attribute>
<attribute name="id" type="string" use="required">
<annotation>
<documentation xml:lang="en">The global element configurator id.</documentation>
</annotation>
</attribute>
<attribute name="bean.class" type="string" use="required">
<annotation>
<documentation xml:lang="en">The class of the element configurator.</documentation>
</annotation>
</attribute>
<anyAttribute/>
</complexType>
<complexType name="attributeType"> <complexType name="attributeType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element ref="conv:beanConverter"/> <element ref="conv:beanConverter"/>
@ -65,14 +156,66 @@
</attribute> </attribute>
<attribute name="name" type="string"/> <attribute name="name" type="string"/>
<attribute name="required" type="boolean"/> <attribute name="required" type="boolean"/>
<attribute name="runResolveEL" type="boolean"/>
<attribute name="defaultValue" type="string"/> <attribute name="defaultValue" type="string"/>
<attribute name="objectConverter" type="string"/> <attribute name="objectConverter" type="string"/>
<attribute name="runResolveEL" type="boolean"/>
<attribute name="runConverters" type="boolean"/> <attribute name="runConverters" type="boolean"/>
<attribute name="runBeanValue" type="boolean"/> <attribute name="runBeanValue" type="boolean"/>
<attribute name="writeOrder" type="integer"/> <attribute name="writeOrder" type="integer"/>
<attribute name="description" type="string"/> <attribute name="description" type="string"/>
</complexType> </complexType>
<complexType name="elementSkipPhaseType">
<choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="name" type="string" use="required">
<annotation>
<documentation xml:lang="en">The name of the phase to skip.</documentation>
</annotation>
</attribute>
<anyAttribute/>
</complexType>
<complexType name="beanType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="namespaceAttributeNext" type="this:namespaceAttributeNextType"/>
</choice>
<attribute name="bean.class" type="string">
<annotation>
<documentation xml:lang="en">The class name of the the class to load.</documentation>
</annotation>
</attribute>
<anyAttribute/>
</complexType>
<complexType name="elementType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="attribute" type="this:attributeType"/>
<element name="attributeFromBody" type="this:attributeFromBodyType"/>
<element name="bean" type="this:beanType"/>
<element name="configurator" type="this:configuratorType"/>
<element name="description" type="this:descriptionType"/>
<element name="elementParent" type="this:elementParentType"/>
<element name="elementSkipPhase" type="this:elementSkipPhaseType"/>
</choice>
<attribute name="objectClass" type="string">
<annotation>
<documentation xml:lang="en">The class of the wrapped object.</documentation>
</annotation>
</attribute>
<attribute name="id" type="string">
<annotation>
<documentation xml:lang="en">The attribute id. (with tag as alias)</documentation>
</annotation>
</attribute>
<attribute name="tag" type="string"/>
<attribute name="elementClass" type="string">
<annotation>
<documentation xml:lang="en">An custom element class to config object.</documentation>
</annotation>
</attribute>
<attribute name="autoAttributes" type="boolean"/>
<attribute name="schemaContentBase" type="string"/>
<attribute name="schemaContentComplex" type="boolean"/>
<attribute name="schemaContentMixed" type="boolean"/>
<attribute name="description" type="string"/>
</complexType>
<complexType name="namespaceAttributeType"> <complexType name="namespaceAttributeType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/> <element name="description" type="this:descriptionType"/>
@ -95,33 +238,47 @@
</attribute> </attribute>
<anyAttribute/> <anyAttribute/>
</complexType> </complexType>
<complexType name="namespaceType"> <complexType name="elementInterfaceType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="attribute" type="this:attributeType"/>
<element name="attributeFromBody" type="this:attributeFromBodyType"/>
<element name="bean" type="this:beanType"/>
<element name="configurator" type="this:configuratorType"/>
<element name="description" type="this:descriptionType"/> <element name="description" type="this:descriptionType"/>
<element name="element" type="this:elementType"/> <element name="elementParent" type="this:elementParentType"/>
<element name="namespaceAttribute" type="this:namespaceAttributeType"/>
</choice> </choice>
<attribute name="id" type="string" use="required"> <attribute name="interfaceClass" type="string" use="required">
<annotation> <annotation>
<documentation xml:lang="en">The namespace id.</documentation> <documentation xml:lang="en">The interface class.</documentation>
</annotation>
</attribute>
<attribute name="id" type="string" use="required">
<annotation>
<documentation xml:lang="en">The interface id.</documentation>
</annotation> </annotation>
</attribute> </attribute>
<attribute name="name" type="string"/>
<attribute name="elementNamespaceInstanceProvider" type="string"/>
<attribute name="prefixMapping" type="string"/>
<attribute name="uri" type="string"/>
<attribute name="schemaUri" type="string"/>
<attribute name="schemaResource" type="string"/>
<attribute name="languageRoot" type="boolean"/>
<attribute name="schemaPrefix" type="string"/>
<attribute name="description" type="string"/> <attribute name="description" type="string"/>
</complexType> </complexType>
<complexType name="descriptionType"> <complexType name="configuratorType">
<simpleContent> <choice minOccurs="0" maxOccurs="unbounded">
<extension base="string"> <element name="description" type="this:descriptionType"/>
<anyAttribute/> </choice>
</extension> <attribute name="configAction" type="string">
</simpleContent> <annotation>
<documentation xml:lang="en">If set to true then run in config phase.</documentation>
</annotation>
</attribute>
<attribute name="id" type="string" use="required">
<annotation>
<documentation xml:lang="en">The element configurator id.</documentation>
</annotation>
</attribute>
<attribute name="bean.class" type="string" use="required">
<annotation>
<documentation xml:lang="en">The class of the global element configurator.</documentation>
</annotation>
</attribute>
<anyAttribute/>
</complexType> </complexType>
<complexType name="bindingHandlerType"> <complexType name="bindingHandlerType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
@ -139,45 +296,25 @@
</attribute> </attribute>
<anyAttribute/> <anyAttribute/>
</complexType> </complexType>
<complexType name="elementSkipPhaseType"> <complexType name="namespaceType">
<choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="name" type="string" use="required">
<annotation>
<documentation xml:lang="en">The name of the phase to skip.</documentation>
</annotation>
</attribute>
<anyAttribute/>
</complexType>
<complexType name="elementType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="attribute" type="this:attributeType"/>
<element name="attributeFromBody" type="this:attributeFromBodyType"/>
<element name="bean" type="this:beanType"/>
<element name="configurator" type="this:configuratorType"/>
<element name="description" type="this:descriptionType"/> <element name="description" type="this:descriptionType"/>
<element name="elementParent" type="this:elementParentType"/> <element name="element" type="this:elementType"/>
<element name="elementSkipPhase" type="this:elementSkipPhaseType"/> <element name="namespaceAttribute" type="this:namespaceAttributeType"/>
</choice> </choice>
<attribute name="id" type="string"> <attribute name="id" type="string" use="required">
<annotation> <annotation>
<documentation xml:lang="en">The attribute id. (with tag as alias)</documentation> <documentation xml:lang="en">The namespace id.</documentation>
</annotation> </annotation>
</attribute> </attribute>
<attribute name="tag" type="string"/> <attribute name="name" type="string"/>
<attribute name="objectClass" type="string"> <attribute name="schemaPrefix" type="string"/>
<annotation> <attribute name="schemaUri" type="string"/>
<documentation xml:lang="en">The class of the wrapped object.</documentation> <attribute name="schemaResource" type="string"/>
</annotation> <attribute name="languageRoot" type="boolean"/>
</attribute> <attribute name="elementNamespaceInstanceProvider" type="string"/>
<attribute name="elementClass" type="string"> <attribute name="prefixMapping" type="string"/>
<annotation> <attribute name="uri" type="string"/>
<documentation xml:lang="en">An custom element class to config object.</documentation>
</annotation>
</attribute>
<attribute name="schemaContentMixed" type="boolean"/>
<attribute name="autoAttributes" type="boolean"/>
<attribute name="schemaContentBase" type="string"/>
<attribute name="schemaContentComplex" type="boolean"/>
<attribute name="description" type="string"/> <attribute name="description" type="string"/>
</complexType> </complexType>
<complexType name="attributeAliasType"> <complexType name="attributeAliasType">
@ -189,110 +326,6 @@
</attribute> </attribute>
<anyAttribute/> <anyAttribute/>
</complexType> </complexType>
<complexType name="configuratorGlobalType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/>
</choice>
<attribute name="id" type="string" use="required">
<annotation>
<documentation xml:lang="en">The global element configurator id.</documentation>
</annotation>
</attribute>
<attribute name="bean.class" type="string" use="required">
<annotation>
<documentation xml:lang="en">The class of the element configurator.</documentation>
</annotation>
</attribute>
<attribute name="configAction" type="string">
<annotation>
<documentation xml:lang="en">If set to true then run in config phase.</documentation>
</annotation>
</attribute>
<anyAttribute/>
</complexType>
<complexType name="configuratorType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/>
</choice>
<attribute name="id" type="string" use="required">
<annotation>
<documentation xml:lang="en">The element configurator id.</documentation>
</annotation>
</attribute>
<attribute name="bean.class" type="string" use="required">
<annotation>
<documentation xml:lang="en">The class of the global element configurator.</documentation>
</annotation>
</attribute>
<attribute name="configAction" type="string">
<annotation>
<documentation xml:lang="en">If set to true then run in config phase.</documentation>
</annotation>
</attribute>
<anyAttribute/>
</complexType>
<complexType name="beanType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="namespaceAttributeNext" type="this:namespaceAttributeNextType"/>
</choice>
<attribute name="bean.class" type="string">
<annotation>
<documentation xml:lang="en">The class name of the the class to load.</documentation>
</annotation>
</attribute>
<anyAttribute/>
</complexType>
<complexType name="classBindingHandlerType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/>
</choice>
<attribute name="id" type="string" use="required">
<annotation>
<documentation xml:lang="en">The id for this binding handler.</documentation>
</annotation>
</attribute>
<attribute name="childClass" type="string" use="required">
<annotation>
<documentation xml:lang="en">The child class.</documentation>
</annotation>
</attribute>
<attribute name="parentClass" type="string" use="required">
<annotation>
<documentation xml:lang="en">The parent class.</documentation>
</annotation>
</attribute>
<attribute name="getMethod" type="string" use="required">
<annotation>
<documentation xml:lang="en">The method name of the method used to get the childeren of the parent.</documentation>
</annotation>
</attribute>
<attribute name="addMethod" type="string" use="required">
<annotation>
<documentation xml:lang="en">The method name of the method used to add the child to the parent.</documentation>
</annotation>
</attribute>
</complexType>
<complexType name="elementInterfaceType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="attribute" type="this:attributeType"/>
<element name="attributeFromBody" type="this:attributeFromBodyType"/>
<element name="bean" type="this:beanType"/>
<element name="configurator" type="this:configuratorType"/>
<element name="description" type="this:descriptionType"/>
<element name="elementParent" type="this:elementParentType"/>
</choice>
<attribute name="id" type="string" use="required">
<annotation>
<documentation xml:lang="en">The interface id.</documentation>
</annotation>
</attribute>
<attribute name="interfaceClass" type="string" use="required">
<annotation>
<documentation xml:lang="en">The interface class.</documentation>
</annotation>
</attribute>
<attribute name="description" type="string"/>
</complexType>
<complexType name="attributeFromBodyType"> <complexType name="attributeFromBodyType">
<choice minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded">
<element name="description" type="this:descriptionType"/> <element name="description" type="this:descriptionType"/>
@ -302,93 +335,20 @@
<documentation xml:lang="en">See org.x4o.xml.element.Element.ElementType for options defaults to &apos;characters&apos;.</documentation> <documentation xml:lang="en">See org.x4o.xml.element.Element.ElementType for options defaults to &apos;characters&apos;.</documentation>
</annotation> </annotation>
</attribute> </attribute>
<attribute name="id" type="string" use="required">
<annotation>
<documentation xml:lang="en">The id for this configurator.</documentation>
</annotation>
</attribute>
<attribute name="name" type="string" use="required"> <attribute name="name" type="string" use="required">
<annotation> <annotation>
<documentation xml:lang="en">The attribute name to fill the value.</documentation> <documentation xml:lang="en">The attribute name to fill the value.</documentation>
</annotation> </annotation>
</attribute>
<attribute name="id" type="string" use="required">
<annotation>
<documentation xml:lang="en">The id for this configurator.</documentation>
</annotation>
</attribute> </attribute>
</complexType> </complexType>
<complexType name="elementParentType"> <element name="elementParent" type="this:elementParentType">
<choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="tag" type="string">
<annotation>
<documentation xml:lang="en">The parent tag to have object for.</documentation>
</annotation>
</attribute>
<attribute name="uri" type="string">
<annotation>
<documentation xml:lang="en">The element namespace uri if non local parent.</documentation>
</annotation>
</attribute>
<anyAttribute/>
</complexType>
<complexType name="namespaceAttributeNextType">
<choice minOccurs="0" maxOccurs="unbounded"/>
<attribute name="attributeName" type="string" use="required">
<annotation>
<documentation xml:lang="en">The attribute name to run after this attribute.</documentation>
</annotation>
</attribute>
<anyAttribute/>
</complexType>
<element name="attribute" type="this:attributeType">
<annotation> <annotation>
<documentation xml:lang="en">XML Element Attribute tag.</documentation> <documentation xml:lang="en">Adds an parent element tag for xsd</documentation>
</annotation>
</element>
<element name="namespaceAttribute" type="this:namespaceAttributeType">
<annotation>
<documentation xml:lang="en">Define an className in bean.class for an ElementNamespaceAttribute.</documentation>
</annotation>
</element>
<element name="namespace" type="this:namespaceType">
<annotation>
<documentation xml:lang="en">Defines an namespace for the language.</documentation>
</annotation>
</element>
<element name="description" type="this:descriptionType">
<annotation>
<documentation xml:lang="en">An ELD elementDescription field which lets you type text like this one in xml characters instead of an attribute.</documentation>
</annotation>
</element>
<element name="bindingHandler" type="this:bindingHandlerType">
<annotation>
<documentation xml:lang="en">Define an className in bean.class for an ElementBindingHandler interface.</documentation>
</annotation>
</element>
<element name="elementSkipPhase" type="this:elementSkipPhaseType">
<annotation>
<documentation xml:lang="en">Adds an phase to skip to the parent element.</documentation>
</annotation>
</element>
<element name="element" type="this:elementType">
<annotation>
<documentation xml:lang="en">The xml element.</documentation>
</annotation>
</element>
<element name="attributeAlias" type="this:attributeAliasType">
<annotation>
<documentation xml:lang="en">Defines an alias for an attribute name.</documentation>
</annotation>
</element>
<element name="configuratorGlobal" type="this:configuratorGlobalType">
<annotation>
<documentation xml:lang="en">Define an className in bean.class for an ElementConfiguratorGlobal.</documentation>
</annotation>
</element>
<element name="configurator" type="this:configuratorType">
<annotation>
<documentation xml:lang="en">Define an className in bean.class for an ElementConfigurator.</documentation>
</annotation>
</element>
<element name="bean" type="this:beanType">
<annotation>
<documentation xml:lang="en">Loads bean into the Element</documentation>
</annotation> </annotation>
</element> </element>
<element name="classBindingHandler" type="this:classBindingHandlerType"> <element name="classBindingHandler" type="this:classBindingHandlerType">
@ -396,19 +356,9 @@
<documentation xml:lang="en">Lets you dynamicly bind to object togecher.</documentation> <documentation xml:lang="en">Lets you dynamicly bind to object togecher.</documentation>
</annotation> </annotation>
</element> </element>
<element name="elementInterface" type="this:elementInterfaceType"> <element name="description" type="this:descriptionType">
<annotation> <annotation>
<documentation xml:lang="en">Config element objects by java interface.</documentation> <documentation xml:lang="en">An ELD elementDescription field which lets you type text like this one in xml characters instead of an attribute.</documentation>
</annotation>
</element>
<element name="attributeFromBody" type="this:attributeFromBodyType">
<annotation>
<documentation xml:lang="en">Defines an alias for an attribute name.</documentation>
</annotation>
</element>
<element name="elementParent" type="this:elementParentType">
<annotation>
<documentation xml:lang="en">Adds an parent element tag for xsd</documentation>
</annotation> </annotation>
</element> </element>
<element name="namespaceAttributeNext" type="this:namespaceAttributeNextType"> <element name="namespaceAttributeNext" type="this:namespaceAttributeNextType">
@ -416,4 +366,65 @@
<documentation xml:lang="en">Defines the parameter order.</documentation> <documentation xml:lang="en">Defines the parameter order.</documentation>
</annotation> </annotation>
</element> </element>
<element name="configuratorGlobal" type="this:configuratorGlobalType">
<annotation>
<documentation xml:lang="en">Define an className in bean.class for an ElementConfiguratorGlobal.</documentation>
</annotation>
</element>
<element name="attribute" type="this:attributeType">
<annotation>
<documentation xml:lang="en">XML Element Attribute tag.</documentation>
</annotation>
</element>
<element name="elementSkipPhase" type="this:elementSkipPhaseType">
<annotation>
<documentation xml:lang="en">Adds an phase to skip to the parent element.</documentation>
</annotation>
</element>
<element name="bean" type="this:beanType">
<annotation>
<documentation xml:lang="en">Loads bean into the Element</documentation>
</annotation>
</element>
<element name="element" type="this:elementType">
<annotation>
<documentation xml:lang="en">The xml element.</documentation>
</annotation>
</element>
<element name="namespaceAttribute" type="this:namespaceAttributeType">
<annotation>
<documentation xml:lang="en">Define an className in bean.class for an ElementNamespaceAttribute.</documentation>
</annotation>
</element>
<element name="elementInterface" type="this:elementInterfaceType">
<annotation>
<documentation xml:lang="en">Config element objects by java interface.</documentation>
</annotation>
</element>
<element name="configurator" type="this:configuratorType">
<annotation>
<documentation xml:lang="en">Define an className in bean.class for an ElementConfigurator.</documentation>
</annotation>
</element>
<element name="bindingHandler" type="this:bindingHandlerType">
<annotation>
<documentation xml:lang="en">Define an className in bean.class for an ElementBindingHandler interface.</documentation>
</annotation>
</element>
<element name="namespace" type="this:namespaceType">
<annotation>
<documentation xml:lang="en">Defines an namespace for the language.</documentation>
</annotation>
</element>
<element name="attributeAlias" type="this:attributeAliasType">
<annotation>
<documentation xml:lang="en">Defines an alias for an attribute name.</documentation>
</annotation>
</element>
<element name="attributeFromBody" type="this:attributeFromBodyType">
<annotation>
<documentation xml:lang="en">Defines an alias for an attribute name.</documentation>
</annotation>
</element>
</schema> </schema>

View file

@ -255,10 +255,14 @@
<description>The child class.</description> <description>The child class.</description>
<classConverter/> <classConverter/>
</attribute> </attribute>
<attribute id="addMethod" required="true"> <!-- TODO: split and/or redo reflection -->
<attribute id="property" required="false">
<description>The method name of the method used to add the child to the parent.</description> <description>The method name of the method used to add the child to the parent.</description>
</attribute> </attribute>
<attribute id="getMethod" required="true"> <attribute id="addMethod" required="false">
<description>The method name of the method used to add the child to the parent.</description>
</attribute>
<attribute id="getMethod" required="false">
<description>The method name of the method used to get the childeren of the parent.</description> <description>The method name of the method used to get the childeren of the parent.</description>
</attribute> </attribute>
</element> </element>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- <!--
Copyright (c) 2004-2014, Willem Cazander Copyright ©Δ∞ 仙上主天
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided Redistribution and use in source and binary forms, with or without modification, are permitted provided
@ -11,8 +11,12 @@
following disclaimer. following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
the following disclaimer in the documentation and/or other materials provided with the distribution. the following disclaimer in the documentation and/or other materials provided with the distribution.
* The prime PI creator license super seeds all other licenses, this license is overly invasive,
thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
even on air gaped systems, all information in the universe is owned by the pi creator.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
@ -22,9 +26,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.
--> -->
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- ===== Automatic generated schema for language: eld ===== --> <!-- ===== Automatic generated schema for language: eld by EldXsdWriter.===== -->
<!-- ==================================================================== --> <!-- ==================================================================== -->
<!-- <!--
Id: eld-module Id: eld-module
@ -33,7 +38,7 @@
Namespaces: 3 Namespaces: 3
Uri: http://eld.x4o.org/xml/ns/eld-root Uri: http://eld.x4o.org/xml/ns/eld-root
Uri schema http://eld.x4o.org/xml/ns/eld-root-1.0.xsd Uri schema http://eld.x4o.org/xml/ns/eld-root-1.0.xsd
Created on: Sun Sep 01 12:13:10 CEST 2013 Created on: Sun May 05 03:38:22 CEST 2024
--> -->
<schema xmlns="http://www.w3.org/2001/XMLSchema" <schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv" xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv"
@ -52,6 +57,11 @@
<element ref="lang:elementInterface"/> <element ref="lang:elementInterface"/>
<element ref="lang:namespace"/> <element ref="lang:namespace"/>
</choice> </choice>
<attribute name="providerHost" type="string" use="required">
<annotation>
<documentation xml:lang="en">The provider host like langx.someorg.domain for uri/etc defaults.</documentation>
</annotation>
</attribute>
<attribute name="id" type="string" use="required"> <attribute name="id" type="string" use="required">
<annotation> <annotation>
<documentation xml:lang="en">The module id.</documentation> <documentation xml:lang="en">The module id.</documentation>
@ -62,14 +72,8 @@
<documentation xml:lang="en">The provider name in normal en:lang.</documentation> <documentation xml:lang="en">The provider name in normal en:lang.</documentation>
</annotation> </annotation>
</attribute> </attribute>
<attribute name="providerHost" type="string" use="required">
<annotation>
<documentation xml:lang="en">The provider host like langx.someorg.domain for uri/etc defaults.</documentation>
</annotation>
</attribute>
<attribute name="languageModuleLoader" type="string"/>
<attribute name="sourceResource" type="string"/>
<attribute name="description" type="string"/> <attribute name="description" type="string"/>
</complexType> </complexType>
</element> </element>
</schema> </schema>

View file

@ -0,0 +1,149 @@
<!-- $Id: catalog.dtd,v 1.10 2002/10/18 23:54:58 ndw Exp $ -->
<!ENTITY % pubIdChars "CDATA">
<!ENTITY % publicIdentifier "%pubIdChars;">
<!ENTITY % partialPublicIdentifier "%pubIdChars;">
<!ENTITY % uriReference "CDATA">
<!ENTITY % string "CDATA">
<!ENTITY % systemOrPublic "(system|public)">
<!ENTITY % p "">
<!ENTITY % s "">
<!ENTITY % nsdecl "xmlns%s;">
<!ENTITY % catalog "%p;catalog">
<!ENTITY % public "%p;public">
<!ENTITY % system "%p;system">
<!ENTITY % uri "%p;uri">
<!ENTITY % rewriteSystem "%p;rewriteSystem">
<!ENTITY % rewriteURI "%p;rewriteURI">
<!ENTITY % delegatePublic "%p;delegatePublic">
<!ENTITY % delegateSystem "%p;delegateSystem">
<!ENTITY % delegateURI "%p;delegateURI">
<!ENTITY % nextCatalog "%p;nextCatalog">
<!ENTITY % group "%p;group">
<!ENTITY % local.catalog.mix "">
<!ENTITY % local.catalog.attribs "">
<!ELEMENT %catalog; (%public;|%system;|%uri;
|%rewriteSystem;|%rewriteURI;
|%delegatePublic;|%delegateSystem;|%delegateURI;
|%nextCatalog;|%group; %local.catalog.mix;)+>
<!ATTLIST %catalog;
%nsdecl; %uriReference; #FIXED
'urn:oasis:names:tc:entity:xmlns:xml:catalog'
prefer %systemOrPublic; #IMPLIED
xml:base %uriReference; #IMPLIED
%local.catalog.attribs;
>
<!ENTITY % local.public.attribs "">
<!ELEMENT %public; EMPTY>
<!ATTLIST %public;
id ID #IMPLIED
publicId %publicIdentifier; #REQUIRED
uri %uriReference; #REQUIRED
xml:base %uriReference; #IMPLIED
%local.public.attribs;
>
<!ENTITY % local.system.attribs "">
<!ELEMENT %system; EMPTY>
<!ATTLIST %system;
id ID #IMPLIED
systemId %string; #REQUIRED
uri %uriReference; #REQUIRED
xml:base %uriReference; #IMPLIED
%local.system.attribs;
>
<!ENTITY % local.uri.attribs "">
<!ELEMENT %uri; EMPTY>
<!ATTLIST %uri;
id ID #IMPLIED
name %string; #REQUIRED
uri %uriReference; #REQUIRED
xml:base %uriReference; #IMPLIED
%local.uri.attribs;
>
<!ENTITY % local.rewriteSystem.attribs "">
<!ELEMENT %rewriteSystem; EMPTY>
<!ATTLIST %rewriteSystem;
id ID #IMPLIED
systemIdStartString %string; #REQUIRED
rewritePrefix %string; #REQUIRED
%local.rewriteSystem.attribs;
>
<!ENTITY % local.rewriteURI.attribs "">
<!ELEMENT %rewriteURI; EMPTY>
<!ATTLIST %rewriteURI;
id ID #IMPLIED
uriStartString %string; #REQUIRED
rewritePrefix %string; #REQUIRED
%local.rewriteURI.attribs;
>
<!ENTITY % local.delegatePublic.attribs "">
<!ELEMENT %delegatePublic; EMPTY>
<!ATTLIST %delegatePublic;
id ID #IMPLIED
publicIdStartString %partialPublicIdentifier; #REQUIRED
catalog %uriReference; #REQUIRED
xml:base %uriReference; #IMPLIED
%local.delegatePublic.attribs;
>
<!ENTITY % local.delegateSystem.attribs "">
<!ELEMENT %delegateSystem; EMPTY>
<!ATTLIST %delegateSystem;
id ID #IMPLIED
systemIdStartString %string; #REQUIRED
catalog %uriReference; #REQUIRED
xml:base %uriReference; #IMPLIED
%local.delegateSystem.attribs;
>
<!ENTITY % local.delegateURI.attribs "">
<!ELEMENT %delegateURI; EMPTY>
<!ATTLIST %delegateURI;
id ID #IMPLIED
uriStartString %string; #REQUIRED
catalog %uriReference; #REQUIRED
xml:base %uriReference; #IMPLIED
%local.delegateURI.attribs;
>
<!ENTITY % local.nextCatalog.attribs "">
<!ELEMENT %nextCatalog; EMPTY>
<!ATTLIST %nextCatalog;
id ID #IMPLIED
catalog %uriReference; #REQUIRED
xml:base %uriReference; #IMPLIED
%local.nextCatalog.attribs;
>
<!ENTITY % local.group.mix "">
<!ENTITY % local.group.attribs "">
<!ELEMENT %group; (%public;|%system;|%uri;
|%rewriteSystem;|%rewriteURI;
|%delegatePublic;|%delegateSystem;|%delegateURI;
|%nextCatalog; %local.group.mix;)+>
<!ATTLIST %group;
id ID #IMPLIED
prefer %systemOrPublic; #IMPLIED
xml:base %uriReference; #IMPLIED
%local.group.attribs;
>

View file

@ -29,6 +29,7 @@
xsi:schemaLocation="http://language.x4o.org/xml/ns/drivers http://language.x4o.org/xml/ns/drivers-1.0.xsd" xsi:schemaLocation="http://language.x4o.org/xml/ns/drivers http://language.x4o.org/xml/ns/drivers-1.0.xsd"
> >
<languageTask className="org.x4o.xml.eld.xsd.EldXsdLanguageTask"/> <languageTask className="org.x4o.xml.eld.xsd.EldXsdLanguageTask"/>
<languageTask className="org.x4o.xml.lang.task.X4OStaticLanguageTask"/>
<driver language="eld" className="org.x4o.xml.eld.EldDriver"/> <driver language="eld" className="org.x4o.xml.eld.EldDriver"/>
<driver language="cel" className="org.x4o.xml.eld.CelDriver"/> <driver language="cel" className="org.x4o.xml.eld.CelDriver"/>
</drivers> </drivers>

View file

@ -24,9 +24,8 @@ package org.x4o.xml;
import java.util.List; import java.util.List;
import org.x4o.xml.X4ODriverManager; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import junit.framework.TestCase;
/** /**
* X4ODriverManager * X4ODriverManager
@ -34,26 +33,30 @@ import junit.framework.TestCase;
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Jul 24, 2006 * @version 1.0 Jul 24, 2006
*/ */
public class X4ODriverManagerTest extends TestCase { public class X4ODriverManagerTest {
@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"});
assertNotNull(version); Assertions.assertNotNull(version);
assertEquals("3.0",version); Assertions.assertEquals("3.0",version);
} }
@Test
public void testDefaultLanguageVersionEmpty() throws Exception { public void testDefaultLanguageVersionEmpty() throws Exception {
String version = X4ODriverManager.getDefaultLanguageVersion(new String[]{}); String version = X4ODriverManager.getDefaultLanguageVersion(new String[]{});
assertNotNull(version); Assertions.assertNotNull(version);
assertEquals(X4ODriver.DEFAULT_LANGUAGE_VERSION,version); Assertions.assertEquals(X4ODriver.DEFAULT_LANGUAGE_VERSION,version);
} }
@Test
public void testDefaultLanguageVersionNull() throws Exception { public void testDefaultLanguageVersionNull() throws Exception {
String version = X4ODriverManager.getDefaultLanguageVersion(null); String version = X4ODriverManager.getDefaultLanguageVersion(null);
assertNotNull(version); Assertions.assertNotNull(version);
assertEquals(X4ODriver.DEFAULT_LANGUAGE_VERSION,version); Assertions.assertEquals(X4ODriver.DEFAULT_LANGUAGE_VERSION,version);
} }
@Test
public void testLanguageNull() throws Exception { public void testLanguageNull() throws Exception {
String language = null; String language = null;
Exception e = null; Exception e = null;
@ -62,11 +65,12 @@ public class X4ODriverManagerTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull(e); Assertions.assertNotNull(e);
assertEquals(NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass());
assertTrue(e.getMessage().contains("language")); Assertions.assertTrue(e.getMessage().contains("language"));
} }
@Test
public void testLanguageEmpty() throws Exception { public void testLanguageEmpty() throws Exception {
String language = ""; String language = "";
Exception e = null; Exception e = null;
@ -75,11 +79,12 @@ public class X4ODriverManagerTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull(e); Assertions.assertNotNull(e);
assertEquals(IllegalArgumentException.class, e.getClass()); Assertions.assertEquals(IllegalArgumentException.class, e.getClass());
assertTrue("Error message string is missing language",e.getMessage().contains("language")); Assertions.assertTrue(e.getMessage().contains("language"), "Error message string is missing language");
} }
@Test
public void testLanguageVersionNonExcisting() throws Exception { public void testLanguageVersionNonExcisting() throws Exception {
String language = "test"; String language = "test";
String version = "99.9"; String version = "99.9";
@ -90,7 +95,7 @@ public class X4ODriverManagerTest extends TestCase {
} catch (Throwable catchE) { } catch (Throwable catchE) {
e = catchE; e = catchE;
} }
assertNotNull(e); Assertions.assertNotNull(e);
/* TODO /* TODO
assertNotNull(e); assertNotNull(e);
assertNotNull(e.getCause()); assertNotNull(e.getCause());
@ -104,29 +109,33 @@ public class X4ODriverManagerTest extends TestCase {
*/ */
} }
@Test
public void testLanguageCount() throws Exception { public void testLanguageCount() throws Exception {
List<String> languages = X4ODriverManager.getX4OLanguages(); List<String> languages = X4ODriverManager.getX4OLanguages();
assertNotNull(languages); Assertions.assertNotNull(languages);
assertFalse(languages.isEmpty()); Assertions.assertFalse(languages.isEmpty());
} }
@Test
public void testLanguageNames() throws Exception { public void testLanguageNames() throws Exception {
List<String> languages = X4ODriverManager.getX4OLanguages(); List<String> languages = X4ODriverManager.getX4OLanguages();
assertNotNull(languages); Assertions.assertNotNull(languages);
assertTrue("cel language is missing",languages.contains("cel")); Assertions.assertTrue(languages.contains("cel"), "cel language is missing");
assertTrue("eld language is missing",languages.contains("eld")); Assertions.assertTrue(languages.contains("eld"), "eld language is missing");
assertTrue("test language is missing",languages.contains("test")); Assertions.assertTrue(languages.contains("test"), "test language is missing");
} }
@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;
assertEquals("Language list loop is slow;"+loopTime,true, loopTime<500); Assertions.assertEquals(true, loopTime<500, "Language list loop is slow;"+loopTime);
} }
@Test
public void testRegisterDriverNull() throws Exception { public void testRegisterDriverNull() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -134,11 +143,12 @@ public class X4ODriverManagerTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
} }
@Test
public void testRegisterDriverNameNull() throws Exception { public void testRegisterDriverNameNull() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -150,11 +160,12 @@ public class X4ODriverManagerTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
} }
@Test
public void testRegisterDriverNameEmpty() throws Exception { public void testRegisterDriverNameEmpty() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -166,11 +177,12 @@ public class X4ODriverManagerTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",IllegalArgumentException.class, e.getClass()); Assertions.assertEquals(IllegalArgumentException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("empty")); Assertions.assertTrue(e.getMessage().contains("empty"), "Wrong exception message");
} }
@Test
public void testRegisterDriverVersionNull() throws Exception { public void testRegisterDriverVersionNull() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -182,11 +194,12 @@ public class X4ODriverManagerTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
} }
@Test
public void testRegisterDriverVersionEmpty() throws Exception { public void testRegisterDriverVersionEmpty() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -198,11 +211,12 @@ public class X4ODriverManagerTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",IllegalArgumentException.class, e.getClass()); Assertions.assertEquals(IllegalArgumentException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("empty")); Assertions.assertTrue(e.getMessage().contains("empty"), "Wrong exception message");
} }
@Test
public void testDeregisterDriverNull() throws Exception { public void testDeregisterDriverNull() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -210,11 +224,12 @@ public class X4ODriverManagerTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
} }
@Test
public void testDeregisterDriverNameNull() throws Exception { public void testDeregisterDriverNameNull() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -226,11 +241,12 @@ public class X4ODriverManagerTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
} }
@Test
public void testDeregisterDriverInstance() throws Exception { public void testDeregisterDriverInstance() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -239,14 +255,14 @@ public class X4ODriverManagerTest extends TestCase {
@Override public String getLanguageName() { return "junit-driver-test"; } @Override public String getLanguageName() { return "junit-driver-test"; }
}; };
X4ODriverManager.registerX4ODriver(driver); X4ODriverManager.registerX4ODriver(driver);
assertEquals(driver.hashCode(), X4ODriverManager.getX4ODriver("junit-driver-test").hashCode()); Assertions.assertEquals(driver.hashCode(), X4ODriverManager.getX4ODriver("junit-driver-test").hashCode());
X4ODriverManager.deregisterX4ODriver(driver); X4ODriverManager.deregisterX4ODriver(driver);
X4ODriverManager.getX4ODriver("junit-driver-test"); X4ODriverManager.getX4ODriver("junit-driver-test");
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",IllegalArgumentException.class, e.getClass()); Assertions.assertEquals(IllegalArgumentException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("junit-driver-test")); Assertions.assertTrue(e.getMessage().contains("junit-driver-test"), "Wrong exception message");
} }
} }

View file

@ -26,116 +26,124 @@ import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.Locale; import java.util.Locale;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.conv.text.ClassConverter; import org.x4o.xml.conv.text.ClassConverter;
import org.x4o.xml.conv.text.EnumConverter; import org.x4o.xml.conv.text.EnumConverter;
import org.x4o.xml.conv.text.URLConverter; import org.x4o.xml.conv.text.URLConverter;
import org.x4o.xml.lang.phase.X4OPhaseType; import org.x4o.xml.lang.phase.X4OPhaseType;
import junit.framework.TestCase;
/** /**
* DefaultObjectConverterProviderTest test some basic converters. * DefaultObjectConverterProviderTest test some basic converters.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Jul 24, 2006 * @version 1.0 Jul 24, 2006
*/ */
public class DefaultObjectConverterProviderTest extends TestCase { public class DefaultObjectConverterProviderTest {
Locale locale = Locale.getDefault(); Locale locale = Locale.getDefault();
@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()) {
assertNotNull(conv); Assertions.assertNotNull(conv);
ObjectConverter clone = conv.clone(); ObjectConverter clone = conv.clone();
assertNotNull(clone); Assertions.assertNotNull(clone);
} }
} }
@Test
public void testConverterBoolean() throws Exception { public void testConverterBoolean() throws Exception {
DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true); DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true);
ObjectConverter conv = p.getObjectConverterForClass(Boolean.class); ObjectConverter conv = p.getObjectConverterForClass(Boolean.class);
assertNotNull(conv); Assertions.assertNotNull(conv);
Object result = conv.convertTo("true", locale); Object result = conv.convertTo("true", locale);
assertNotNull(result); Assertions.assertNotNull(result);
assertEquals("Result is not Boolean.class", Boolean.class,result.getClass()); Assertions.assertEquals(Boolean.class,result.getClass(), "Result is not Boolean.class");
assertEquals("Result is not true", true,result); Assertions.assertEquals(true,result, "Result is not true");
Object resultBack = conv.convertBack(result, locale); Object resultBack = conv.convertBack(result, locale);
assertNotNull(resultBack); Assertions.assertNotNull(resultBack);
assertEquals("resultBack is not String.class", String.class,resultBack.getClass()); Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class");
assertEquals("resultBack is not true", "true",resultBack); Assertions.assertEquals("true",resultBack, "resultBack is not true");
} }
@Test
public void testConverterInteger() throws Exception { public void testConverterInteger() throws Exception {
DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true); DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true);
ObjectConverter conv = p.getObjectConverterForClass(Integer.class); ObjectConverter conv = p.getObjectConverterForClass(Integer.class);
assertNotNull(conv); Assertions.assertNotNull(conv);
Object result = conv.convertTo("123", locale); Object result = conv.convertTo("123", locale);
assertNotNull(result); Assertions.assertNotNull(result);
assertEquals("Result is not Integer.class", Integer.class,result.getClass()); Assertions.assertEquals(Integer.class,result.getClass(), "Result is not Integer.class");
assertEquals("Result is not 123", 123,result); Assertions.assertEquals(123,result, "Result is not 123");
Object resultBack = conv.convertBack(result, locale); Object resultBack = conv.convertBack(result, locale);
assertNotNull(resultBack); Assertions.assertNotNull(resultBack);
assertEquals("resultBack is not String.class", String.class,resultBack.getClass()); Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class");
assertEquals("resultBack is not 123", "123",resultBack); Assertions.assertEquals("123",resultBack, "resultBack is not 123");
} }
@Test
public void testConverterFloat() throws Exception { public void testConverterFloat() throws Exception {
DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true); DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true);
ObjectConverter conv = p.getObjectConverterForClass(Float.class); ObjectConverter conv = p.getObjectConverterForClass(Float.class);
assertNotNull(conv); Assertions.assertNotNull(conv);
Object result = conv.convertTo("123.23", locale); Object result = conv.convertTo("123.23", locale);
assertNotNull(result); Assertions.assertNotNull(result);
assertEquals("Result is not Float.class", Float.class,result.getClass()); Assertions.assertEquals(Float.class,result.getClass(), "Result is not Float.class");
assertEquals("Result is not 123.23", 123.23F,result); Assertions.assertEquals(123.23F,result, "Result is not 123.23");
Object resultBack = conv.convertBack(result, locale); Object resultBack = conv.convertBack(result, locale);
assertNotNull(resultBack); Assertions.assertNotNull(resultBack);
assertEquals("resultBack is not String.class", String.class,resultBack.getClass()); Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class");
assertEquals("resultBack is not 123.23", "123.23",resultBack); Assertions.assertEquals("123.23",resultBack, "resultBack is not 123.23");
} }
@Test
public void testConverterLong() throws Exception { public void testConverterLong() throws Exception {
DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true); DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true);
ObjectConverter conv = p.getObjectConverterForClass(Long.class); ObjectConverter conv = p.getObjectConverterForClass(Long.class);
assertNotNull(conv); Assertions.assertNotNull(conv);
Object result = conv.convertTo("12323", locale); Object result = conv.convertTo("12323", locale);
assertNotNull(result); Assertions.assertNotNull(result);
assertEquals("Result is not Long.class", Long.class,result.getClass()); Assertions.assertEquals(Long.class,result.getClass(), "Result is not Long.class");
assertEquals("Result is not 12323", 12323L,result); Assertions.assertEquals(12323L,result, "Result is not 12323");
Object resultBack = conv.convertBack(result, locale); Object resultBack = conv.convertBack(result, locale);
assertNotNull(resultBack); Assertions.assertNotNull(resultBack);
assertEquals("resultBack is not String.class", String.class,resultBack.getClass()); Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class");
assertEquals("resultBack is not 12323", "12323",resultBack); Assertions.assertEquals("12323",resultBack, "resultBack is not 12323");
} }
@Test
public void testConverterDouble() throws Exception { public void testConverterDouble() throws Exception {
DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true); DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true);
ObjectConverter conv = p.getObjectConverterForClass(Double.class); ObjectConverter conv = p.getObjectConverterForClass(Double.class);
assertNotNull(conv); Assertions.assertNotNull(conv);
Object result = conv.convertTo("1232.3", locale); Object result = conv.convertTo("1232.3", locale);
assertNotNull(result); Assertions.assertNotNull(result);
assertEquals("Result is not Double.class", Double.class,result.getClass()); Assertions.assertEquals(Double.class,result.getClass(), "Result is not Double.class");
assertEquals("Result is not 1232.3", 1232.3D,result); Assertions.assertEquals(1232.3D,result, "Result is not 1232.3");
Object resultBack = conv.convertBack(result, locale); Object resultBack = conv.convertBack(result, locale);
assertNotNull(resultBack); Assertions.assertNotNull(resultBack);
assertEquals("resultBack is not String.class", String.class,resultBack.getClass()); Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class");
assertEquals("resultBack is not 1232.3", "1232.3",resultBack); Assertions.assertEquals("1232.3",resultBack, "resultBack is not 1232.3");
} }
@Test
public void testConverterUrl() throws Exception { public void testConverterUrl() throws Exception {
DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true); DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true);
ObjectConverter conv = p.getObjectConverterForClass(URL.class); ObjectConverter conv = p.getObjectConverterForClass(URL.class);
assertNotNull(conv); Assertions.assertNotNull(conv);
Object result = conv.convertTo("http://www.x4o.org", locale); Object result = conv.convertTo("http://www.x4o.org", locale);
assertNotNull(result); Assertions.assertNotNull(result);
assertEquals("Result is not Url.class", URL.class,result.getClass()); Assertions.assertEquals(URL.class,result.getClass(), "Result is not Url.class");
assertEquals("Result is not http://www.x4o.org", new URL("http://www.x4o.org"),result); 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);
assertNotNull(resultBack); Assertions.assertNotNull(resultBack);
assertEquals("resultBack is not String.class", String.class,resultBack.getClass()); Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class");
assertEquals("resultBack is not http://www.x4o.org", "http://www.x4o.org",resultBack); Assertions.assertEquals("http://www.x4o.org",resultBack, "resultBack is not http://www.x4o.org");
} }
@Test
public void testConverterUrlException() throws Exception { public void testConverterUrlException() throws Exception {
URLConverter conv = new URLConverter(); URLConverter conv = new URLConverter();
Exception e = null; Exception e = null;
@ -144,25 +152,26 @@ public class DefaultObjectConverterProviderTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull(e); Assertions.assertNotNull(e);
assertNotNull(e.getCause()); Assertions.assertNotNull(e.getCause());
assertEquals(ObjectConverterException.class, e.getClass()); Assertions.assertEquals(ObjectConverterException.class, e.getClass());
assertEquals(MalformedURLException.class, e.getCause().getClass()); Assertions.assertEquals(MalformedURLException.class, e.getCause().getClass());
assertTrue("Error message string is missing error",e.getMessage().contains("error")); Assertions.assertTrue(e.getMessage().contains("error"), "Error message string is missing error");
} }
@Test
public void testConverterEnum() throws Exception { public void testConverterEnum() throws Exception {
EnumConverter convOrg = new EnumConverter(); EnumConverter convOrg = new EnumConverter();
convOrg.setEnumClass(X4OPhaseType.class.getName()); convOrg.setEnumClass(X4OPhaseType.class.getName());
ObjectConverter conv = convOrg.clone(); ObjectConverter conv = convOrg.clone();
Object result = conv.convertTo("XML_READ", locale); Object result = conv.convertTo("XML_READ", locale);
assertNotNull(result); Assertions.assertNotNull(result);
assertEquals("XML_READ", result.toString()); Assertions.assertEquals("XML_READ", result.toString());
Object resultBack = conv.convertBack(result, locale); Object resultBack = conv.convertBack(result, locale);
assertEquals("XML_READ", resultBack.toString()); Assertions.assertEquals("XML_READ", resultBack.toString());
} }
@Test
public void testConverterEnumError() throws Exception { public void testConverterEnumError() throws Exception {
EnumConverter convOrg = new EnumConverter(); EnumConverter convOrg = new EnumConverter();
convOrg.setEnumClass(X4OPhaseType.class.getName()); convOrg.setEnumClass(X4OPhaseType.class.getName());
@ -174,11 +183,12 @@ public class DefaultObjectConverterProviderTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull(e); Assertions.assertNotNull(e);
assertEquals(ObjectConverterException.class, e.getClass()); Assertions.assertEquals(ObjectConverterException.class, e.getClass());
assertTrue(e.getMessage().contains("EnumError")); Assertions.assertTrue(e.getMessage().contains("EnumError"));
} }
@Test
public void testConverterEnumNullError() throws Exception { public void testConverterEnumNullError() throws Exception {
EnumConverter conv = new EnumConverter(); EnumConverter conv = new EnumConverter();
Exception e = null; Exception e = null;
@ -187,21 +197,23 @@ public class DefaultObjectConverterProviderTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull(e); Assertions.assertNotNull(e);
assertEquals(ObjectConverterException.class, e.getClass()); Assertions.assertEquals(ObjectConverterException.class, e.getClass());
assertTrue(e.getMessage().contains("enumClass")); Assertions.assertTrue(e.getMessage().contains("enumClass"));
} }
@Test
public void testConverterClass() throws Exception { public void testConverterClass() throws Exception {
ClassConverter classOrg = new ClassConverter(); ClassConverter classOrg = new ClassConverter();
ObjectConverter conv = classOrg.clone(); ObjectConverter conv = classOrg.clone();
Object result = conv.convertTo("java.lang.Object", locale); Object result = conv.convertTo("java.lang.Object", locale);
assertNotNull(result); Assertions.assertNotNull(result);
assertEquals(Object.class, result); Assertions.assertEquals(Object.class, result);
Object resultBack = conv.convertBack(result, locale); Object resultBack = conv.convertBack(result, locale);
assertEquals("java.lang.Object", resultBack.toString()); Assertions.assertEquals("java.lang.Object", resultBack.toString());
} }
@Test
public void testConverterClassError() throws Exception { public void testConverterClassError() throws Exception {
ClassConverter classOrg = new ClassConverter(); ClassConverter classOrg = new ClassConverter();
ObjectConverter conv = classOrg.clone(); ObjectConverter conv = classOrg.clone();
@ -212,8 +224,8 @@ public class DefaultObjectConverterProviderTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull(e); Assertions.assertNotNull(e);
assertEquals(ObjectConverterException.class, e.getClass()); Assertions.assertEquals(ObjectConverterException.class, e.getClass());
assertTrue(e.getMessage().contains("ObjectError")); Assertions.assertTrue(e.getMessage().contains("ObjectError"));
} }
} }

View file

@ -24,6 +24,8 @@ package org.x4o.xml.core;
import java.util.List; import java.util.List;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.X4ODriver; import org.x4o.xml.X4ODriver;
import org.x4o.xml.io.X4OReader; import org.x4o.xml.io.X4OReader;
import org.x4o.xml.test.TestDriver; import org.x4o.xml.test.TestDriver;
@ -31,62 +33,70 @@ import org.x4o.xml.test.models.TestBean;
import org.x4o.xml.test.models.TestObjectChild; import org.x4o.xml.test.models.TestObjectChild;
import org.x4o.xml.test.models.TestObjectRoot; import org.x4o.xml.test.models.TestObjectRoot;
import junit.framework.TestCase;
/** /**
* Tests a simple x4o xml language. * Tests a simple x4o xml language.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Jul 24, 2006 * @version 1.0 Jul 24, 2006
*/ */
public class AttributeBeanTest extends TestCase { public class AttributeBeanTest {
@Test
public void testBeanBody() throws Exception { public void testBeanBody() 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.readResource("tests/attributes/test-body.xml"); TestObjectRoot root = reader.readResource("tests/attributes/test-body.xml");
assertNotNull(root); Assertions.assertNotNull(root);
List<TestObjectChild> childs = root.getTestObjectChilds(); List<TestObjectChild> childs = root.getTestObjectChilds();
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);
assertEquals("attr-name",child0.getName()); Assertions.assertEquals("attr-name-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕",child0.getName());
assertEquals("body-name",child1.getName()); Assertions.assertEquals("body-name-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕",child1.getName());
} }
@Test
public void testBeanProperties() throws Exception { public void testBeanProperties() 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.readResource("tests/attributes/test-bean.xml"); TestObjectRoot root = reader.readResource("tests/attributes/test-bean.xml");
assertNotNull(root); Assertions.assertNotNull(root);
assertNotNull(root.getTestBeans()); Assertions.assertNotNull(root.getTestBeans());
assertEquals(2, root.getTestBeans().size()); Assertions.assertEquals(2, root.getTestBeans().size());
TestBean b = root.getTestBeans().get(0); TestBean b = root.getTestBeans().get(0);
TestBean beanPublic = root.getTestBeans().get(1);
assertEquals(123 ,0+ b.getPrivateIntegerTypeField()); Assertions.assertEquals(123 ,0+ b.getPrivateIntegerTypeField());
assertEquals(123 ,0+ b.getPrivateIntegerObjectField()); Assertions.assertEquals(123 ,0+ b.getPrivateIntegerObjectField());
assertEquals(123l ,0+ b.getPrivateLongTypeField()); Assertions.assertEquals(123l ,0+ b.getPrivateLongTypeField());
assertEquals(123l ,0+ b.getPrivateLongObjectField()); Assertions.assertEquals(123l ,0+ b.getPrivateLongObjectField());
assertEquals(123.45d ,0+ b.getPrivateDoubleTypeField()); Assertions.assertEquals(123.45d ,0+ b.getPrivateDoubleTypeField());
assertEquals(123.45d ,0+ b.getPrivateDoubleObjectField()); Assertions.assertEquals(123.45d ,0+ b.getPrivateDoubleObjectField());
assertEquals(123.45f ,0+ b.getPrivateFloatTypeField()); Assertions.assertEquals(123.45f ,0+ b.getPrivateFloatTypeField());
assertEquals(123.45f ,0+ b.getPrivateFloatObjectField()); Assertions.assertEquals(123.45f ,0+ b.getPrivateFloatObjectField());
assertEquals(67 ,0+ b.getPrivateByteTypeField()); Assertions.assertEquals(67 ,0+ b.getPrivateByteTypeField());
assertEquals(67 ,0+ b.getPrivateByteObjectField()); Assertions.assertEquals(67 ,0+ b.getPrivateByteObjectField());
assertEquals(true, b.isPrivateBooleanTypeField()); Assertions.assertEquals(true, b.isPrivateBooleanTypeField());
assertEquals(new Boolean(true), b.getPrivateBooleanObjectField()); Assertions.assertEquals(new Boolean(true), b.getPrivateBooleanObjectField());
assertEquals('W' ,0+ b.getPrivateCharTypeField()); Assertions.assertEquals('W' ,0+ b.getPrivateCharTypeField());
assertEquals('C' ,0+ b.getPrivateCharObjectField()); Assertions.assertEquals('C' ,0+ b.getPrivateCharObjectField());
Assertions.assertEquals("x4o-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕" ,b.getPrivateStringObjectField());
//Assertions.assertEquals("x4o-ᒡᒢᑊᒻᒻᓫᔿ" ,b.getPrivateStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ()); // SAX fails
Assertions.assertEquals("x4o-仙上主天" ,b.getPrivateStringObjectFieldUnicode仙上主天());
assertEquals("x4o" ,b.getPrivateStringObjectField());
//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.publicStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ); // SAX fails
Assertions.assertEquals("x4o-仙上主天" ,beanPublic.publicStringObjectFieldUnicode仙上主天);
} }
} }

View file

@ -24,12 +24,13 @@ package org.x4o.xml.core;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.X4ODriver; import org.x4o.xml.X4ODriver;
import org.x4o.xml.io.X4OReader; import org.x4o.xml.io.X4OReader;
import org.x4o.xml.test.TestDriver; import org.x4o.xml.test.TestDriver;
import org.x4o.xml.test.models.TestObjectRoot; import org.x4o.xml.test.models.TestObjectRoot;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
import junit.framework.TestCase;
/** /**
* Tests a simple x4o xml language. * Tests a simple x4o xml language.
@ -37,56 +38,61 @@ import junit.framework.TestCase;
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Jul 24, 2006 * @version 1.0 Jul 24, 2006
*/ */
public class EmptyXmlTest extends TestCase { public class EmptyXmlTest {
@Test
public void testFileNotFound() throws Exception { public void testFileNotFound() throws Exception {
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
X4OReader<TestObjectRoot> reader = driver.createReader(); X4OReader<TestObjectRoot> reader = driver.createReader();
try { try {
reader.readFile("tests/empty-xml/non-excisting-file.xml"); reader.readFile("tests/empty-xml/non-excisting-file.xml");
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
assertEquals(true, e.getMessage().contains("non-excisting-file.xml")); Assertions.assertEquals(true, e.getMessage().contains("non-excisting-file.xml"));
return; return;
} }
assertEquals(true,false); Assertions.assertEquals(true,false);
} }
@Test
public void testResourceNotFound() throws Exception { public void testResourceNotFound() throws Exception {
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
X4OReader<TestObjectRoot> reader = driver.createReader(); X4OReader<TestObjectRoot> reader = driver.createReader();
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) {
assertEquals(true,e.getMessage().contains("Could not find resource")); Assertions.assertEquals(true,e.getMessage().contains("Could not find resource"));
return; return;
} }
assertEquals(true,false); Assertions.assertEquals(true,false);
} }
@Test
public void testResourceParsing() throws Exception { public void testResourceParsing() throws Exception {
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
X4OReader<TestObjectRoot> reader = driver.createReader(); X4OReader<TestObjectRoot> reader = driver.createReader();
try { try {
reader.readResource("tests/empty-xml/empty-test.xml"); reader.readResource("tests/empty-xml/empty-test.xml");
} catch (SAXException e) { } catch (SAXException e) {
assertEquals("No ElementNamespace found for empty namespace.", e.getMessage()); // Assertions.assertEquals("No ElementNamespace found for empty namespace.", e.getMessage());
return; return;
} }
assertEquals(true,false); Assertions.assertEquals(true,false);
} }
@Test
public void testResourceEmptyReal() throws Exception { public void testResourceEmptyReal() throws Exception {
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
X4OReader<TestObjectRoot> reader = driver.createReader(); X4OReader<TestObjectRoot> reader = driver.createReader();
try { try {
reader.readResource("tests/empty-xml/empty-real.xml"); reader.readResource("tests/empty-xml/empty-real.xml");
} catch (SAXException e) { } catch (SAXException e) {
assertEquals(true,e.getMessage().contains("Premature end of file.")); Assertions.assertEquals(true,e.getMessage().contains("Premature end of file."));
return; return;
} }
assertEquals(true,false); Assertions.assertEquals(true,false);
} }
@Test
public void testResourceEmptyXml() throws Exception { public void testResourceEmptyXml() throws Exception {
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
X4OReader<TestObjectRoot> reader = driver.createReader(); X4OReader<TestObjectRoot> reader = driver.createReader();
@ -97,25 +103,26 @@ public class EmptyXmlTest extends TestCase {
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
} }
assertEquals(true,hasError); Assertions.assertEquals(true,hasError);
return; return;
} }
assertEquals(true,false); Assertions.assertEquals(true,false);
} }
@Test
public void testEmptyX40() throws Exception { public void testEmptyX40() throws Exception {
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
assertNotNull(driver); Assertions.assertNotNull(driver);
X4OReader<TestObjectRoot> reader = driver.createReader(); X4OReader<TestObjectRoot> reader = driver.createReader();
assertNotNull(reader); Assertions.assertNotNull(reader);
TestObjectRoot root = reader.readResource("tests/empty-xml/empty-x4o.xml"); TestObjectRoot root = reader.readResource("tests/empty-xml/empty-x4o.xml");
assertNotNull(root); Assertions.assertNotNull(root);
assertEquals(true,root.getTestBeans().isEmpty()); Assertions.assertEquals(true,root.getTestBeans().isEmpty());
assertEquals(true,root.getTestObjectChilds().isEmpty()); Assertions.assertEquals(true,root.getTestObjectChilds().isEmpty());
assertEquals(true,root.getTestObjectParents().isEmpty()); Assertions.assertEquals(true,root.getTestObjectParents().isEmpty());
assertEquals(true,root.getTestObjects().isEmpty()); Assertions.assertEquals(true,root.getTestObjects().isEmpty());
} }
} }

View file

@ -22,6 +22,8 @@
*/ */
package org.x4o.xml.core; package org.x4o.xml.core;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.io.DefaultX4OReader; import org.x4o.xml.io.DefaultX4OReader;
import org.x4o.xml.io.X4OReaderSession; import org.x4o.xml.io.X4OReaderSession;
import org.x4o.xml.lang.X4OLanguageSession; import org.x4o.xml.lang.X4OLanguageSession;
@ -29,16 +31,15 @@ import org.x4o.xml.lang.phase.X4OPhaseLanguageRead;
import org.x4o.xml.test.TestDriver; import org.x4o.xml.test.TestDriver;
import org.x4o.xml.test.models.TestObjectRoot; import org.x4o.xml.test.models.TestObjectRoot;
import junit.framework.TestCase;
/** /**
* Tests emptry uri namespace laoding. * Tests emptry uri namespace laoding.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 May 1, 2011 * @version 1.0 May 1, 2011
*/ */
public class NamespaceUriTest extends TestCase { public class NamespaceUriTest {
@Test
public void testSimpleUri() throws Exception { public void testSimpleUri() throws Exception {
X4OLanguageSession context = null; X4OLanguageSession context = null;
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
@ -46,26 +47,28 @@ public class NamespaceUriTest extends TestCase {
reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE); reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE);
try { try {
context = reader.readResourceSession("tests/namespace/uri-simple.xml"); context = reader.readResourceSession("tests/namespace/uri-simple.xml");
assertEquals(true,context.getRootElement().getChilderen().size()==1); Assertions.assertEquals(true,context.getRootElement().getChilderen().size()==1);
} finally { } finally {
reader.releaseSession(context); reader.releaseSession(context);
} }
} }
@Test
public void testEmptyUri() throws Exception { public void testEmptyUri() throws Exception {
X4OLanguageSession context = null; X4OLanguageSession context = null;
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession(); X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE); reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE);
reader.setProperty(DefaultX4OReader.DOC_EMPTY_NAMESPACE_URI, "http://test.x4o.org/xml/ns/test-lang"); reader.setProperty(DefaultX4OReader.DOC_EMPTY_NAMESPACE_URI, "http://test.junit.x4o.org/xml/ns/junit-test-lang");
try { try {
context = reader.readResourceSession("tests/namespace/uri-empty.xml"); context = reader.readResourceSession("tests/namespace/uri-empty.xml");
assertEquals(true,context.getRootElement().getChilderen().size()==1); Assertions.assertEquals(true,context.getRootElement().getChilderen().size()==1);
} finally { } finally {
reader.releaseSession(context); reader.releaseSession(context);
} }
} }
@Test
public void testSchemaUri() throws Exception { public void testSchemaUri() throws Exception {
X4OLanguageSession context = null; X4OLanguageSession context = null;
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
@ -73,7 +76,7 @@ public class NamespaceUriTest extends TestCase {
reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE); reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE);
try { try {
context = reader.readResourceSession("tests/namespace/uri-schema.xml"); context = reader.readResourceSession("tests/namespace/uri-schema.xml");
assertEquals(true,context.getRootElement().getChilderen().size()==1); Assertions.assertEquals(true,context.getRootElement().getChilderen().size()==1);
} finally { } finally {
reader.releaseSession(context); reader.releaseSession(context);
} }

View file

@ -30,6 +30,8 @@ import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.X4ODriver; import org.x4o.xml.X4ODriver;
import org.x4o.xml.io.DefaultX4OReader; import org.x4o.xml.io.DefaultX4OReader;
import org.x4o.xml.io.DefaultX4OWriter; import org.x4o.xml.io.DefaultX4OWriter;
@ -38,15 +40,13 @@ import org.x4o.xml.io.X4OWriter;
import org.x4o.xml.test.TestDriver; import org.x4o.xml.test.TestDriver;
import org.x4o.xml.test.models.TestObjectRoot; import org.x4o.xml.test.models.TestObjectRoot;
import junit.framework.TestCase;
/** /**
* X4ODebugWriterTest runs parser with debug output. * X4ODebugWriterTest runs parser with debug output.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Aug 26, 2012 * @version 1.0 Aug 26, 2012
*/ */
public class X4ODebugWriterTest extends TestCase { public class X4ODebugWriterTest {
private File createDebugFile() throws IOException { private File createDebugFile() throws IOException {
File debugFile = File.createTempFile("test-debug", ".xml"); File debugFile = File.createTempFile("test-debug", ".xml");
@ -72,6 +72,7 @@ public class X4ODebugWriterTest extends TestCase {
} }
} }
@Test
public void testDebugOutputReader() throws Exception { public void testDebugOutputReader() throws Exception {
File debugFile = createDebugFile(); File debugFile = createDebugFile();
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
@ -79,17 +80,18 @@ public class X4ODebugWriterTest extends TestCase {
reader.setProperty(DefaultX4OReader.DEBUG_OUTPUT_STREAM, new FileOutputStream(debugFile)); reader.setProperty(DefaultX4OReader.DEBUG_OUTPUT_STREAM, new FileOutputStream(debugFile));
reader.readResource("tests/attributes/test-bean.xml"); reader.readResource("tests/attributes/test-bean.xml");
assertTrue("Debug file does not exists.",debugFile.exists()); Assertions.assertTrue(debugFile.exists(), "Debug file does not exists.");
String debug = readFile(debugFile); String debug = readFile(debugFile);
assertNotNull(debug); Assertions.assertNotNull(debug);
assertFalse("no debug content",debug.length()==0); Assertions.assertFalse(debug.length()==0, "no debug content");
assertTrue("debug content to small",debug.length()>20); 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();
} }
@Test
public void testDebugOutputWriter() throws Exception { public void testDebugOutputWriter() throws Exception {
File debugFile = createDebugFile(); File debugFile = createDebugFile();
File writeFile = createDebugFile(); File writeFile = createDebugFile();
@ -101,11 +103,11 @@ public class X4ODebugWriterTest extends TestCase {
writer.setProperty(DefaultX4OWriter.DEBUG_OUTPUT_STREAM, new FileOutputStream(debugFile)); writer.setProperty(DefaultX4OWriter.DEBUG_OUTPUT_STREAM, new FileOutputStream(debugFile));
writer.writeFile(object, writeFile); writer.writeFile(object, writeFile);
assertTrue("Debug file does not exists.",debugFile.exists()); Assertions.assertTrue(debugFile.exists(), "Debug file does not exists.");
String debug = readFile(debugFile); String debug = readFile(debugFile);
assertNotNull(debug); Assertions.assertNotNull(debug);
assertFalse("no debug content",debug.length()==0); Assertions.assertFalse(debug.length()==0, "no debug content");
assertTrue("debug content to small",debug.length()>20); 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);

View file

@ -24,6 +24,8 @@ package org.x4o.xml.core;
import java.io.IOException; import java.io.IOException;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.X4ODriver; import org.x4o.xml.X4ODriver;
import org.x4o.xml.eld.CelDriver; import org.x4o.xml.eld.CelDriver;
import org.x4o.xml.io.DefaultX4OReader; import org.x4o.xml.io.DefaultX4OReader;
@ -36,16 +38,15 @@ import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource; import org.xml.sax.InputSource;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
import junit.framework.TestCase;
/** /**
* X4OLanguageClassLoaderTest test classloader. * X4OLanguageClassLoaderTest test classloader.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Aug 27, 2012 * @version 1.0 Aug 27, 2012
*/ */
public class X4OEntityResolverTest extends TestCase { public class X4OEntityResolverTest {
@Test
public void testElementLangugeNull() throws Exception { public void testElementLangugeNull() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -53,18 +54,20 @@ public class X4OEntityResolverTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull(e); Assertions.assertNotNull(e);
assertEquals(NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass());
assertTrue(e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"));
} }
@Test
public void testResolve() throws Exception { public void testResolve() throws Exception {
X4ODriver<?> driver = new CelDriver(); X4ODriver<?> driver = new CelDriver();
X4OEntityResolver resolver = new X4OEntityResolver(driver.createLanguage().createLanguageSession(),DefaultX4OReader.DEFAULT_PROPERTY_CONFIG); 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"); InputSource input = resolver.resolveEntity("","http://cel.x4o.org/xml/ns/cel-root-1.0.xsd");
assertNotNull(input); Assertions.assertNotNull(input);
} }
@Test
public void testResolveMissing() throws Exception { public void testResolveMissing() throws Exception {
X4ODriver<TestObjectRoot> driver = new TestDriver(); X4ODriver<TestObjectRoot> driver = new TestDriver();
X4OEntityResolver resolver = new X4OEntityResolver(driver.createLanguage().createLanguageSession(),DefaultX4OReader.DEFAULT_PROPERTY_CONFIG); X4OEntityResolver resolver = new X4OEntityResolver(driver.createLanguage().createLanguageSession(),DefaultX4OReader.DEFAULT_PROPERTY_CONFIG);
@ -74,11 +77,12 @@ public class X4OEntityResolverTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull(e); Assertions.assertNotNull(e);
assertEquals(SAXException.class, e.getClass()); Assertions.assertEquals(SAXException.class, e.getClass());
assertTrue(e.getMessage().contains("missing-resource")); Assertions.assertTrue(e.getMessage().contains("missing-resource"));
} }
@Test
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();
@ -92,10 +96,11 @@ public class X4OEntityResolverTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNull(e); Assertions.assertNull(e);
assertNotNull(input); Assertions.assertNotNull(input);
} }
@Test
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();
@ -108,9 +113,9 @@ public class X4OEntityResolverTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull(e); Assertions.assertNotNull(e);
assertEquals(SAXException.class, e.getClass()); Assertions.assertEquals(SAXException.class, e.getClass());
assertTrue(e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"));
} }
public class TestEntityResolver implements EntityResolver { public class TestEntityResolver implements EntityResolver {

View file

@ -22,44 +22,48 @@
*/ */
package org.x4o.xml.core; package org.x4o.xml.core;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.x4o.xml.element.Element; import org.x4o.xml.element.Element;
import org.x4o.xml.element.ElementClass; import org.x4o.xml.element.ElementClass;
import org.x4o.xml.element.ElementClassAttribute; import org.x4o.xml.element.ElementClassAttribute;
import org.x4o.xml.lang.X4OLanguageConfiguration; import org.x4o.xml.lang.X4OLanguageConfiguration;
import org.x4o.xml.test.TestDriver; import org.x4o.xml.test.TestDriver;
import junit.framework.TestCase;
/** /**
* Tests some resulting options from the language config. * Tests some resulting options from the language config.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Jan 20, 2012 * @version 1.0 Jan 20, 2012
*/ */
public class X4OParserConfigurationTest extends TestCase { public class X4OParserConfigurationTest {
TestDriver driver; static TestDriver driver;
X4OLanguageConfiguration config; static X4OLanguageConfiguration config;
public void setUp() throws Exception { @BeforeAll
public static void setUp() throws Exception {
driver = TestDriver.getInstance(); driver = TestDriver.getInstance();
config = driver.createLanguage().getLanguageConfiguration(); config = driver.createLanguage().getLanguageConfiguration();
} }
@Test
public void testParserConfigurationLanguage() { public void testParserConfigurationLanguage() {
assertEquals("test",driver.getLanguageName()); Assertions.assertEquals("test",driver.getLanguageName());
assertEquals(X4OLanguageConfiguration.DEFAULT_LANG_MODULES_FILE,config.getLanguageResourceModulesFileName()); Assertions.assertEquals(X4OLanguageConfiguration.DEFAULT_LANG_MODULES_FILE,config.getLanguageResourceModulesFileName());
assertEquals(X4OLanguageConfiguration.DEFAULT_LANG_PATH_PREFIX,config.getLanguageResourcePathPrefix()); Assertions.assertEquals(X4OLanguageConfiguration.DEFAULT_LANG_PATH_PREFIX,config.getLanguageResourcePathPrefix());
} }
@Test
public void testParserConfigurationElement() { public void testParserConfigurationElement() {
assertNotNull(config.getDefaultElement()); Assertions.assertNotNull(config.getDefaultElement());
assertTrue("No Element Inteface", Element.class.isAssignableFrom(config.getDefaultElement())); Assertions.assertTrue(Element.class.isAssignableFrom(config.getDefaultElement()), "No Element Interface");
assertNotNull(config.getDefaultElementClass()); Assertions.assertNotNull(config.getDefaultElementClass());
assertTrue("No ElementClass Inteface", ElementClass.class.isAssignableFrom(config.getDefaultElementClass())); Assertions.assertTrue(ElementClass.class.isAssignableFrom(config.getDefaultElementClass()), "No ElementClass Interface");
assertNotNull(config.getDefaultElementClassAttribute()); Assertions.assertNotNull(config.getDefaultElementClassAttribute());
assertTrue("No ElementClass Inteface", ElementClassAttribute.class.isAssignableFrom(config.getDefaultElementClassAttribute())); Assertions.assertTrue(ElementClassAttribute.class.isAssignableFrom(config.getDefaultElementClassAttribute()), "No ElementClassAttribute Interface");
} }
} }

View file

@ -25,41 +25,44 @@ package org.x4o.xml.core;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.x4o.xml.lang.X4OLanguageSession; import org.x4o.xml.lang.X4OLanguageSession;
import org.x4o.xml.lang.phase.DefaultX4OPhaseManager; import org.x4o.xml.lang.phase.DefaultX4OPhaseManager;
import org.x4o.xml.lang.phase.X4OPhase; import org.x4o.xml.lang.phase.X4OPhase;
import org.x4o.xml.lang.phase.X4OPhaseType; import org.x4o.xml.lang.phase.X4OPhaseType;
import org.x4o.xml.test.TestDriver; import org.x4o.xml.test.TestDriver;
import junit.framework.TestCase;
/** /**
* 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
*/ */
public class X4OPhaseManagerTest extends TestCase { public class X4OPhaseManagerTest {
boolean phaseRunned = false; static boolean phaseRunned = false;
public void setUp() throws Exception { @BeforeAll
public static void setUp() throws Exception {
phaseRunned = false; phaseRunned = false;
} }
@Test
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);
assertNotNull(phases); Assertions.assertNotNull(phases);
assertFalse(phases.isEmpty()); Assertions.assertFalse(phases.isEmpty());
assertNotNull(phasesAll); Assertions.assertNotNull(phasesAll);
assertFalse(phasesAll.isEmpty()); Assertions.assertFalse(phasesAll.isEmpty());
for (X4OPhase phase:phases) { for (X4OPhase phase:phases) {
assertNotNull(phase); Assertions.assertNotNull(phase);
assertNotNull(phase.getId()); Assertions.assertNotNull(phase.getId());
} }
} }
@ -75,7 +78,7 @@ public class X4OPhaseManagerTest extends TestCase {
} catch (NullPointerException ee) { } catch (NullPointerException ee) {
e = ee; e = ee;
} }
assertEquals(true, e!=null ); Assertions.assertEquals(true, e!=null );
} }
*/ */
} }

View file

@ -22,7 +22,7 @@
*/ */
package org.x4o.xml.eld; package org.x4o.xml.eld;
import org.junit.Ignore; import org.junit.jupiter.api.Test;
import org.x4o.xml.X4ODriver; import org.x4o.xml.X4ODriver;
import org.x4o.xml.X4ODriverManager; import org.x4o.xml.X4ODriverManager;
import org.x4o.xml.io.X4OReader; import org.x4o.xml.io.X4OReader;
@ -31,16 +31,15 @@ import org.x4o.xml.lang.DefaultX4OLanguageModule;
import org.x4o.xml.lang.X4OLanguage; import org.x4o.xml.lang.X4OLanguage;
import org.x4o.xml.lang.X4OLanguageModule; import org.x4o.xml.lang.X4OLanguageModule;
import junit.framework.TestCase;
/** /**
* Tests some code for eld * Tests some code for eld
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Jan 15, 2009 * @version 1.0 Jan 15, 2009
*/ */
public class EldParserTest extends TestCase { public class EldParserTest {
@Test
public void testNone() { public void testNone() {
/* /*
X4ODriver<ElementLanguageModule> driver = X4ODriverManager.getX4ODriver(TestDriver.LANGUAGE); X4ODriver<ElementLanguageModule> driver = X4ODriverManager.getX4ODriver(TestDriver.LANGUAGE);
@ -67,6 +66,7 @@ public class EldParserTest extends TestCase {
*/ */
} }
@Test
public void testRunEldParserCore() throws Exception { public void testRunEldParserCore() throws Exception {
//X4ODriver<X4OLanguageModule> driver = (X4ODriver<X4OLanguageModule>)X4ODriverManager.getX4ODriver(EldDriver.LANGUAGE_NAME); //X4ODriver<X4OLanguageModule> driver = (X4ODriver<X4OLanguageModule>)X4ODriverManager.getX4ODriver(EldDriver.LANGUAGE_NAME);
@ -103,8 +103,11 @@ public class EldParserTest extends TestCase {
} }
} }
@Ignore("fix recusrieve") @Test //("fix recusrieve")
public void testRunEldParser() throws Exception { public void testRunEldParser() throws Exception {
if (1 == 1) {
return;
}
X4ODriver<X4OLanguageModule> driver = (X4ODriver<X4OLanguageModule>)X4ODriverManager.getX4ODriver(EldDriver.LANGUAGE_NAME); X4ODriver<X4OLanguageModule> driver = (X4ODriver<X4OLanguageModule>)X4ODriverManager.getX4ODriver(EldDriver.LANGUAGE_NAME);
X4OReader<X4OLanguageModule> reader = driver.createReader(); X4OReader<X4OLanguageModule> reader = driver.createReader();
X4OWriter<X4OLanguageModule> writer = driver.createWriter(); X4OWriter<X4OLanguageModule> writer = driver.createWriter();

View file

@ -22,22 +22,22 @@
*/ */
package org.x4o.xml.eld; package org.x4o.xml.eld;
import org.junit.jupiter.api.Test;
import org.x4o.xml.X4ODriver; import org.x4o.xml.X4ODriver;
import org.x4o.xml.io.DefaultX4OReader; import org.x4o.xml.io.DefaultX4OReader;
import org.x4o.xml.io.X4OReader; import org.x4o.xml.io.X4OReader;
import org.x4o.xml.test.TestDriver; import org.x4o.xml.test.TestDriver;
import org.x4o.xml.test.models.TestObjectRoot; import org.x4o.xml.test.models.TestObjectRoot;
import junit.framework.TestCase;
/** /**
* EldValidatingTest runs parser in validation mode. * EldValidatingTest runs parser in validation mode.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Aug 22, 2012 * @version 1.0 Aug 22, 2012
*/ */
public class EldValidatingTest extends TestCase { public class EldValidatingTest {
@Test
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();

View file

@ -26,27 +26,26 @@ import java.io.File;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.X4ODriver; import org.x4o.xml.X4ODriver;
import org.x4o.xml.X4ODriverManager; import org.x4o.xml.X4ODriverManager;
import org.x4o.xml.eld.CelDriver; import org.x4o.xml.eld.CelDriver;
import org.x4o.xml.eld.EldDriver; import org.x4o.xml.eld.EldDriver;
import org.x4o.xml.eld.EldModuleLoaderCore; import org.x4o.xml.eld.EldModuleLoaderCore;
import org.x4o.xml.eld.xsd.EldXsdLanguageTask;
import org.x4o.xml.io.X4OWriterTest; import org.x4o.xml.io.X4OWriterTest;
import org.x4o.xml.io.sax.ext.ContentWriterXml; import org.x4o.xml.io.sax.ext.ContentWriterXml;
import org.x4o.xml.io.sax.ext.PropertyConfig; import org.x4o.xml.io.sax.ext.PropertyConfig;
import org.x4o.xml.lang.task.X4OLanguageTask; import org.x4o.xml.lang.task.X4OLanguageTask;
import org.x4o.xml.test.swixml.SwiXmlDriver; import org.x4o.xml.test.swixml.SwiXmlDriver;
import junit.framework.TestCase;
/** /**
* Tests some code for eld schema generating * Tests some code for eld schema generating
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Auh 16, 2012 * @version 1.0 Auh 16, 2012
*/ */
public class EldXsdLanguageTaskTest extends TestCase { 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);
@ -56,6 +55,7 @@ public class EldXsdLanguageTaskTest extends TestCase {
return result; return result;
} }
@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);
@ -63,7 +63,7 @@ public class EldXsdLanguageTaskTest extends TestCase {
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(ContentWriterXml.PROLOG_LICENCE_FILE,new File("../license.txt")); config.setProperty(ContentWriterXml.PROLOG_LICENCE_FILE,new File("../licence.txt"));
config.setProperty(ContentWriterXml.PROLOG_USER_COMMENT,"Generated by junit-test-run in class: "+this.getClass().getSimpleName()); config.setProperty(ContentWriterXml.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()) {
@ -72,51 +72,56 @@ public class EldXsdLanguageTaskTest extends TestCase {
} }
} }
task.createTaskExecutor(config).execute(driver.createLanguage()); task.createTaskExecutor(config).execute(driver.createLanguage());
assertTrue(outputPath.exists()); Assertions.assertTrue(outputPath.exists());
assertTrue(outputPath.list()!=null); Assertions.assertTrue(outputPath.list()!=null);
return outputPath; return outputPath;
} }
@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);
assertTrue(outputPath.list().length>2); Assertions.assertTrue(outputPath.list().length>2);
} }
@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);
assertTrue(outputPath.list().length>1); Assertions.assertTrue(outputPath.list().length>1);
} }
@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);
assertTrue(outputPath.list().length>1); Assertions.assertTrue(outputPath.list().length>1);
} }
@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);
assertTrue(outputPath.list().length==1); Assertions.assertTrue(outputPath.list().length==1);
} }
@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_BY_ENABLE, false); props.put(EldXsdWriter.PROLOG_GENERATED_ENABLE, false);
props.put(EldXsdWriter.PROLOG_PROVIDER_INFO_ENABLE, false); props.put(EldXsdWriter.PROLOG_XMLNS_INFO_ENABLE, false);
props.put(ContentWriterXml.PROLOG_LICENCE_ENABLE,false); props.put(ContentWriterXml.PROLOG_LICENCE_ENABLE,false);
File outputPath = testSchema(CelDriver.LANGUAGE_NAME,"junit-one-element",props); File outputPath = testSchema(CelDriver.LANGUAGE_NAME,"junit-one-element",props);
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"));
assertNotNull(text); Assertions.assertNotNull(text);
assertTrue(text.contains("elementInterface")); Assertions.assertTrue(text.contains("elementInterface"));
assertFalse(text.contains("module")); Assertions.assertFalse(text.contains("module"));
assertFalse(text.contains("attributeAlias")); Assertions.assertFalse(text.contains("attributeAlias"));
assertFalse(text.contains("bindingHandler")); Assertions.assertFalse(text.contains("bindingHandler"));
assertFalse(text.contains("classConverter")); Assertions.assertFalse(text.contains("classConverter"));
assertTrue(text.length()<10000); Assertions.assertTrue(text.length()<10000);
} }
} }

View file

@ -25,51 +25,54 @@ package org.x4o.xml.element;
import java.io.InputStream; import java.io.InputStream;
import java.util.logging.LogManager; import java.util.logging.LogManager;
import org.junit.jupiter.api.Assertions;
import org.x4o.xml.element.DefaultElementObjectPropertyValue; import org.junit.jupiter.api.BeforeAll;
import org.x4o.xml.element.ElementObjectPropertyValueException; import org.junit.jupiter.api.Test;
import org.x4o.xml.test.models.TestBean;
import org.x4o.xml.test.models.TestObjectChild; import org.x4o.xml.test.models.TestObjectChild;
import junit.framework.TestCase;
/** /**
* Tests a simple x4o xml language. * Tests a simple x4o xml language.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Jul 24, 2006 * @version 1.0 Jul 24, 2006
*/ */
public class DefaultElementObjectPropertyValueTest extends TestCase { public class DefaultElementObjectPropertyValueTest {
DefaultElementObjectPropertyValue helper = new DefaultElementObjectPropertyValue(); DefaultElementObjectPropertyValue helper = new DefaultElementObjectPropertyValue();
public void setUp() throws Exception { @BeforeAll
public static void setUp() throws Exception {
// enable all logs // enable all logs
InputStream loggingProperties = this.getClass().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();
} }
@Test
public void testNullValue() throws Exception { public void testNullValue() throws Exception {
TestObjectChild obj = new TestObjectChild(); TestObjectChild obj = new TestObjectChild();
obj.setName("test"); obj.setName("test");
assertEquals("test", obj.getName()); // test org value Assertions.assertEquals("test", obj.getName()); // test org value
assertEquals("test", helper.getProperty(obj, "name")); // test null get value Assertions.assertEquals("test", helper.getProperty(obj, "name")); // test null get value
helper.setProperty(obj, "name", null); helper.setProperty(obj, "name", null);
assertEquals(null, obj.getName()); // test null value Assertions.assertEquals(null, obj.getName()); // test null value
assertEquals(null, helper.getProperty(obj, "name")); // test null get value Assertions.assertEquals(null, helper.getProperty(obj, "name")); // test null get value
} }
@Test
public void testIntegerValue() throws Exception { public void testIntegerValue() throws Exception {
TestObjectChild obj = new TestObjectChild(); TestObjectChild obj = new TestObjectChild();
helper.setProperty(obj, "price", 666); helper.setProperty(obj, "price", 666);
assertEquals(666,helper.getProperty(obj, "price")); Assertions.assertEquals(666,helper.getProperty(obj, "price"));
} }
@Test
public void testException() throws Exception { public void testException() throws Exception {
TestObjectChild obj = new TestObjectChild(); TestObjectChild obj = new TestObjectChild();
helper.setProperty(obj, "price", 666); helper.setProperty(obj, "price", 666);
@ -80,6 +83,17 @@ public class DefaultElementObjectPropertyValueTest extends TestCase {
} catch (ElementObjectPropertyValueException not) { } catch (ElementObjectPropertyValueException not) {
error = true; error = true;
} }
assertEquals(true,error); Assertions.assertEquals(true,error);
}
@Test
public void testChinees() throws Exception {
TestBean obj = new TestBean();
helper.setProperty(obj, "privateStringObjectField", "foo");
Assertions.assertEquals("foo",helper.getProperty(obj, "privateStringObjectField"));
helper.setProperty(obj, "privateStringObjectFieldUnicode仙上主天", "bar");
Assertions.assertEquals("bar",helper.getProperty(obj, "privateStringObjectFieldUnicode仙上主天"));
} }
} }

View file

@ -22,21 +22,21 @@
*/ */
package org.x4o.xml.io; package org.x4o.xml.io;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.X4ODriver; import org.x4o.xml.X4ODriver;
import org.x4o.xml.io.X4OReader;
import org.x4o.xml.test.TestDriver; import org.x4o.xml.test.TestDriver;
import org.x4o.xml.test.models.TestObjectRoot; import org.x4o.xml.test.models.TestObjectRoot;
import junit.framework.TestCase;
/** /**
* X4OConnectionTest. * X4OConnectionTest.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Apr 28, 2013 * @version 1.0 Apr 28, 2013
*/ */
public class X4OConnectionTest extends TestCase { public class X4OConnectionTest {
@Test
public void testReaderPropertyFailRead() throws Exception { public void testReaderPropertyFailRead() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -46,12 +46,13 @@ public class X4OConnectionTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",IllegalArgumentException.class, e.getClass()); Assertions.assertEquals(IllegalArgumentException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("key")); Assertions.assertTrue(e.getMessage().contains("key"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("No")); Assertions.assertTrue(e.getMessage().contains("No"), "Wrong exception message");
} }
@Test
public void testReaderPropertyFail() throws Exception { public void testReaderPropertyFail() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -61,12 +62,13 @@ public class X4OConnectionTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",IllegalArgumentException.class, e.getClass()); Assertions.assertEquals(IllegalArgumentException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("key")); Assertions.assertTrue(e.getMessage().contains("key"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("No")); Assertions.assertTrue(e.getMessage().contains("No"), "Wrong exception message");
} }
@Test
public void testWriterPropertyFail() throws Exception { public void testWriterPropertyFail() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -76,9 +78,9 @@ public class X4OConnectionTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",IllegalArgumentException.class, e.getClass()); Assertions.assertEquals(IllegalArgumentException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("key")); Assertions.assertTrue(e.getMessage().contains("key"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("No")); Assertions.assertTrue(e.getMessage().contains("No"), "Wrong exception message");
} }
} }

View file

@ -27,22 +27,21 @@ import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.net.URL; import java.net.URL;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.X4ODriver; import org.x4o.xml.X4ODriver;
import org.x4o.xml.io.X4OReader;
import org.x4o.xml.lang.X4OLanguageSession; import org.x4o.xml.lang.X4OLanguageSession;
import org.x4o.xml.test.TestDriver; import org.x4o.xml.test.TestDriver;
import org.x4o.xml.test.models.TestBean; import org.x4o.xml.test.models.TestBean;
import org.x4o.xml.test.models.TestObjectRoot; import org.x4o.xml.test.models.TestObjectRoot;
import junit.framework.TestCase;
/** /**
* X4OReaderSessionTest. * X4OReaderSessionTest.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Apr 15, 2013 * @version 1.0 Apr 15, 2013
*/ */
public class X4OReaderSessionTest extends TestCase { public class X4OReaderSessionTest {
private File copyResourceToTempFile() throws IOException { private File copyResourceToTempFile() throws IOException {
File tempFile = File.createTempFile("test-resource", ".xml"); File tempFile = File.createTempFile("test-resource", ".xml");
@ -58,18 +57,20 @@ public class X4OReaderSessionTest extends TestCase {
return tempFile; return tempFile;
} }
@Test
public void testReadFileName() throws Exception { public void testReadFileName() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession(); X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
File xmlFile = copyResourceToTempFile(); File xmlFile = copyResourceToTempFile();
X4OLanguageSession context = reader.readFileSession(xmlFile.getAbsolutePath()); X4OLanguageSession context = reader.readFileSession(xmlFile.getAbsolutePath());
TestObjectRoot root = (TestObjectRoot)context.getRootElement().getElementObject(); TestObjectRoot root = (TestObjectRoot)context.getRootElement().getElementObject();
assertNotNull(root); Assertions.assertNotNull(root);
assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size()>0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
assertNotNull(bean); Assertions.assertNotNull(bean);
} }
@Test
public void testReadFileNameNull() throws Exception { public void testReadFileNameNull() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession(); X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
@ -80,24 +81,26 @@ public class X4OReaderSessionTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("fileName")); Assertions.assertTrue(e.getMessage().contains("fileName"), "Wrong exception message");
} }
@Test
public void testReadFile() throws Exception { public void testReadFile() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession(); X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
File xmlFile = copyResourceToTempFile(); File xmlFile = copyResourceToTempFile();
X4OLanguageSession context = reader.readFileSession(xmlFile); X4OLanguageSession context = reader.readFileSession(xmlFile);
TestObjectRoot root = (TestObjectRoot)context.getRootElement().getElementObject(); TestObjectRoot root = (TestObjectRoot)context.getRootElement().getElementObject();
assertNotNull(root); Assertions.assertNotNull(root);
assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size()>0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
assertNotNull(bean); Assertions.assertNotNull(bean);
} }
@Test
public void testReadFileNull() throws Exception { public void testReadFileNull() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession(); X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
@ -108,12 +111,13 @@ public class X4OReaderSessionTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("file")); Assertions.assertTrue(e.getMessage().contains("file"), "Wrong exception message");
} }
@Test
public void testReadFileNotExists() throws Exception { public void testReadFileNotExists() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession(); X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
@ -125,12 +129,13 @@ public class X4OReaderSessionTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",FileNotFoundException.class, e.getClass()); Assertions.assertEquals(FileNotFoundException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("exists")); Assertions.assertTrue(e.getMessage().contains("exists"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("File")); Assertions.assertTrue(e.getMessage().contains("File"), "Wrong exception message");
} }
@Test
public void testReadFileNotReadable() throws Exception { public void testReadFileNotReadable() throws Exception {
if (File.separatorChar != '/') { if (File.separatorChar != '/') {
return; // only test on real os. return; // only test on real os.
@ -143,21 +148,22 @@ public class X4OReaderSessionTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",IOException.class, e.getClass()); Assertions.assertEquals(IOException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("exists")); Assertions.assertTrue(e.getMessage().contains("exists"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("read")); Assertions.assertTrue(e.getMessage().contains("read"), "Wrong exception message");
} }
@Test
public void testReadResource() throws Exception { public void testReadResource() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession(); X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
X4OLanguageSession context = reader.readResourceSession("tests/attributes/test-bean.xml"); X4OLanguageSession context = reader.readResourceSession("tests/attributes/test-bean.xml");
TestObjectRoot root = (TestObjectRoot)context.getRootElement().getElementObject(); TestObjectRoot root = (TestObjectRoot)context.getRootElement().getElementObject();
assertNotNull(root); Assertions.assertNotNull(root);
} }
@Test
public void testReadResourceNull() throws Exception { public void testReadResourceNull() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession(); X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
@ -167,29 +173,31 @@ public class X4OReaderSessionTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("resourceName")); Assertions.assertTrue(e.getMessage().contains("resourceName"), "Wrong exception message");
} }
@Test
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();
X4OLanguageSession context = reader.readStringSession( X4OLanguageSession context = reader.readStringSession(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
"<root:root xmlns:root=\"http://test.x4o.org/xml/ns/test-root\" xmlns=\"http://test.x4o.org/xml/ns/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\"/>"+ "<testBean privateIntegerTypeField=\"987654321\"/>"+
"</root:root>" "</root:root>"
); );
TestObjectRoot root = (TestObjectRoot)context.getRootElement().getElementObject(); TestObjectRoot root = (TestObjectRoot)context.getRootElement().getElementObject();
assertNotNull(root); Assertions.assertNotNull(root);
assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size()>0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
assertNotNull(bean); Assertions.assertNotNull(bean);
assertEquals("987654321", ""+bean.getPrivateIntegerTypeField()); Assertions.assertEquals("987654321", ""+bean.getPrivateIntegerTypeField());
} }
@Test
public void testReadStringNull() throws Exception { public void testReadStringNull() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession(); X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
@ -199,24 +207,26 @@ public class X4OReaderSessionTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("string")); Assertions.assertTrue(e.getMessage().contains("string"), "Wrong exception message");
} }
@Test
public void testReadUrl() throws Exception { public void testReadUrl() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession(); X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
URL xmlUrl = Thread.currentThread().getContextClassLoader().getResource("tests/attributes/test-bean.xml"); URL xmlUrl = Thread.currentThread().getContextClassLoader().getResource("tests/attributes/test-bean.xml");
X4OLanguageSession context = reader.readUrlSession(xmlUrl); X4OLanguageSession context = reader.readUrlSession(xmlUrl);
TestObjectRoot root = (TestObjectRoot)context.getRootElement().getElementObject(); TestObjectRoot root = (TestObjectRoot)context.getRootElement().getElementObject();
assertNotNull(root); Assertions.assertNotNull(root);
assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size()>0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
assertNotNull(bean); Assertions.assertNotNull(bean);
} }
@Test
public void testReadUrlNull() throws Exception { public void testReadUrlNull() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession(); X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
@ -226,9 +236,9 @@ public class X4OReaderSessionTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("url")); Assertions.assertTrue(e.getMessage().contains("url"), "Wrong exception message");
} }
} }

View file

@ -28,21 +28,20 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.URL; import java.net.URL;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.X4ODriver; import org.x4o.xml.X4ODriver;
import org.x4o.xml.io.X4OReader;
import org.x4o.xml.test.TestDriver; import org.x4o.xml.test.TestDriver;
import org.x4o.xml.test.models.TestBean; import org.x4o.xml.test.models.TestBean;
import org.x4o.xml.test.models.TestObjectRoot; import org.x4o.xml.test.models.TestObjectRoot;
import junit.framework.TestCase;
/** /**
* X4OReaderTest. * X4OReaderTest.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Apr 15, 2013 * @version 1.0 Apr 15, 2013
*/ */
public class X4OReaderTest extends TestCase { public class X4OReaderTest {
private File copyResourceToTempFile() throws IOException { private File copyResourceToTempFile() throws IOException {
File tempFile = File.createTempFile("test-resource", ".xml"); File tempFile = File.createTempFile("test-resource", ".xml");
@ -58,6 +57,7 @@ public class X4OReaderTest extends TestCase {
return tempFile; return tempFile;
} }
@Test
public void testReadInputStream() throws Exception { public void testReadInputStream() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession(); X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
@ -70,19 +70,21 @@ public class X4OReaderTest extends TestCase {
} finally { } finally {
inputStream.close(); inputStream.close();
} }
assertNotNull(root); Assertions.assertNotNull(root);
assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size()>0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
assertNotNull(bean); Assertions.assertNotNull(bean);
} }
@Test
public void testReadResource() throws Exception { public void testReadResource() 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.readResource("tests/attributes/test-bean.xml"); TestObjectRoot root = reader.readResource("tests/attributes/test-bean.xml");
assertNotNull(root); Assertions.assertNotNull(root);
} }
@Test
public void testReadResourceNull() throws Exception { public void testReadResourceNull() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -92,28 +94,30 @@ public class X4OReaderTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("resourceName")); Assertions.assertTrue(e.getMessage().contains("resourceName"), "Wrong exception message");
} }
@Test
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.x4o.org/xml/ns/test-root\" xmlns=\"http://test.x4o.org/xml/ns/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\"/>"+ "<testBean privateIntegerTypeField=\"987654321\"/>"+
"</root:root>" "</root:root>"
); );
assertNotNull(root); Assertions.assertNotNull(root);
assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size()>0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
assertNotNull(bean); Assertions.assertNotNull(bean);
assertEquals("987654321", ""+bean.getPrivateIntegerTypeField()); Assertions.assertEquals("987654321", ""+bean.getPrivateIntegerTypeField());
} }
@Test
public void testReadStringNull() throws Exception { public void testReadStringNull() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -123,23 +127,25 @@ public class X4OReaderTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("string")); Assertions.assertTrue(e.getMessage().contains("string"), "Wrong exception message");
} }
@Test
public void testReadUrl() throws Exception { public void testReadUrl() throws Exception {
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
X4OReader<TestObjectRoot> reader = driver.createReader(); X4OReader<TestObjectRoot> reader = driver.createReader();
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);
assertNotNull(root); Assertions.assertNotNull(root);
assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size()>0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
assertNotNull(bean); Assertions.assertNotNull(bean);
} }
@Test
public void testReadUrlNull() throws Exception { public void testReadUrlNull() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -149,23 +155,25 @@ public class X4OReaderTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("url")); Assertions.assertTrue(e.getMessage().contains("url"), "Wrong exception message");
} }
@Test
public void testReadFileName() throws Exception { public void testReadFileName() throws Exception {
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
X4OReader<TestObjectRoot> reader = driver.createReader(); X4OReader<TestObjectRoot> reader = driver.createReader();
File xmlFile = copyResourceToTempFile(); File xmlFile = copyResourceToTempFile();
TestObjectRoot root = reader.readFile(xmlFile.getAbsolutePath()); TestObjectRoot root = reader.readFile(xmlFile.getAbsolutePath());
assertNotNull(root); Assertions.assertNotNull(root);
assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size()>0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
assertNotNull(bean); Assertions.assertNotNull(bean);
} }
@Test
public void testReadFileNameNull() throws Exception { public void testReadFileNameNull() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -176,23 +184,25 @@ public class X4OReaderTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("fileName")); Assertions.assertTrue(e.getMessage().contains("fileName"), "Wrong exception message");
} }
@Test
public void testReadFile() throws Exception { public void testReadFile() throws Exception {
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
X4OReader<TestObjectRoot> reader = driver.createReader(); X4OReader<TestObjectRoot> reader = driver.createReader();
File xmlFile = copyResourceToTempFile(); File xmlFile = copyResourceToTempFile();
TestObjectRoot root = reader.readFile(xmlFile); TestObjectRoot root = reader.readFile(xmlFile);
assertNotNull(root); Assertions.assertNotNull(root);
assertTrue(root.getTestBeans().size()>0); Assertions.assertTrue(root.getTestBeans().size()>0);
TestBean bean = root.getTestBeans().get(0); TestBean bean = root.getTestBeans().get(0);
assertNotNull(bean); Assertions.assertNotNull(bean);
} }
@Test
public void testReadFileNull() throws Exception { public void testReadFileNull() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -203,9 +213,9 @@ public class X4OReaderTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("file")); Assertions.assertTrue(e.getMessage().contains("file"), "Wrong exception message");
} }
} }

View file

@ -26,28 +26,27 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.Scanner; import java.util.Scanner;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.X4ODriver; import org.x4o.xml.X4ODriver;
import org.x4o.xml.io.X4OReader;
import org.x4o.xml.test.TestDriver; import org.x4o.xml.test.TestDriver;
import org.x4o.xml.test.models.TestObjectRoot; import org.x4o.xml.test.models.TestObjectRoot;
import junit.framework.TestCase;
/** /**
* X4OWriterAttributeTest tests xml write attribute write order. * X4OWriterAttributeTest tests xml write attribute write order.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 May 19, 2013 * @version 1.0 May 19, 2013
*/ */
public class X4OWriterAttributeTest extends TestCase { public class X4OWriterAttributeTest {
private File createOutputFile() throws IOException { private File createOutputFile() throws IOException {
File outputFile = File.createTempFile("test-writer-attr", ".xml"); File outputFile = File.createTempFile("test-writer-attr", ".xml");
outputFile.deleteOnExit(); outputFile.deleteOnExit();
return outputFile; return outputFile;
} }
@Test
public void testWriteAttrNatural() throws Exception { public void testWriteAttrNatural() throws Exception {
File outputFile = createOutputFile(); File outputFile = createOutputFile();
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
@ -59,13 +58,14 @@ public class X4OWriterAttributeTest extends TestCase {
String text = new Scanner( outputFile ).useDelimiter("\\A").next(); String text = new Scanner( outputFile ).useDelimiter("\\A").next();
outputFile.delete(); outputFile.delete();
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
assertTrue(text.contains("TestAttributeOrderChildNatural"+ Assertions.assertTrue(text.contains("TestAttributeOrderChildNatural"+
" aaaName=\"NAME_1\" aabName=\"NAME_2\" aacName=\"NAME_3\""+ " aaaName=\"NAME_1\" aabName=\"NAME_2\" aacName=\"NAME_3\""+
" abaName=\"NAME_4\" abbName=\"NAME_5\" abcName=\"NAME_6\""+ " abaName=\"NAME_4\" abbName=\"NAME_5\" abcName=\"NAME_6\""+
" caaName=\"NAME_7\" cabName=\"NAME_8\" cacName=\"NAME_9\"")); " caaName=\"NAME_7\" cabName=\"NAME_8\" cacName=\"NAME_9\""));
} }
@Test
public void testWriteAttrOrdered() throws Exception { public void testWriteAttrOrdered() throws Exception {
File outputFile = createOutputFile(); File outputFile = createOutputFile();
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
@ -77,8 +77,8 @@ public class X4OWriterAttributeTest extends TestCase {
String text = new Scanner( outputFile ).useDelimiter("\\A").next(); String text = new Scanner( outputFile ).useDelimiter("\\A").next();
outputFile.delete(); outputFile.delete();
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
assertTrue(text.contains("custom-ordered-child"+ Assertions.assertTrue(text.contains("custom-ordered-child"+
" cacName=\"NAME_9\" cabName=\"NAME_8\" caaName=\"NAME_7\""+ " cacName=\"NAME_9\" cabName=\"NAME_8\" caaName=\"NAME_7\""+
" abcName=\"NAME_6\" abbName=\"NAME_5\" abaName=\"NAME_4\""+ " abcName=\"NAME_6\" abbName=\"NAME_5\" abaName=\"NAME_4\""+
" aaaName=\"NAME_1\" aabName=\"NAME_2\" aacName=\"NAME_3\"")); " aaaName=\"NAME_1\" aabName=\"NAME_2\" aacName=\"NAME_3\""));

View file

@ -27,23 +27,22 @@ import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.X4ODriver; import org.x4o.xml.X4ODriver;
import org.x4o.xml.element.Element; import org.x4o.xml.element.Element;
import org.x4o.xml.io.X4OReader;
import org.x4o.xml.lang.X4OLanguageSession; import org.x4o.xml.lang.X4OLanguageSession;
import org.x4o.xml.test.TestDriver; import org.x4o.xml.test.TestDriver;
import org.x4o.xml.test.models.TestObjectRoot; import org.x4o.xml.test.models.TestObjectRoot;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
import junit.framework.TestCase;
/** /**
* X4OWriterSessionTest. * X4OWriterSessionTest.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Apr 28, 2013 * @version 1.0 Apr 28, 2013
*/ */
public class X4OWriterSessionTest extends TestCase { public class X4OWriterSessionTest {
private File createOutputFile() throws IOException { private File createOutputFile() throws IOException {
File outputFile = File.createTempFile("test-writer-context", ".xml"); File outputFile = File.createTempFile("test-writer-context", ".xml");
@ -69,6 +68,7 @@ public class X4OWriterSessionTest extends TestCase {
return context; return context;
} }
@Test
public void testWriteFile() throws Exception { public void testWriteFile() throws Exception {
File outputFile = createOutputFile(); File outputFile = createOutputFile();
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
@ -78,12 +78,13 @@ public class X4OWriterSessionTest extends TestCase {
String text = X4OWriterTest.readFile( outputFile ); String text = X4OWriterTest.readFile( outputFile );
outputFile.delete(); outputFile.delete();
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
assertTrue(text.contains("http://test.x4o.org/xml/ns/test-root")); Assertions.assertTrue(text.contains("http://test.junit.x4o.org/xml/ns/junit-test-root"));
// assertTrue(text.contains("<test-lang:parent name=\"test-bean.xml\"/>")); Assertions.assertTrue(text.contains("<junit-test-lang:parent name=\"test-bean.xml\"/>"));
assertTrue(text.contains("<test-lang:testBean")); Assertions.assertTrue(text.contains("<junit-test-lang:configBean"), text);
} }
@Test
public void testWriteFileNull() throws Exception { public void testWriteFileNull() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OWriterSession<TestObjectRoot> writer = driver.createWriterSession(); X4OWriterSession<TestObjectRoot> writer = driver.createWriterSession();
@ -94,12 +95,13 @@ public class X4OWriterSessionTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("file")); Assertions.assertTrue(e.getMessage().contains("file"), "Wrong exception message");
} }
@Test
public void testWriteFileName() throws Exception { public void testWriteFileName() throws Exception {
File outputFile = createOutputFile(); File outputFile = createOutputFile();
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
@ -109,12 +111,13 @@ public class X4OWriterSessionTest extends TestCase {
String text = X4OWriterTest.readFile( outputFile ); String text = X4OWriterTest.readFile( outputFile );
outputFile.delete(); outputFile.delete();
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
assertTrue(text.contains("http://test.x4o.org/xml/ns/test-root")); Assertions.assertTrue(text.contains("http://test.junit.x4o.org/xml/ns/junit-test-root"));
// assertTrue(text.contains("<test-lang:parent name=\"test-bean.xml\"/>")); // TODO: fix writer Assertions.assertTrue(text.contains("<junit-test-lang:parent name=\"test-bean.xml\"/>"));
assertTrue(text.contains("<test-lang:testBean")); Assertions.assertTrue(text.contains("<junit-test-lang:configBean"));
} }
@Test
public void testWriteFileNameNull() throws Exception { public void testWriteFileNameNull() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OWriterSession<TestObjectRoot> writer = driver.createWriterSession(); X4OWriterSession<TestObjectRoot> writer = driver.createWriterSession();
@ -125,12 +128,13 @@ public class X4OWriterSessionTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull("No exception",e); Assertions.assertNotNull(e, "No exception");
assertEquals("Wrong exception class",NullPointerException.class, e.getClass()); Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
assertTrue("Wrong exception message",e.getMessage().contains("null")); Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
assertTrue("Wrong exception message",e.getMessage().contains("fileName")); Assertions.assertTrue(e.getMessage().contains("fileName"), "Wrong exception message");
} }
@Test
public void testWriteStream() throws Exception { public void testWriteStream() throws Exception {
File outputFile = createOutputFile(); File outputFile = createOutputFile();
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
@ -145,9 +149,9 @@ public class X4OWriterSessionTest extends TestCase {
String text = X4OWriterTest.readFile( outputFile ); String text = X4OWriterTest.readFile( outputFile );
outputFile.delete(); outputFile.delete();
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
assertTrue(text.contains("http://test.x4o.org/xml/ns/test-root")); Assertions.assertTrue(text.contains("http://test.junit.x4o.org/xml/ns/junit-test-root"));
// assertTrue(text.contains("<test-lang:parent name=\"test-bean.xml\"/>")); Assertions.assertTrue(text.contains("<junit-test-lang:parent name=\"test-bean.xml\"/>"));
assertTrue(text.contains("<test-lang:testBean")); Assertions.assertTrue(text.contains("<junit-test-lang:configBean"));
} }
} }

View file

@ -32,23 +32,22 @@ import java.io.InputStreamReader;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.X4ODriver; import org.x4o.xml.X4ODriver;
import org.x4o.xml.io.X4OReader;
import org.x4o.xml.test.TestDriver; import org.x4o.xml.test.TestDriver;
import org.x4o.xml.test.models.TestObjectRoot; import org.x4o.xml.test.models.TestObjectRoot;
import org.x4o.xml.test.swixml.Accelerator3; import org.x4o.xml.test.swixml.Accelerator3;
import org.x4o.xml.test.swixml.SwiXmlDriver; import org.x4o.xml.test.swixml.SwiXmlDriver;
import org.x4o.xml.test.swixml.SwingEngine; import org.x4o.xml.test.swixml.SwingEngine;
import junit.framework.TestCase;
/** /**
* X4OWriterTest test xml writer output. * X4OWriterTest test xml writer output.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Apr 28, 2013 * @version 1.0 Apr 28, 2013
*/ */
public class X4OWriterTest extends TestCase { public class X4OWriterTest {
private File createOutputFile() throws IOException { private File createOutputFile() throws IOException {
File outputFile = File.createTempFile("test-writer", ".xml"); File outputFile = File.createTempFile("test-writer", ".xml");
@ -74,6 +73,7 @@ public class X4OWriterTest extends TestCase {
} }
} }
@Test
public void testWriterSwiXmlOutput() throws Exception { public void testWriterSwiXmlOutput() throws Exception {
Accelerator3 ac3 = new Accelerator3(false); Accelerator3 ac3 = new Accelerator3(false);
SwingEngine engine = new SwingEngine(ac3); SwingEngine engine = new SwingEngine(ac3);
@ -90,7 +90,7 @@ public class X4OWriterTest extends TestCase {
Component root = reader.readResource("tests/swixml/swixml-accelerator-3.0.xml"); Component root = reader.readResource("tests/swixml/swixml-accelerator-3.0.xml");
writer.writeFile(root, outputFile); writer.writeFile(root, outputFile);
assertTrue("Debug file does not exists.",outputFile.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());
@ -98,6 +98,7 @@ public class X4OWriterTest extends TestCase {
outputFile.delete(); outputFile.delete();
} }
@Test
public void testWriteFile() throws Exception { public void testWriteFile() throws Exception {
File outputFile = createOutputFile(); File outputFile = createOutputFile();
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
@ -109,12 +110,13 @@ public class X4OWriterTest extends TestCase {
String text = readFile( outputFile ); String text = readFile( outputFile );
outputFile.delete(); outputFile.delete();
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
assertTrue(text.contains("http://test.x4o.org/xml/ns/test-root")); Assertions.assertTrue(text.contains("http://test.junit.x4o.org/xml/ns/junit-test-root"));
// assertTrue(text.contains("<test-lang:parent name=\"test-bean.xml\"/>")); Assertions.assertTrue(text.contains("<junit-test-lang:parent name=\"test-bean.xml\"/>"));
assertTrue(text.contains("<test-lang:testBean")); Assertions.assertTrue(text.contains("<junit-test-lang:configBean"));
} }
@Test
public void testWriteFileName() throws Exception { public void testWriteFileName() throws Exception {
File outputFile = createOutputFile(); File outputFile = createOutputFile();
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
@ -126,12 +128,13 @@ public class X4OWriterTest extends TestCase {
String text = readFile( outputFile ); String text = readFile( outputFile );
outputFile.delete(); outputFile.delete();
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
assertTrue(text.contains("http://test.x4o.org/xml/ns/test-root")); Assertions.assertTrue(text.contains("http://test.junit.x4o.org/xml/ns/junit-test-root"));
// assertTrue(text.contains("<test-lang:parent name=\"test-bean.xml\"/>")); Assertions.assertTrue(text.contains("<junit-test-lang:parent name=\"test-bean.xml\"/>"));
assertTrue(text.contains("<test-lang:testBean")); Assertions.assertTrue(text.contains("<junit-test-lang:configBean"));
} }
@Test
public void testWriteStream() throws Exception { public void testWriteStream() throws Exception {
File outputFile = createOutputFile(); File outputFile = createOutputFile();
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
@ -150,9 +153,9 @@ public class X4OWriterTest extends TestCase {
String text = readFile( outputFile ); String text = readFile( outputFile );
outputFile.delete(); outputFile.delete();
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
assertTrue(text.contains("http://test.x4o.org/xml/ns/test-root")); Assertions.assertTrue(text.contains("http://test.junit.x4o.org/xml/ns/junit-test-root"));
// assertTrue(text.contains("<test-lang:parent name=\"test-bean.xml\"/>")); Assertions.assertTrue(text.contains("<junit-test-lang:parent name=\"test-bean.xml\"/>"));
assertTrue(text.contains("<test-lang:testBean")); Assertions.assertTrue(text.contains("<junit-test-lang:configBean"));
} }
} }

View file

@ -22,23 +22,32 @@
*/ */
package org.x4o.xml.io.sax; package org.x4o.xml.io.sax;
import java.io.ByteArrayInputStream;
import java.io.StringWriter; import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.io.sax.ext.ContentWriterXml; import org.x4o.xml.io.sax.ext.ContentWriterXml;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.AttributesImpl; import org.xml.sax.helpers.AttributesImpl;
import junit.framework.TestCase;
/** /**
* ContentWriterXmlAttributeTest test xml attribute printing. * * ContentWriterXmlAttributeTest test xml attribute printing.
*
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 S 17, 2012 * @version 1.0 S 17, 2012
*/ */
public class ContentWriterXmlAttributeTest extends TestCase { public class ContentWriterXmlAttributeTest {
@Test
public void testAttributeNormal() throws Exception { public void testAttributeNormal() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -50,11 +59,12 @@ public class ContentWriterXmlAttributeTest extends TestCase {
writer.endDocument(); writer.endDocument();
String output = outputWriter.toString(); String output = outputWriter.toString();
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue(output.length()>0); Assertions.assertTrue(output.length()>0);
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<test attr=\"foobar\"/>")); Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<test attr=\"foobar\"/>"), output);
} }
@Test
public void testAttributeEscape() throws Exception { public void testAttributeEscape() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -66,9 +76,97 @@ public class ContentWriterXmlAttributeTest extends TestCase {
writer.endDocument(); writer.endDocument();
String output = outputWriter.toString(); String output = outputWriter.toString();
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue(output.length()>0); Assertions.assertTrue(output.length()>0);
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<test attr=\"&lt;test/&gt; &amp; &apos;foobar&apos; is &quote;quoted&quote;!\"/>")); Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<test attr=\"&lt;test/&gt; &amp; &apos;foobar&apos; is &quote;quoted&quote;!\"/>"), output);
}
@Test
public void testAttributeWhiteSpace() throws Exception {
StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter);
writer.startDocument();
Assertions.assertThrows(SAXException.class, () -> {
AttributesImpl atts = new AttributesImpl();
atts.addAttribute ("", "", "", "", "junit");
writer.startElementEnd("", "test", "", atts);
});
Assertions.assertThrows(SAXException.class, () -> {
AttributesImpl atts = new AttributesImpl();
atts.addAttribute ("", " ", "", "", "junit");
writer.startElementEnd("", "test", "", atts);
});
Assertions.assertThrows(SAXException.class, () -> {
AttributesImpl atts = new AttributesImpl();
atts.addAttribute ("", "foo bar", "", "", "junit");
writer.startElementEnd("", "test", "", atts);
});
Assertions.assertThrows(SAXException.class, () -> {
AttributesImpl atts = new AttributesImpl();
atts.addAttribute ("", "foobar", "", "", "junit");
writer.startElementEnd("", "test junit", "", atts);
});
AttributesImpl atts = new AttributesImpl();
atts.addAttribute ("", "abc", "", "", " junit ");
writer.startElementEnd("", "root", "", atts);
writer.endDocument();
String output = outputWriter.toString();
Assertions.assertNotNull(output);
Assertions.assertTrue(output.length()>0);
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<root abc=\" junit \"/>"), output);
}
@Test
public void testAttributeChinees() throws Exception {
StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter);
writer.startDocument();
AttributesImpl atts = new AttributesImpl();
atts.addAttribute ("", "仙上主天", "", "", "仙上主天");
writer.startElementEnd("", "chinees", "", atts);
writer.endDocument();
String output = outputWriter.toString();
Assertions.assertNotNull(output);
Assertions.assertTrue(output.length()>0);
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<chinees 仙上主天=\"仙上主天\"/>"), output);
SAXParserFactory saxFactory = SAXParserFactory.newInstance();
SAXParser saxParser = saxFactory.newSAXParser();
XMLReader saxReader = saxParser.getXMLReader();
saxReader.parse(new InputSource(new ByteArrayInputStream(output.getBytes(StandardCharsets.UTF_8))));
Assertions.assertNotNull(saxReader);
}
@Test
public void testAttributeBrahmi() throws Exception {
StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter);
// Legal by spec, but not in JVM SAX Reader
writer.startDocument();
AttributesImpl atts = new AttributesImpl();
atts.addAttribute ("", "𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕", "", "", "𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕");
atts.addAttribute ("", "ᒡᒢᑊᒻᒻᓫᔿ", "", "", "ᒡᒢᑊᒻᒻᓫᔿ");
writer.startElementEnd("", "test", "", atts);
writer.endDocument();
String output = outputWriter.toString();
Assertions.assertNotNull(output);
Assertions.assertTrue(output.length()>0);
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<test 𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕=\"𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕\" ᒡᒢᑊᒻᒻᓫᔿ=\"ᒡᒢᑊᒻᒻᓫᔿ\"/>"), output);
// TODO: fix SAX impl
Assertions.assertThrows(SAXException.class, () -> {
SAXParserFactory saxFactory = SAXParserFactory.newInstance();
SAXParser saxParser = saxFactory.newSAXParser();
XMLReader saxReader = saxParser.getXMLReader();
saxReader.parse(new InputSource(new ByteArrayInputStream(output.getBytes(StandardCharsets.UTF_8))));
});
} }
private String createLongAttribute(Map<String,Object> para) throws SAXException { private String createLongAttribute(Map<String,Object> para) throws SAXException {
@ -96,38 +194,42 @@ public class ContentWriterXmlAttributeTest extends TestCase {
return output; return output;
} }
@Test
public void testAttributeLongNormal() throws Exception { public void testAttributeLongNormal() throws Exception {
Map<String,Object> para = new HashMap<String,Object>(); Map<String,Object> para = new HashMap<String,Object>();
String output = createLongAttribute(para); String output = createLongAttribute(para);
int newlines = output.split("\n").length; int newlines = output.split("\n").length;
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue("outputs: "+newlines,newlines==4); Assertions.assertTrue(newlines==4, "outputs: "+newlines);
} }
@Test
public void testAttributeLongPerLine() throws Exception { public void testAttributeLongPerLine() throws Exception {
Map<String,Object> para = new HashMap<String,Object>(); Map<String,Object> para = new HashMap<String,Object>();
para.put(ContentWriterXml.OUTPUT_LINE_PER_ATTRIBUTE, true); para.put(ContentWriterXml.OUTPUT_LINE_PER_ATTRIBUTE, true);
String output = createLongAttribute(para); String output = createLongAttribute(para);
int newlines = output.split("\n").length; int newlines = output.split("\n").length;
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue("outputs: "+newlines,newlines==20); Assertions.assertTrue(newlines==20, "outputs: "+newlines);
} }
@Test
public void testAttributeLongSplit80() throws Exception { public void testAttributeLongSplit80() throws Exception {
Map<String,Object> para = new HashMap<String,Object>(); Map<String,Object> para = new HashMap<String,Object>();
para.put(ContentWriterXml.OUTPUT_LINE_BREAK_WIDTH, 80); para.put(ContentWriterXml.OUTPUT_LINE_BREAK_WIDTH, 80);
String output = createLongAttribute(para); String output = createLongAttribute(para);
int newlines = output.split("\n").length; int newlines = output.split("\n").length;
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue("outputs: "+newlines,newlines==16); Assertions.assertTrue(newlines==16, "outputs: "+newlines);
} }
@Test
public void testAttributeLongSplit180() throws Exception { public void testAttributeLongSplit180() throws Exception {
Map<String,Object> para = new HashMap<String,Object>(); Map<String,Object> para = new HashMap<String,Object>();
para.put(ContentWriterXml.OUTPUT_LINE_BREAK_WIDTH, 180); para.put(ContentWriterXml.OUTPUT_LINE_BREAK_WIDTH, 180);
String output = createLongAttribute(para); String output = createLongAttribute(para);
int newlines = output.split("\n").length; int newlines = output.split("\n").length;
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue("outputs: "+newlines,newlines==11); Assertions.assertTrue(newlines==11, "outputs: "+newlines);
} }
} }

View file

@ -24,18 +24,19 @@ package org.x4o.xml.io.sax;
import java.io.StringWriter; import java.io.StringWriter;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.io.sax.ext.ContentWriterXml; import org.x4o.xml.io.sax.ext.ContentWriterXml;
import junit.framework.TestCase;
/** /**
* ContentWriterXmlCDataTest tests cdata xml escaping. * ContentWriterXmlCDataTest tests cdata xml escaping.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Sep 17, 2013 * @version 1.0 Sep 17, 2013
*/ */
public class ContentWriterXmlCDataTest extends TestCase { public class ContentWriterXmlCDataTest {
@Test
public void testCDATANone() throws Exception { public void testCDATANone() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -45,11 +46,12 @@ public class ContentWriterXmlCDataTest extends TestCase {
writer.endDocument(); writer.endDocument();
String output = outputWriter.toString(); String output = outputWriter.toString();
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue(output.length()>0); Assertions.assertTrue(output.length()>0);
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>foobar")); Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>foobar"), output);
} }
@Test
public void testCDATANoneTagEscape() throws Exception { public void testCDATANoneTagEscape() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -59,11 +61,12 @@ public class ContentWriterXmlCDataTest extends TestCase {
writer.endDocument(); writer.endDocument();
String output = outputWriter.toString(); String output = outputWriter.toString();
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue(output.length()>0); Assertions.assertTrue(output.length()>0);
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>foobar&lt;test/&gt;")); Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>foobar&lt;test/&gt;"), output);
} }
@Test
public void testCDATANormal() throws Exception { public void testCDATANormal() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -75,11 +78,12 @@ public class ContentWriterXmlCDataTest extends TestCase {
writer.endDocument(); writer.endDocument();
String output = outputWriter.toString(); String output = outputWriter.toString();
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue(output.length()>0); Assertions.assertTrue(output.length()>0);
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[foobar]]>")); Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[foobar]]>"), output);
} }
@Test
public void testCDATAEscapeTag() throws Exception { public void testCDATAEscapeTag() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -91,11 +95,12 @@ public class ContentWriterXmlCDataTest extends TestCase {
writer.endDocument(); writer.endDocument();
String output = outputWriter.toString(); String output = outputWriter.toString();
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue(output.length()>0); Assertions.assertTrue(output.length()>0);
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[foobar<test/>]]>")); Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[foobar<test/>]]>"), output);
} }
@Test
public void testCDATAEscapeStart() throws Exception { public void testCDATAEscapeStart() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -107,11 +112,12 @@ public class ContentWriterXmlCDataTest extends TestCase {
writer.endDocument(); writer.endDocument();
String output = outputWriter.toString(); String output = outputWriter.toString();
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue(output.length()>0); Assertions.assertTrue(output.length()>0);
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[foobar]]>")); Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[foobar]]>"), output);
} }
@Test
public void testCDATAEscapeEnd() throws Exception { public void testCDATAEscapeEnd() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -123,11 +129,29 @@ public class ContentWriterXmlCDataTest extends TestCase {
writer.endDocument(); writer.endDocument();
String output = outputWriter.toString(); String output = outputWriter.toString();
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue(output.length()>0); Assertions.assertTrue(output.length()>0);
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[foobar]]>")); Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[foobar]]>"), output);
} }
@Test
public void testCDATAEscapeEndEskimo() throws Exception {
StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter);
writer.startDocument();
writer.startCDATA();
writer.characters("ᒡᒢᑊᒻ]]>ᒻᓫᔿ");
writer.endCDATA();
writer.endDocument();
String output = outputWriter.toString();
Assertions.assertNotNull(output);
Assertions.assertTrue(output.length()>0);
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[ᒡᒢᑊᒻᒻᓫᔿ]]>"), output);
}
@Test
public void testCDATAEscapeInvalid() throws Exception { public void testCDATAEscapeInvalid() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -139,11 +163,12 @@ public class ContentWriterXmlCDataTest extends TestCase {
writer.endDocument(); writer.endDocument();
String output = outputWriter.toString(); String output = outputWriter.toString();
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue(output.length()>0); Assertions.assertTrue(output.length()>0);
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[tokens like \'\' are <invalid>]]>")); Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[tokens like \'\' are <invalid>]]>"), output);
} }
@Test
public void testCDATAEscapeValid() throws Exception { public void testCDATAEscapeValid() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -155,8 +180,8 @@ public class ContentWriterXmlCDataTest extends TestCase {
writer.endDocument(); writer.endDocument();
String output = outputWriter.toString(); String output = outputWriter.toString();
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue(output.length()>0); Assertions.assertTrue(output.length()>0);
assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[tokens like \']]>\' are <valid>]]>")); Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[tokens like \']]>\' are <valid>]]>"));
} }
} }

View file

@ -24,21 +24,21 @@ package org.x4o.xml.io.sax;
import java.io.StringWriter; import java.io.StringWriter;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.io.sax.ext.ContentWriterXml; import org.x4o.xml.io.sax.ext.ContentWriterXml;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl; import org.xml.sax.helpers.AttributesImpl;
import junit.framework.TestCase;
/** /**
* ContentWriterXml test xml escaping. * ContentWriterXml test xml escaping.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Aug 26, 2012 * @version 1.0 Aug 26, 2012
*/ */
public class ContentWriterXmlTest extends TestCase { public class ContentWriterXmlTest {
@Test
public void testCharactersNormal() throws Exception { public void testCharactersNormal() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -48,11 +48,12 @@ public class ContentWriterXmlTest extends TestCase {
writer.endDocument(); writer.endDocument();
String output = outputWriter.toString(); String output = outputWriter.toString();
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue(output.length()>0); Assertions.assertTrue(output.length()>0);
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>test is foobar!")); Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>test is foobar!"), output);
} }
@Test
public void testCharactersEscape() throws Exception { public void testCharactersEscape() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -62,11 +63,12 @@ public class ContentWriterXmlTest extends TestCase {
writer.endDocument(); writer.endDocument();
String output = outputWriter.toString(); String output = outputWriter.toString();
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue(output.length()>0); Assertions.assertTrue(output.length()>0);
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>&lt;test/&gt; &amp; &apos;foobar&apos; is &quote;quoted&quote;!")); Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>&lt;test/&gt; &amp; &apos;foobar&apos; is &quote;quoted&quote;!"), output);
} }
@Test
public void testCommentNormal() throws Exception { public void testCommentNormal() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -76,11 +78,12 @@ public class ContentWriterXmlTest extends TestCase {
writer.endDocument(); writer.endDocument();
String output = outputWriter.toString(); String output = outputWriter.toString();
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue(output.length()>0); Assertions.assertTrue(output.length()>0);
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- foobar -->")); Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- foobar -->"), output);
} }
@Test
public void testCommentEscape() throws Exception { public void testCommentEscape() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -96,11 +99,12 @@ public class ContentWriterXmlTest extends TestCase {
// 4) "<!-- foobar -->" - printed // 4) "<!-- foobar -->" - printed
String output = outputWriter.toString(); String output = outputWriter.toString();
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue(output.length()>0); Assertions.assertTrue(output.length()>0);
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- foobar -->")); Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- foobar -->"), output);
} }
@Test
public void testXmlInvalid() throws Exception { public void testXmlInvalid() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -116,12 +120,13 @@ public class ContentWriterXmlTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull(e); Assertions.assertNotNull(e);
assertEquals(SAXException.class, e.getClass()); Assertions.assertEquals(SAXException.class, e.getClass());
assertTrue(e.getMessage().contains("tag")); Assertions.assertTrue(e.getMessage().contains("tag"));
assertTrue(e.getMessage().contains("foobar")); Assertions.assertTrue(e.getMessage().contains("foobar"));
} }
@Test
public void testXmlInvalidEnd() throws Exception { public void testXmlInvalidEnd() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -136,13 +141,14 @@ public class ContentWriterXmlTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull(e); Assertions.assertNotNull(e);
assertEquals(SAXException.class, e.getClass()); Assertions.assertEquals(SAXException.class, e.getClass());
assertTrue(e.getMessage().contains("Invalid")); Assertions.assertTrue(e.getMessage().contains("Invalid"));
assertTrue(e.getMessage().contains("2")); Assertions.assertTrue(e.getMessage().contains("2"));
assertTrue(e.getMessage().contains("open")); Assertions.assertTrue(e.getMessage().contains("open"));
} }
@Test
public void testProcessingInstruction() throws Exception { public void testProcessingInstruction() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -159,12 +165,13 @@ public class ContentWriterXmlTest extends TestCase {
e = catchE; e = catchE;
} }
String output = outputWriter.toString(); String output = outputWriter.toString();
assertNull(e); Assertions.assertNull(e);
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue(output.length()>0); Assertions.assertTrue(output.length()>0);
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?target data?>\n<test/>")); Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?target data?>\n<test/>"), output);
} }
@Test
public void testProcessingInstructionInline() throws Exception { public void testProcessingInstructionInline() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -182,12 +189,13 @@ public class ContentWriterXmlTest extends TestCase {
e = catchE; e = catchE;
} }
String output = outputWriter.toString(); String output = outputWriter.toString();
assertNull(e); Assertions.assertNull(e);
assertNotNull(output); Assertions.assertNotNull(output);
assertTrue(output.length()>0); Assertions.assertTrue(output.length()>0);
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?target data?>\n<test>\n\t<?target-doc data-doc?>\n</test>\n")); Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?target data?>\n<test>\n\t<?target-doc data-doc?>\n</test>\n"), output);
} }
@Test
public void testProcessingInstructionTargetXmlPrefix() throws Exception { public void testProcessingInstructionTargetXmlPrefix() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -198,12 +206,13 @@ public class ContentWriterXmlTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull(e); Assertions.assertNotNull(e);
assertEquals(SAXException.class, e.getClass()); Assertions.assertEquals(SAXException.class, e.getClass());
assertTrue(e.getMessage().contains("instruction")); Assertions.assertTrue(e.getMessage().contains("instruction"));
assertTrue(e.getMessage().contains("start with xml")); Assertions.assertTrue(e.getMessage().contains("start with xml"));
} }
@Test
public void testProcessingInstructionTargetNoneNameChar() throws Exception { public void testProcessingInstructionTargetNoneNameChar() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -214,13 +223,14 @@ public class ContentWriterXmlTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull(e); Assertions.assertNotNull(e);
assertEquals(SAXException.class, e.getClass()); Assertions.assertEquals(SAXException.class, e.getClass());
assertTrue(e.getMessage().contains("instruction")); Assertions.assertTrue(e.getMessage().contains("instruction"));
assertTrue(e.getMessage().contains("invalid name")); Assertions.assertTrue(e.getMessage().contains("invalid name"));
assertTrue(e.getMessage().contains("4Prefix")); Assertions.assertTrue(e.getMessage().contains("4Prefix"));
} }
@Test
public void testProcessingInstructionDataNoneChar() throws Exception { public void testProcessingInstructionDataNoneChar() throws Exception {
StringWriter outputWriter = new StringWriter(); StringWriter outputWriter = new StringWriter();
ContentWriterXml writer = new ContentWriterXml(outputWriter); ContentWriterXml writer = new ContentWriterXml(outputWriter);
@ -231,10 +241,10 @@ public class ContentWriterXmlTest extends TestCase {
} catch (Exception catchE) { } catch (Exception catchE) {
e = catchE; e = catchE;
} }
assertNotNull(e); Assertions.assertNotNull(e);
assertEquals(SAXException.class, e.getClass()); Assertions.assertEquals(SAXException.class, e.getClass());
assertTrue(e.getMessage().contains("instruction")); Assertions.assertTrue(e.getMessage().contains("instruction"));
assertTrue(e.getMessage().contains("invalid char")); Assertions.assertTrue(e.getMessage().contains("invalid char"));
assertTrue(e.getMessage().contains("isInvalidChar=55296")); Assertions.assertTrue(e.getMessage().contains("isInvalidChar=55296"));
} }
} }

View file

@ -25,33 +25,34 @@ package org.x4o.xml.lang;
import java.io.InputStream; import java.io.InputStream;
import java.util.List; import java.util.List;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.x4o.xml.X4ODriver; import org.x4o.xml.X4ODriver;
import org.x4o.xml.lang.X4OLanguage;
import org.x4o.xml.lang.X4OLanguageLocal;
import org.x4o.xml.lang.DefaultX4OLanguageLoader.VersionedResources; import org.x4o.xml.lang.DefaultX4OLanguageLoader.VersionedResources;
import org.x4o.xml.test.TestDriver; import org.x4o.xml.test.TestDriver;
import org.x4o.xml.test.models.TestObjectRoot; import org.x4o.xml.test.models.TestObjectRoot;
import junit.framework.TestCase;
/** /**
* Tests a simple x4o language loader * Tests a simple x4o language loader
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Jan 20, 2012 * @version 1.0 Jan 20, 2012
*/ */
public class DefaultX4OLanguageLoaderTest extends TestCase { public class DefaultX4OLanguageLoaderTest {
X4ODriver<TestObjectRoot> driver; static X4ODriver<TestObjectRoot> driver;
X4OLanguage language; static X4OLanguage language;
DefaultX4OLanguageLoader loader; static DefaultX4OLanguageLoader loader;
public void setUp() throws Exception { @BeforeAll
public static void setUp() throws Exception {
driver = TestDriver.getInstance(); driver = TestDriver.getInstance();
language = driver.createLanguage(); language = driver.createLanguage();
loader = (DefaultX4OLanguageLoader)language.getLanguageConfiguration().getDefaultLanguageLoader().newInstance(); loader = (DefaultX4OLanguageLoader)language.getLanguageConfiguration().getDefaultLanguageLoader().newInstance();
} }
@Test
public void testLoadingDuplicate() throws Exception { public void testLoadingDuplicate() throws Exception {
Exception e = null; Exception e = null;
try { try {
@ -59,46 +60,50 @@ public class DefaultX4OLanguageLoaderTest extends TestCase {
} catch (Exception ee) { } catch (Exception ee) {
e = ee; e = ee;
} }
assertNotNull("no duplicate module exception",e); Assertions.assertNotNull(e, "no duplicate module exception");
assertTrue("wrong module id.",e.getMessage().contains("test")); Assertions.assertTrue(e.getMessage().contains("test"), "wrong module id.");
} }
@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");
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");
assertNotNull(result); Assertions.assertNotNull(result);
assertFalse(result.isEmpty()); Assertions.assertFalse(result.isEmpty());
assertTrue("Simple test returned non-one result: "+result.size(),result.size()==1); Assertions.assertTrue(result.size()==1, "Simple test returned non-one result: "+result.size());
} }
@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");
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");
assertNotNull(result); Assertions.assertNotNull(result);
assertFalse(result.isEmpty()); Assertions.assertFalse(result.isEmpty());
VersionedResources vr = result.get(0); VersionedResources vr = result.get(0);
assertTrue(vr.eldResources.size()>1); Assertions.assertTrue(vr.eldResources.size()>1);
assertTrue(vr.moduleLoaders.size()>1); Assertions.assertTrue(vr.moduleLoaders.size()>1);
assertTrue(vr.elbResources.size()>1); Assertions.assertTrue(vr.elbResources.size()>1);
assertTrue(vr.siblingLoaders.size()==1); Assertions.assertTrue(vr.siblingLoaders.size()==1);
} }
@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");
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");
assertNotNull(result); Assertions.assertNotNull(result);
assertFalse(result.isEmpty()); Assertions.assertFalse(result.isEmpty());
} }
@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");
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");
assertNotNull(result); Assertions.assertNotNull(result);
assertFalse(result.isEmpty()); Assertions.assertFalse(result.isEmpty());
Exception e=null; Exception e=null;
try { try {
@ -106,17 +111,18 @@ public class DefaultX4OLanguageLoaderTest extends TestCase {
} catch (Exception ee) { } catch (Exception ee) {
e=ee; e=ee;
} }
assertNotNull(e); Assertions.assertNotNull(e);
assertTrue("No 'Duplicate' found in message: "+e.getMessage(),e.getMessage().contains("Duplicate")); Assertions.assertTrue(e.getMessage().contains("Duplicate"), "No 'Duplicate' found in message: "+e.getMessage());
assertTrue("No 'module-loader' found in message: "+e.getMessage(),e.getMessage().contains("module-loader")); Assertions.assertTrue(e.getMessage().contains("module-loader"), "No 'module-loader' found in message: "+e.getMessage());
} }
@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");
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");
assertNotNull(result); Assertions.assertNotNull(result);
assertFalse(result.isEmpty()); Assertions.assertFalse(result.isEmpty());
Exception e=null; Exception e=null;
try { try {
@ -124,8 +130,8 @@ public class DefaultX4OLanguageLoaderTest extends TestCase {
} catch (Exception ee) { } catch (Exception ee) {
e=ee; e=ee;
} }
assertNotNull(e); Assertions.assertNotNull(e);
assertTrue("No 'Duplicate' found in message: "+e.getMessage(),e.getMessage().contains("Duplicate")); Assertions.assertTrue(e.getMessage().contains("Duplicate"), "No 'Duplicate' found in message: "+e.getMessage());
assertTrue("No 'sibling-loader' found in message: "+e.getMessage(),e.getMessage().contains("sibling-loader")); Assertions.assertTrue(e.getMessage().contains("sibling-loader"), "No 'sibling-loader' found in message: "+e.getMessage());
} }
} }

View file

@ -22,9 +22,8 @@
*/ */
package org.x4o.xml.lang; package org.x4o.xml.lang;
import org.x4o.xml.lang.X4OLanguageClassLoader; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import junit.framework.TestCase;
/** /**
* X4OLanguageClassLoaderTest test classloader. * X4OLanguageClassLoaderTest test classloader.
@ -32,21 +31,23 @@ import junit.framework.TestCase;
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Aug 27, 2012 * @version 1.0 Aug 27, 2012
*/ */
public class X4OLanguageClassLoaderTest extends TestCase { public class X4OLanguageClassLoaderTest {
@Test
public void testLoadObject() throws Exception { public void testLoadObject() throws Exception {
Object o = X4OLanguageClassLoader.newInstance("java.lang.Object"); Object o = X4OLanguageClassLoader.newInstance("java.lang.Object");
assertNotNull(o); Assertions.assertNotNull(o);
assertEquals(Object.class, o.getClass()); Assertions.assertEquals(Object.class, o.getClass());
} }
@Test
public void tesNullThread() throws Exception { public void tesNullThread() throws Exception {
ClassLoader cl = Thread.currentThread().getContextClassLoader(); ClassLoader cl = Thread.currentThread().getContextClassLoader();
try { try {
Thread.currentThread().setContextClassLoader(null); Thread.currentThread().setContextClassLoader(null);
Object o = X4OLanguageClassLoader.newInstance("java.lang.Object"); Object o = X4OLanguageClassLoader.newInstance("java.lang.Object");
assertNotNull(o); Assertions.assertNotNull(o);
assertEquals(Object.class, o.getClass()); Assertions.assertEquals(Object.class, o.getClass());
} finally { } finally {
Thread.currentThread().setContextClassLoader(cl); Thread.currentThread().setContextClassLoader(cl);
} }

View file

@ -22,8 +22,8 @@
*/ */
package org.x4o.xml.lang; package org.x4o.xml.lang;
import org.junit.jupiter.api.Assertions;
import junit.framework.TestCase; import org.junit.jupiter.api.Test;
/** /**
* X4OLanguagePropertyTest test static enum code. * X4OLanguagePropertyTest test static enum code.
@ -31,10 +31,11 @@ import junit.framework.TestCase;
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Aug 27, 2012 * @version 1.0 Aug 27, 2012
*/ */
public class X4OLanguagePropertyTest extends TestCase { public class X4OLanguagePropertyTest {
@Test
public void testUriValue() throws Exception { public void testUriValue() throws Exception {
assertEquals(1,1); Assertions.assertEquals(1,1);
} }
/* /*

View file

@ -0,0 +1,71 @@
/*
* Copyright (c) 2004-2014, Willem Cazander
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* 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.
*/
package org.x4o.xml.o4o.octal;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
/**
* X4OLanguagePropertyTest test static enum code.
*
* @author Willem Cazander
* @version 1.0 Aug 27, 2012
*/
public class PrimordialOctalOrangeSexWordTest {
@Test
public void testOctalMSB() throws Exception {
PrimordialOctalOrangeSexWord word = new PrimordialOctalOrangeSexWord(PrimordialOctal.PART_1, PrimordialOctal.PART_1, PrimordialOctal.PART_1, PrimordialOctal.PART_2, PrimordialOctal.PART_8, PrimordialOctal.PART_8);
Assertions.assertEquals(127, word.baitOctalNumber());
}
@Test
public void testValueOfOne() throws Exception {
PrimordialOctalOrangeSexWord word = PrimordialOctalOrangeSexWord.valueOfOne();
Assertions.assertEquals(0, word.baitOctalNumber());
}
@Test
public void testValueOfSmurf() throws Exception {
PrimordialOctalOrangeSexWord word = PrimordialOctalOrangeSexWord.valueOfSmurf(0);
Assertions.assertEquals(0, word.baitOctalNumber());
word = PrimordialOctalOrangeSexWord.valueOfSmurf(127);
Assertions.assertEquals(127, word.baitOctalNumber());
word = PrimordialOctalOrangeSexWord.valueOfSmurf(32768);
Assertions.assertEquals(32768, word.baitOctalNumber());
}
@Test
public void testToString() throws Exception {
PrimordialOctalOrangeSexWord word = PrimordialOctalOrangeSexWord.valueOfSmurf(0);
Assertions.assertEquals("יֽ֔יֽ֔", word.toString());
word = PrimordialOctalOrangeSexWord.valueOfSmurf(262143); // max
Assertions.assertEquals("וַ֝וַ֝", word.toString());
//word = PrimordialOctalOrangeSexWord.valueOfSmurf(22270); // immortal
//Assertions.assertEquals("זַ֟װֻ֔", word.toString());
}
}

View file

@ -25,25 +25,23 @@ package org.x4o.xml.test;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import org.junit.jupiter.api.Test;
import org.x4o.xml.io.X4OReader; import org.x4o.xml.io.X4OReader;
import org.x4o.xml.test.models.TestObjectRoot; import org.x4o.xml.test.models.TestObjectRoot;
import junit.framework.TestCase;
/** /**
* Tests a simple x4o xml language. * Tests a simple x4o xml language.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Jul 24, 2006 * @version 1.0 Jul 24, 2006
*/ */
public class SwingTests extends TestCase { public class SwingTests {
public void setUp() throws Exception { public void setUp() throws Exception {
//X4OTesting.initLogging(); //X4OTesting.initLogging();
} }
@Test
public void testSwing() throws Exception { public void testSwing() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OReader<TestObjectRoot> reader = driver.createReader(); X4OReader<TestObjectRoot> reader = driver.createReader();

View file

@ -22,20 +22,18 @@
*/ */
package org.x4o.xml.test; package org.x4o.xml.test;
import org.junit.jupiter.api.Test;
import org.x4o.xml.X4ODriver; import org.x4o.xml.X4ODriver;
import org.x4o.xml.io.X4OReader; import org.x4o.xml.io.X4OReader;
import org.x4o.xml.test.models.TestObjectRoot; import org.x4o.xml.test.models.TestObjectRoot;
import junit.framework.TestCase;
/** /**
* Tests a simple x4o xml language. * Tests a simple x4o xml language.
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Jul 24, 2006 * @version 1.0 Jul 24, 2006
*/ */
public class TagHandlerTest extends TestCase { public class TagHandlerTest {
public void setUp() throws Exception { public void setUp() throws Exception {
//X4OTesting.initLogging(); //X4OTesting.initLogging();
@ -48,7 +46,8 @@ public class TagHandlerTest extends TestCase {
} }
printS(e.getCause()); printS(e.getCause());
} }
@Test
public void testTagHanders() throws Exception { public void testTagHanders() throws Exception {
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance(); X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
X4OReader<TestObjectRoot> reader = driver.createReader(); X4OReader<TestObjectRoot> reader = driver.createReader();

View file

@ -22,35 +22,34 @@
*/ */
package org.x4o.xml.test; package org.x4o.xml.test;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.io.X4OReader; import org.x4o.xml.io.X4OReader;
import org.x4o.xml.test.models.TestObjectChild; import org.x4o.xml.test.models.TestObjectChild;
import org.x4o.xml.test.models.TestObjectParent; import org.x4o.xml.test.models.TestObjectParent;
import org.x4o.xml.test.models.TestObjectRoot; import org.x4o.xml.test.models.TestObjectRoot;
import junit.framework.TestCase;
/** /**
* XIncludeTest * XIncludeTest
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Aug 31, 2012 * @version 1.0 Aug 31, 2012
*/ */
public class XIncludeTest extends TestCase { public class XIncludeTest {
@Test
public void testXInclude() throws Exception { public void testXInclude() throws Exception {
TestDriver driver = TestDriver.getInstance(); TestDriver driver = TestDriver.getInstance();
X4OReader<TestObjectRoot> reader = driver.createReader(); X4OReader<TestObjectRoot> reader = driver.createReader();
TestObjectRoot root = reader.readResource("tests/xinclude/include-base.xml"); TestObjectRoot root = reader.readResource("tests/xinclude/include-base.xml");
assertNotNull(root); Assertions.assertNotNull(root);
TestObjectRoot parentRoot = (TestObjectRoot)root; TestObjectRoot parentRoot = (TestObjectRoot)root;
if (parentRoot.getTestObjectParents().size()==0) { if (parentRoot.getTestObjectParents().size()==0) {
return; // FIXME: don't fail, as on jdk7 it 'sometimes' fails ... return; // FIXME: don't fail, as on jdk7 it 'sometimes' fails ...
} }
assertEquals(1,parentRoot.getTestObjectParents().size()); Assertions.assertEquals(1,parentRoot.getTestObjectParents().size());
TestObjectParent parent = parentRoot.getTestObjectParents().get(0); TestObjectParent parent = parentRoot.getTestObjectParents().get(0);
TestObjectChild child = parent.testObjectChilds.get(0); TestObjectChild child = parent.testObjectChilds.get(0);
assertEquals("include-child.xml",child.getName()); Assertions.assertEquals("include-child.xml",child.getName());
} }
} }

View file

@ -30,7 +30,7 @@ package org.x4o.xml.test.models;
*/ */
public class TestBean { public class TestBean {
// public ... todo not implemented // TODO: Add public field support, ... and remove public* methods below
public int publicIntegerTypeField = 0; public int publicIntegerTypeField = 0;
public Integer publicIntegerObjectField = new Integer(0); public Integer publicIntegerObjectField = new Integer(0);
@ -53,9 +53,11 @@ public class TestBean {
public char publicCharTypeField = ' '; public char publicCharTypeField = ' ';
public Character publicCharObjectField = new Character(' '); public Character publicCharObjectField = new Character(' ');
public String publicStringObjectField = " "; public String publicStringObjectField = "𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕";
//public Date publicDateObjectField = new Date(0); // TODO add date converters //public String publicStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ = " ᒡᒢᑊᒻᒻᓫᔿ";
public String publicStringObjectFieldUnicode仙上主天 = "仙上主天";
//public Date publicDateObjectField = new Date(0); // TODO add date converters
// private // private
@ -80,7 +82,9 @@ public class TestBean {
private char privateCharTypeField = ' '; private char privateCharTypeField = ' ';
private Character privateCharObjectField = new Character(' '); private Character privateCharObjectField = new Character(' ');
private String privateStringObjectField = " "; private String privateStringObjectField = "𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕";
//private String privateStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ = " ᒡᒢᑊᒻᒻᓫᔿ";
private String privateStringObjectFieldUnicode仙上主天 = "仙上主天";
//private Date privateDateObjectField = new Date(0); //private Date privateDateObjectField = new Date(0);
@ -266,6 +270,30 @@ public class TestBean {
public void setPublicStringObjectField(String publicStringObjectField) { public void setPublicStringObjectField(String publicStringObjectField) {
this.publicStringObjectField = publicStringObjectField; this.publicStringObjectField = publicStringObjectField;
} }
// /**
// * @return the publicStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ
// */
// public String getPublicStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ() {
// return publicStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ;
// }
// /**
// * @param publicStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ the publicStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ to set
// */
// public void setPublicStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ(String publicStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ) {
// this.publicStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ = publicStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ;
// }
/**
* @return the publicStringObjectFieldUnicode仙上主天
*/
public String getPublicStringObjectFieldUnicode仙上主天() {
return publicStringObjectFieldUnicode仙上主天;
}
/**
* @param publicStringObjectFieldUnicode仙上主天 the publicStringObjectFieldUnicode仙上主天 to set
*/
public void setPublicStringObjectFieldUnicode仙上主天(String publicStringObjectFieldUnicode仙上主天) {
this.publicStringObjectFieldUnicode仙上主天 = publicStringObjectFieldUnicode仙上主天;
}
/* /*
* @return the publicDateObjectField * @return the publicDateObjectField
@ -458,6 +486,30 @@ public class TestBean {
public void setPrivateStringObjectField(String privateStringObjectField) { public void setPrivateStringObjectField(String privateStringObjectField) {
this.privateStringObjectField = privateStringObjectField; this.privateStringObjectField = privateStringObjectField;
} }
// /**
// * @return the privateStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ
// */
// public String getPrivateStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ() {
// return privateStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ;
// }
// /**
// * @param privateStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ the privateStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ to set
// */
// public void setPrivateStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ(String privateStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ) {
// this.privateStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ = privateStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ;
// }
/**
* @return the privateStringObjectFieldUnicode仙上主天
*/
public String getPrivateStringObjectFieldUnicode仙上主天() {
return privateStringObjectFieldUnicode仙上主天;
}
/**
* @param privateStringObjectFieldUnicode仙上主天 the privateStringObjectFieldUnicode仙上主天 to set
*/
public void setPrivateStringObjectFieldUnicode仙上主天(String privateStringObjectFieldUnicode仙上主天) {
this.privateStringObjectFieldUnicode仙上主天 = privateStringObjectFieldUnicode仙上主天;
}
/* /*
* @return the privateDateObjectField * @return the privateDateObjectField

View file

@ -28,18 +28,19 @@ import javax.swing.JFrame;
import javax.swing.JMenu; import javax.swing.JMenu;
import javax.swing.JMenuItem; import javax.swing.JMenuItem;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.xml.io.X4OReader; import org.x4o.xml.io.X4OReader;
import junit.framework.TestCase;
/** /**
* Accelerator3Test test xml parsing * Accelerator3Test test xml parsing
* *
* @author Willem Cazander * @author Willem Cazander
* @version 1.0 Aug 31, 2012 * @version 1.0 Aug 31, 2012
*/ */
public class Accelerator3Test extends TestCase { public class Accelerator3Test {
@Test
public void testSwingMenuAbout() throws Exception { public void testSwingMenuAbout() throws Exception {
Accelerator3 ac3 = new Accelerator3(false); Accelerator3 ac3 = new Accelerator3(false);
SwingEngine engine = new SwingEngine(ac3); SwingEngine engine = new SwingEngine(ac3);
@ -47,13 +48,13 @@ public class Accelerator3Test extends TestCase {
X4OReader<Component> reader = driver.createReader(SwiXmlDriver.LANGUAGE_VERSION_3); X4OReader<Component> reader = driver.createReader(SwiXmlDriver.LANGUAGE_VERSION_3);
reader.addELBeanInstance(SwiXmlDriver.LANGUAGE_EL_SWING_ENGINE, engine); reader.addELBeanInstance(SwiXmlDriver.LANGUAGE_EL_SWING_ENGINE, engine);
Component root = reader.readResource(Accelerator3.DESCRIPTOR); Component root = reader.readResource(Accelerator3.DESCRIPTOR);
assertNotNull(root); Assertions.assertNotNull(root);
JFrame frame = (JFrame)root; JFrame frame = (JFrame)root;
assertTrue(frame.getJMenuBar().getMenuCount()>0); Assertions.assertTrue(frame.getJMenuBar().getMenuCount()>0);
JMenu helpMenu = frame.getJMenuBar().getMenu(1); JMenu helpMenu = frame.getJMenuBar().getMenu(1);
assertEquals("Help",helpMenu.getText()); Assertions.assertEquals("Help",helpMenu.getText());
assertTrue(helpMenu.getMenuComponentCount()>0); Assertions.assertTrue(helpMenu.getMenuComponentCount()>0);
JMenuItem about = (JMenuItem)helpMenu.getMenuComponent(0); JMenuItem about = (JMenuItem)helpMenu.getMenuComponent(0);
assertEquals("mi_about", about.getName()); Assertions.assertEquals("mi_about", about.getName());
} }
} }

View file

@ -40,7 +40,7 @@ public class SwiXmlDriver extends X4ODriver<Component> {
public static final String LANGUAGE_NAME = "swixml"; public static final String LANGUAGE_NAME = "swixml";
public static final String LANGUAGE_VERSION_2 = "2.0"; public static final String LANGUAGE_VERSION_2 = "2.0";
public static final String LANGUAGE_VERSION_2_NSURI = "http://swixml.x4o.org/xml/ns/swixml-lang"; public static final String LANGUAGE_VERSION_2_NSURI = "http://swixml.junit.x4o.org/xml/ns/junit-swixml-lang";
public static final String LANGUAGE_VERSION_3 = "3.0"; public static final String LANGUAGE_VERSION_3 = "3.0";
public static final String[] LANGUAGE_VERSIONS = new String[]{LANGUAGE_VERSION_2,LANGUAGE_VERSION_3}; public static final String[] LANGUAGE_VERSIONS = new String[]{LANGUAGE_VERSION_2,LANGUAGE_VERSION_3};
public static final String LANGUAGE_EL_SWING_ENGINE = "swingEngine"; public static final String LANGUAGE_EL_SWING_ENGINE = "swingEngine";
@ -51,7 +51,7 @@ public class SwiXmlDriver extends X4ODriver<Component> {
* @return Returns the SwingEngine for this elementLanguage. * @return Returns the SwingEngine for this elementLanguage.
*/ */
static public SwingEngine getSwingEngine(X4OLanguageSession elementLanguage) { static public SwingEngine getSwingEngine(X4OLanguageSession elementLanguage) {
ValueExpression ee = elementLanguage.getExpressionLanguageFactory().createValueExpression(elementLanguage.getExpressionLanguageContext(),"${"+SwiXmlDriver.LANGUAGE_EL_SWING_ENGINE+"}",Object.class); ValueExpression ee = elementLanguage.getExpressionLanguageFactory().createValueExpression(elementLanguage.getExpressionLanguageContext(),"${"+SwiXmlDriver.LANGUAGE_EL_SWING_ENGINE+"}",Object.class);
SwingEngine se = (SwingEngine)ee.getValue(elementLanguage.getExpressionLanguageContext()); SwingEngine se = (SwingEngine)ee.getValue(elementLanguage.getExpressionLanguageContext());
return se; return se;
} }

View file

@ -27,6 +27,7 @@ import java.lang.reflect.Field;
import javax.swing.Action; import javax.swing.Action;
import org.x4o.xml.io.DefaultX4OReader;
import org.x4o.xml.io.X4OReader; import org.x4o.xml.io.X4OReader;
/** /**
@ -71,6 +72,9 @@ public class SwingEngine {
public Component render(String resource,String languageVersion) { public Component render(String resource,String languageVersion) {
SwiXmlDriver driver = SwiXmlDriver.getInstance(); SwiXmlDriver driver = SwiXmlDriver.getInstance();
X4OReader<Component> reader = driver.createReader(languageVersion); X4OReader<Component> reader = driver.createReader(languageVersion);
if (SwiXmlDriver.LANGUAGE_VERSION_2.equals(languageVersion)) {
reader.setProperty(DefaultX4OReader.DOC_EMPTY_NAMESPACE_URI, SwiXmlDriver.LANGUAGE_VERSION_2_NSURI);
}
reader.addELBeanInstance(SwiXmlDriver.LANGUAGE_EL_SWING_ENGINE, this); reader.addELBeanInstance(SwiXmlDriver.LANGUAGE_EL_SWING_ENGINE, this);
try { try {
rootComponent = reader.readResource(resource); rootComponent = reader.readResource(resource);

View file

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

View file

@ -29,9 +29,9 @@
xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv" xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://eld.x4o.org/xml/ns/eld-root http://eld.x4o.org/xml/ns/eld-root-1.0.xsd" xsi:schemaLocation="http://eld.x4o.org/xml/ns/eld-root http://eld.x4o.org/xml/ns/eld-root-1.0.xsd"
providerHost="swixml.x4o.org" providerHost="swixml.junit.x4o.org"
providerName="Swixml3 Language" providerName="Junit Swixml-3 Language"
id="swixml3-module" id="junit-swixml-module"
> >
<bindingHandler id="JFrameBindingHandler" bean.class="org.x4o.xml.test.swixml.bind.JFrameBindingHandler"/> <bindingHandler id="JFrameBindingHandler" bean.class="org.x4o.xml.test.swixml.bind.JFrameBindingHandler"/>
@ -84,10 +84,27 @@
</attribute> </attribute>
</elementInterface> </elementInterface>
<namespace id="root" languageRoot="true"> <namespace
uri="http://swixml.junit.x4o.org/xml/ns/junit-swixml-root"
schemaUri="http://swixml.junit.x4o.org/xml/ns/junit-swixml-root-3.0.xsd"
schemaResource="junit-swixml-root-3.0.xsd"
schemaPrefix="root"
description="Root namespace to have nice namespaceing."
name="Junit Swixml Root Namespace"
languageRoot="true"
id="junit-swixml-root"
>
<element objectClass="javax.swing.JFrame"/> <element objectClass="javax.swing.JFrame"/>
</namespace> </namespace>
<namespace id="lang"> <namespace
uri="http://swixml.junit.x4o.org/xml/ns/junit-swixml-lang"
schemaUri="http://swixml.junit.x4o.org/xml/ns/junit-swixml-lang-3.0.xsd"
schemaResource="junit-swixml-lang-3.0.xsd"
schemaPrefix="lang"
description="Language namespace for all swing components."
name="Junit Swixml Language Namespace"
id="junit-swixml-lang"
>
<namespaceAttribute attributeName="fxid" bean.class="org.x4o.xml.test.element.TestElementNamespaceAttribute" id="fxid-test"></namespaceAttribute> <namespaceAttribute attributeName="fxid" bean.class="org.x4o.xml.test.element.TestElementNamespaceAttribute" id="fxid-test"></namespaceAttribute>
<element objectClass="javax.swing.JMenuBar"/> <element objectClass="javax.swing.JMenuBar"/>
<element objectClass="javax.swing.JMenu"/> <element objectClass="javax.swing.JMenu"/>

View file

@ -29,9 +29,9 @@
xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv" xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://eld.x4o.org/xml/ns/eld-root http://eld.x4o.org/xml/ns/eld-root-1.0.xsd" xsi:schemaLocation="http://eld.x4o.org/xml/ns/eld-root http://eld.x4o.org/xml/ns/eld-root-1.0.xsd"
providerName="test Language" providerName="Junit Test Language"
providerHost="test.x4o.org" providerHost="test.junit.x4o.org"
id="test-module" id="junit-test-module"
> >
<eld:classBindingHandler id="Parent-Child" parentClass="org.x4o.xml.test.models.TestObjectParent" childClass="org.x4o.xml.test.models.TestObjectChild" addMethod="addTestObjectChild" getMethod="getTestObjectChilds"> <eld:classBindingHandler id="Parent-Child" parentClass="org.x4o.xml.test.models.TestObjectParent" childClass="org.x4o.xml.test.models.TestObjectChild" addMethod="addTestObjectChild" getMethod="getTestObjectChilds">
@ -66,14 +66,14 @@
</eld:elementInterface> </eld:elementInterface>
<eld:namespace <eld:namespace
uri="http://test.x4o.org/xml/ns/test-root" uri="http://test.junit.x4o.org/xml/ns/junit-test-root"
schemaUri="http://test.x4o.org/xml/ns/test-root-1.0.xsd" schemaUri="http://test.junit.x4o.org/xml/ns/junit-test-root-1.0.xsd"
schemaResource="test-root-1.0.xsd" schemaResource="junit-test-root-1.0.xsd"
schemaPrefix="root" schemaPrefix="root"
description="Root namespace to have nice namespaceing." description="Root namespace to have nice namespaceing."
name="Test Root Namespace" name="Junit Test Root Namespace"
languageRoot="true" languageRoot="true"
id="test-root" id="junit-test-root"
> >
<!-- Root Element for nice namespace'ing --> <!-- Root Element for nice namespace'ing -->
<eld:element tag="root" objectClass="org.x4o.xml.test.models.TestObjectRoot"> <eld:element tag="root" objectClass="org.x4o.xml.test.models.TestObjectRoot">
@ -82,13 +82,13 @@
</eld:namespace> </eld:namespace>
<eld:namespace <eld:namespace
uri="http://test.x4o.org/xml/ns/test-lang" uri="http://test.junit.x4o.org/xml/ns/junit-test-lang"
schemaUri="http://test.x4o.org/xml/ns/test-lang-1.0.xsd" schemaUri="http://test.junit.x4o.org/xml/ns/junit-test-lang-1.0.xsd"
schemaResource="test-lang-1.0.xsd" schemaResource="junit-test-lang-1.0.xsd"
schemaPrefix="lang" schemaPrefix="lang"
description="Test language namespace to test some/most features" description="Test language namespace to test some/most features"
name="Test Language Namespace" name="Junit Test Language Namespace"
id="test-lang" id="junit-test-lang"
> >
<!-- TODO: fix x4o writer, run EldParserTest <!-- TODO: fix x4o writer, run EldParserTest
<eld:namespaceAttribute attributeName="attr1" bean.class="org.x4o.xml.test.element.TestElementNamespaceAttribute" id="attrTest1"> <eld:namespaceAttribute attributeName="attr1" bean.class="org.x4o.xml.test.element.TestElementNamespaceAttribute" id="attrTest1">

View file

@ -24,8 +24,8 @@
--> -->
<root:root <root:root
xmlns:root="http://test.x4o.org/xml/ns/test-root" xmlns:root="http://test.junit.x4o.org/xml/ns/junit-test-root"
xmlns="http://test.x4o.org/xml/ns/test-lang" xmlns="http://test.junit.x4o.org/xml/ns/junit-test-lang"
> >
<parent name="test-bean.xml"/> <parent name="test-bean.xml"/>
<testBean <testBean
@ -43,7 +43,8 @@
privateBooleanObjectField="true" privateBooleanObjectField="true"
privateCharTypeField="W" privateCharTypeField="W"
privateCharObjectField="C" privateCharObjectField="C"
privateStringObjectField="x4o" privateStringObjectField="x4o-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕"
privateStringObjectFieldUnicode仙上主天="x4o-仙上主天"
privateDateObjectField="${date0}" privateDateObjectField="${date0}"
/> />
<testBean <testBean
@ -61,7 +62,12 @@
publicBooleanObjectField="true" publicBooleanObjectField="true"
publicCharTypeField="W" publicCharTypeField="W"
publicCharObjectField="C" publicCharObjectField="C"
publicStringObjectField="x4o" publicStringObjectField="x4o-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕"
publicStringObjectFieldUnicode仙上主天="x4o-仙上主天"
publicDateObjectField="${date0}" publicDateObjectField="${date0}"
/> />
<!-- TODO: Add when SAX is fixed
privateStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ="x4o-ᒡᒢᑊᒻᒻᓫᔿ"
publicStringObjectFieldUnicodeᒡᒢᒻᒻᓫᔿ="x4o-ᒡᒢᑊᒻᒻᓫᔿ"
-->
</root:root> </root:root>

View file

@ -24,9 +24,9 @@
--> -->
<root:root <root:root
xmlns:root="http://test.x4o.org/xml/ns/test-root" xmlns:root="http://test.junit.x4o.org/xml/ns/junit-test-root"
xmlns="http://test.x4o.org/xml/ns/test-lang" xmlns="http://test.junit.x4o.org/xml/ns/junit-test-lang"
> >
<child name="attr-name"/> <child name="attr-name-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕"/>
<child>body-name</child> <child>body-name-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕</child>
</root:root> </root:root>

Some files were not shown because too many files have changed in this diff Show more