Imported fixed + octal support.
This commit is contained in:
parent
0c811208ec
commit
f08629dba0
427
pom.xml
427
pom.xml
|
@ -2,6 +2,11 @@
|
|||
<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">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>love.distributedrebirth.jedi</groupId>
|
||||
<artifactId>parent-jedi-pom</artifactId>
|
||||
<version>〇一。壬寅。一〄-SNAPSHOT</version>
|
||||
</parent>
|
||||
<groupId>org.x4o</groupId>
|
||||
<artifactId>x4o</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
|
@ -14,38 +19,6 @@
|
|||
<name>X4O</name>
|
||||
<url>http://www.x4o.org/</url>
|
||||
</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>
|
||||
<module>x4o-driver</module>
|
||||
<module>x4o-eld-doc</module>
|
||||
|
@ -53,17 +26,9 @@
|
|||
<module>x4o-meta</module>
|
||||
<module>x4o-tool</module>
|
||||
</modules>
|
||||
<distributionManagement>
|
||||
<site>
|
||||
<id>x4o-site</id>
|
||||
<url>http://www.x4o.org/</url>
|
||||
</site>
|
||||
</distributionManagement>
|
||||
<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-source-plugin.version>2.1.2</maven-source-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-license-plugin.version>1.10.b1</maven-license-plugin.version>
|
||||
<maven-clean-plugin.version>2.4.1</maven-clean-plugin.version>
|
||||
-->
|
||||
|
||||
<!-- Build non-maven plugin versions -->
|
||||
<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>
|
||||
<maven-plugin-plugin.version>3.2</maven-plugin-plugin.version>
|
||||
</properties>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-clean-plugin</artifactId>
|
||||
<version>${maven-clean-plugin.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>default-clean</id>
|
||||
<phase>clean</phase>
|
||||
<goals>
|
||||
<goal>clean</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<!-- only clean childeren of target not folder itself. -->
|
||||
<excludeDefaultDirectories>true</excludeDefaultDirectories>
|
||||
<filesets>
|
||||
<fileset>
|
||||
<directory>${project.build.directory}</directory>
|
||||
<includes>
|
||||
<include>**/*</include>
|
||||
</includes>
|
||||
</fileset>
|
||||
</filesets>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>${maven-compiler-plugin.version}</version>
|
||||
<configuration>
|
||||
<encoding>${project.build.sourceEncoding}</encoding>
|
||||
<source>${project.build.javaVersion}</source>
|
||||
<target>${project.build.javaVersion}</target>
|
||||
<showDeprecation>true</showDeprecation>
|
||||
<showWarnings>true</showWarnings>
|
||||
<optimize>true</optimize>
|
||||
<fork>false</fork>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-source-plugin</artifactId>
|
||||
<version>${maven-source-plugin.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-sources</id>
|
||||
<goals>
|
||||
<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>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter</artifactId>
|
||||
<version>5.11.0-M1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.tomcat</groupId>
|
||||
<artifactId>jasper-el</artifactId>
|
||||
<version>6.0.53</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>de.odysseus.juel</groupId>
|
||||
<artifactId>juel</artifactId>
|
||||
<version>2.1.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.x4o</groupId>
|
||||
<artifactId>x4o-driver</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.x4o</groupId>
|
||||
<artifactId>x4o-eld-doc</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.x4o</groupId>
|
||||
<artifactId>x4o-html</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.x4o</groupId>
|
||||
<artifactId>x4o-meta</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.x4o</groupId>
|
||||
<artifactId>x4o-tool-ant-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.x4o</groupId>
|
||||
<artifactId>x4o-tool-maven-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>x4o-test-none</id>
|
||||
|
@ -367,106 +153,5 @@
|
|||
<skipTests>true</skipTests>
|
||||
</properties>
|
||||
</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>
|
||||
</project>
|
||||
|
|
|
@ -14,45 +14,18 @@
|
|||
<dependency>
|
||||
<groupId>org.apache.tomcat</groupId>
|
||||
<artifactId>jasper-el</artifactId>
|
||||
<version>${jasper-el.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>de.odysseus.juel</groupId>
|
||||
<artifactId>juel</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>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<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>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>${maven-jar-plugin.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
|
|
|
@ -23,12 +23,14 @@
|
|||
package org.x4o.xml.eld.lang;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.x4o.xml.element.AbstractElementBindingHandler;
|
||||
import org.x4o.xml.element.Element;
|
||||
import org.x4o.xml.element.ElementBindingHandlerException;
|
||||
import org.x4o.xml.element.ElementObjectPropertyValueException;
|
||||
|
||||
/**
|
||||
* 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<?> childClass = null;
|
||||
private String property = null;
|
||||
private String addMethod = null;
|
||||
private String getMethod = 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)
|
||||
*/
|
||||
@SuppressWarnings(value = {"unchecked", "rawtypes"})
|
||||
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+".");
|
||||
}
|
||||
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();
|
||||
for (Method m:ms) {
|
||||
Class<?>[] types = m.getParameterTypes();
|
||||
|
@ -86,17 +116,26 @@ public class ElementRefectionBindingHandler extends AbstractElementBindingHandle
|
|||
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)
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
|
||||
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+".");
|
||||
}
|
||||
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();
|
||||
for (Method m:ms) {
|
||||
Class<?>[] types = m.getParameterTypes();
|
||||
|
@ -112,32 +151,38 @@ public class ElementRefectionBindingHandler extends AbstractElementBindingHandle
|
|||
} catch (Exception e) {
|
||||
throw new ElementBindingHandlerException("Invoke error: "+e.getMessage()+" from: "+getMethod+" on: "+parentObject+" id:"+getId(),e);
|
||||
}
|
||||
if (result==null) {
|
||||
return; // null is no childeren
|
||||
}
|
||||
if (result instanceof List) {
|
||||
for (Object o:(List)result) {
|
||||
createSafeChild(parentElement, o);
|
||||
}
|
||||
return;
|
||||
} else if (result instanceof Collection) {
|
||||
for (Object o:(Collection)result) {
|
||||
createSafeChild(parentElement, o);
|
||||
}
|
||||
return;
|
||||
} else if (result.getClass().isArray()) {
|
||||
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: "+parentObject+" id:"+getId());
|
||||
}
|
||||
createSafeChildLoop(parentElement, result);
|
||||
return;
|
||||
}
|
||||
throw new ElementBindingHandlerException("Could not find method: "+getMethod+" on: "+parentObject.getClass()+" id:"+getId());
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
protected void createSafeChildLoop(Element parentElement,Object result) throws ElementBindingHandlerException {
|
||||
if (result==null) {
|
||||
return; // null is no childeren
|
||||
}
|
||||
if (result instanceof List) {
|
||||
for (Object o:(List)result) {
|
||||
createSafeChild(parentElement, o);
|
||||
}
|
||||
return;
|
||||
} else if (result instanceof Collection) {
|
||||
for (Object o:(Collection)result) {
|
||||
createSafeChild(parentElement, o);
|
||||
}
|
||||
return;
|
||||
} else if (result.getClass().isArray()) {
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
|
|
|
@ -53,9 +53,15 @@ public class EldXsdWriter {
|
|||
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_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_ENABLE = PROPERTY_CONTEXT_PREFIX+"prolog/generated-by-enable";
|
||||
public final static String PROLOG_PROVIDER_INFO_ENABLE = PROPERTY_CONTEXT_PREFIX+"prolog/provider-info-enable";
|
||||
public final static String PROLOG_GENERATED_ENABLE = PROPERTY_CONTEXT_PREFIX+"prolog/generated-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 {
|
||||
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(FILTER_NAMESPACE, 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_ENABLE, Boolean.class, true),
|
||||
new PropertyConfigItem(PROLOG_PROVIDER_INFO_ENABLE, Boolean.class, true)
|
||||
new PropertyConfigItem(PROLOG_GENERATED_ENABLE, Boolean.class, true),
|
||||
new PropertyConfigItem(PROLOG_XMLNS_INFO_ENABLE, Boolean.class, true),
|
||||
new PropertyConfigItem(PROLOG_XMLNS_DESC_ENABLE, Boolean.class, true)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@ import org.x4o.xml.element.ElementMetaBase;
|
|||
import org.x4o.xml.element.ElementNamespace;
|
||||
import org.x4o.xml.element.ElementNamespaceAttribute;
|
||||
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.Tag;
|
||||
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 {
|
||||
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;
|
||||
}
|
||||
//xsdWriter.ignorableWhitespace(XMLConstants.CHAR_NEWLINE);
|
||||
xsdWriter.printComment(COMMENT_SEPERATOR);
|
||||
|
||||
String byValue = propertyConfig.getPropertyString(EldXsdWriter.PROLOG_GENERATED_BY, EldXsdWriter.class.getSimpleName());
|
||||
if (!byValue.endsWith(".")) {
|
||||
byValue += '.';
|
||||
String chEnter = propertyConfig.getPropertyString(ContentWriterXml.OUTPUT_CHAR_NEWLINE);
|
||||
String chTab = propertyConfig.getPropertyString(ContentWriterXml.OUTPUT_CHAR_TAB);
|
||||
String generatedBy = propertyConfig.getPropertyString(EldXsdWriter.PROLOG_GENERATED_BY, EldXsdWriter.class.getSimpleName());
|
||||
String generatedVersion = propertyConfig.getPropertyString(EldXsdWriter.PROLOG_GENERATED_VERSION);
|
||||
StringBuilder b = new StringBuilder();
|
||||
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));
|
||||
}
|
||||
|
||||
// this is a mess;
|
||||
String desc = "Automatic generated schema for language: "+language.getLanguageName()+" by "+byValue;
|
||||
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(" ");
|
||||
b.append(chEnter + chTab + String.format(COMMENT_FORMAT,"LanguageName:",language.getLanguageName()));
|
||||
b.append(chEnter + chTab + String.format(COMMENT_FORMAT,"LanguageVersion:",language.getLanguageVersion()));
|
||||
b.append(chEnter);
|
||||
xsdWriter.printComment(b.toString());
|
||||
xsdWriter.printComment(COMMENT_SEPERATOR);
|
||||
}
|
||||
|
||||
private void prologWriteProvider(ElementNamespace ns) throws SAXException {
|
||||
if (!propertyConfig.getPropertyBoolean(EldXsdWriter.PROLOG_PROVIDER_INFO_ENABLE)) {
|
||||
return;
|
||||
private void prologWriteNSMeta(ElementNamespace ns) throws SAXException {
|
||||
String chEnter = propertyConfig.getPropertyString(ContentWriterXml.OUTPUT_CHAR_NEWLINE);
|
||||
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;
|
||||
for (X4OLanguageModule elm:language.getLanguageModules()) {
|
||||
ElementNamespace s = elm.getElementNamespace(ns.getUri());
|
||||
if (s!=null) {
|
||||
module = elm;
|
||||
break;
|
||||
boolean printDesc = false;
|
||||
if (propertyConfig.getPropertyBoolean(EldXsdWriter.PROLOG_XMLNS_DESC_ENABLE)) {
|
||||
if (ns.getDescription() != null && !ns.getDescription().isEmpty()) {
|
||||
printDesc = true;
|
||||
}
|
||||
}
|
||||
StringBuilder b = new StringBuilder(COMMENT_SEPERATOR.length());
|
||||
String formatLine = "\n\t%1$-20s %2$s";
|
||||
b.append(String.format(formatLine,"Id:",module.getId()));
|
||||
b.append(String.format(formatLine,"ProviderName:",module.getProviderName()));
|
||||
b.append(String.format(formatLine,"ProviderHost:",module.getProviderHost()));
|
||||
b.append(String.format(formatLine,"Namespaces:",module.getElementNamespaces().size()));
|
||||
b.append(String.format(formatLine,"Uri:",ns.getUri()));
|
||||
b.append(String.format(formatLine,"Uri schema",ns.getSchemaUri()));
|
||||
b.append(String.format(formatLine,"Created on:",new Date()));
|
||||
b.append("\n");
|
||||
|
||||
xsdWriter.printComment(b.toString());
|
||||
if (printDesc && propertyConfig.getPropertyBoolean(EldXsdWriter.PROLOG_SEPERATOR_ENABLE)) {
|
||||
xsdWriter.printComment(propertyConfig.getPropertyString(EldXsdWriter.PROLOG_SEPERATOR_LINE));
|
||||
}
|
||||
if (printDesc) {
|
||||
StringBuilder buf = new StringBuilder();
|
||||
for (String line : ns.getDescription().split("\n")) {
|
||||
buf.append(chEnter);
|
||||
buf.append(chTab);
|
||||
buf.append(line);
|
||||
}
|
||||
buf.append(chEnter);
|
||||
xsdWriter.printComment(buf.toString());
|
||||
}
|
||||
}
|
||||
|
||||
public void startSchema(ElementNamespace ns) throws SAXException {
|
||||
|
@ -207,7 +209,7 @@ public class EldXsdWriterElement {
|
|||
xsdWriter.startDocument();
|
||||
|
||||
prologWriteGenerator();
|
||||
prologWriteProvider(ns);
|
||||
prologWriteNSMeta(ns);
|
||||
|
||||
for (String uri:namespaces.keySet()) {
|
||||
String prefix = namespaces.get(uri);
|
||||
|
@ -280,14 +282,14 @@ public class EldXsdWriterElement {
|
|||
atts = new AttributesImpl();
|
||||
atts.addAttribute ("", "minOccurs", "", "", "0"); // TODO: make unordered elements
|
||||
atts.addAttribute ("", "maxOccurs", "", "", "unbounded");
|
||||
xsdWriter.printTagStart(Tag.choise, atts);
|
||||
xsdWriter.printTagStart(Tag.choice, atts);
|
||||
|
||||
for (X4OLanguageModule mod:language.getLanguageModules()) {
|
||||
for (ElementNamespace ns:mod.getElementNamespaces()) {
|
||||
writeElementClassNamespaces(ec,nsWrite,ns);
|
||||
}
|
||||
}
|
||||
xsdWriter.printTagEnd(Tag.choise);
|
||||
xsdWriter.printTagEnd(Tag.choice);
|
||||
}
|
||||
|
||||
List<String> attrNames = new ArrayList<String>(30);
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
*/
|
||||
package org.x4o.xml.io;
|
||||
|
||||
import java.util.PrimitiveIterator;
|
||||
|
||||
/**
|
||||
* 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; // ""
|
||||
|
||||
/**
|
||||
* (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.
|
||||
|
@ -146,7 +148,17 @@ public final class XMLConstants {
|
|||
*/
|
||||
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) {
|
||||
return getDocumentDeclaration(encoding,null);
|
||||
|
@ -221,8 +233,9 @@ public final class XMLConstants {
|
|||
}
|
||||
|
||||
static public boolean isCharString(String value) {
|
||||
for (int i=0;i<value.length();i++) {
|
||||
char c = value.charAt(i);
|
||||
PrimitiveIterator.OfInt iterator = value.codePoints().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
int c = iterator.nextInt();
|
||||
if (isNameChar(c)==false) {
|
||||
return false;
|
||||
}
|
||||
|
@ -231,11 +244,17 @@ public final class XMLConstants {
|
|||
}
|
||||
|
||||
static public boolean isNameString(String value) {
|
||||
for (int i=0;i<value.length();i++) {
|
||||
char c = value.charAt(i);
|
||||
if (i==0 && isNameStartChar(c)==false) {
|
||||
return false;
|
||||
} else if (isNameChar(c)==false) {
|
||||
boolean first = true;
|
||||
PrimitiveIterator.OfInt iterator = value.codePoints().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
int c = iterator.nextInt();
|
||||
if (first) {
|
||||
first = false;
|
||||
if (isNameStartChar(c)==false) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (isNameChar(c)==false) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -246,92 +265,96 @@ public final class XMLConstants {
|
|||
// &#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';'
|
||||
//}
|
||||
|
||||
static private boolean escapeXMLValue(char c,StringBuilder result) {
|
||||
if (c=='<') {
|
||||
static private boolean escapeXMLValueAppend(int codePoint, StringBuilder result) {
|
||||
if (codePoint == '<') {
|
||||
result.append("<");
|
||||
return true;
|
||||
}
|
||||
if (c=='>') {
|
||||
if (codePoint == '>') {
|
||||
result.append(">");
|
||||
return true;
|
||||
}
|
||||
if (c=='&') {
|
||||
if (codePoint == '&') {
|
||||
result.append("&");
|
||||
return true;
|
||||
}
|
||||
if (c=='\"') {
|
||||
if (codePoint == '\"') {
|
||||
result.append(""e;");
|
||||
return true;
|
||||
}
|
||||
if (c=='\'') {
|
||||
if (codePoint == '\'') {
|
||||
result.append("'");
|
||||
return true;
|
||||
}
|
||||
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) {
|
||||
// Reference ::= EntityRef | CharRef
|
||||
// AttValue ::= '"' ([^<&"] | Reference)* '"' | "'" ([^<&'] | Reference)* "'"
|
||||
int length = value.length();
|
||||
StringBuilder result = new StringBuilder(length);
|
||||
for (int i=0;i<length;i++) {
|
||||
char c = value.charAt(i);
|
||||
if (escapeXMLValue(c,result)) {
|
||||
StringBuilder result = new StringBuilder(value.length());
|
||||
PrimitiveIterator.OfInt iterator = value.codePoints().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
int c = iterator.nextInt();
|
||||
// 3.3.3 Attribute-Value Normalization.
|
||||
if (escapeXMLValueAppend(c,result)) {
|
||||
continue;
|
||||
}
|
||||
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(";");
|
||||
continue;
|
||||
} else {
|
||||
result.append(c);
|
||||
result.appendCodePoint(c);
|
||||
}
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
static public String escapeCharacters(String value) {
|
||||
int length = value.length();
|
||||
StringBuilder result = new StringBuilder(length);
|
||||
for (int i=0;i<length;i++) {
|
||||
char c = value.charAt(i);
|
||||
if (c=='&') {
|
||||
StringBuilder buf = new StringBuilder(length);
|
||||
int iOrg = i;
|
||||
i = charEntityLookup(i,value,buf);
|
||||
String entity = buf.toString();
|
||||
if (entity.length()>0) {
|
||||
if (charEntityAllowed(entity)) {
|
||||
result.append(entity);
|
||||
continue; // contine to next i char.
|
||||
} else {
|
||||
i = iOrg; // continue normal escape.
|
||||
StringBuilder result = new StringBuilder(value.length());
|
||||
PrimitiveIterator.OfInt iterator = value.codePoints().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
int c = iterator.nextInt();
|
||||
//for (int i=0;i<length;i++) {
|
||||
// char c = value.charAt(i);
|
||||
if (c == '&') {
|
||||
StringBuilder entity = new StringBuilder(16);
|
||||
entity.appendCodePoint(c);
|
||||
while (iterator.hasNext()) {
|
||||
int entityCodePoint = iterator.nextInt();
|
||||
entity.appendCodePoint(entityCodePoint);
|
||||
if (entityCodePoint == ';') {
|
||||
break;
|
||||
}
|
||||
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();
|
||||
}
|
||||
|
@ -382,20 +405,6 @@ public final class XMLConstants {
|
|||
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) {
|
||||
value = value.replaceAll(CDATA_START_REGEX, replaceCdataStart);
|
||||
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) {
|
||||
value = value.replaceAll(COMMENT_START, "");
|
||||
value = value.replaceAll(COMMENT_END, "");
|
||||
int length = value.length();
|
||||
StringBuilder result = new StringBuilder(length);
|
||||
for (int i=0;i<length;i++) {
|
||||
char c = value.charAt(i);
|
||||
if (c=='\n') {
|
||||
result.append(c);
|
||||
StringBuilder result = new StringBuilder(value.length());
|
||||
PrimitiveIterator.OfInt iterator = value.codePoints().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
int c = iterator.nextInt();
|
||||
if (c == '\n') {
|
||||
result.appendCodePoint(c);
|
||||
for (int ii = 0; ii < indent; ii++) {
|
||||
result.append(charTab);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
result.append(c);
|
||||
result.appendCodePoint(c);
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ import java.util.ArrayList;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.PrimitiveIterator;
|
||||
import java.util.Set;
|
||||
import java.util.Stack;
|
||||
|
||||
|
@ -213,12 +214,16 @@ public class AbstractContentWriterHandler implements ContentHandler {
|
|||
return;
|
||||
}
|
||||
String userComment = propertyConfig.getPropertyString(PROLOG_USER_COMMENT);
|
||||
if (userComment==null) {
|
||||
if (userComment == null) {
|
||||
return;
|
||||
}
|
||||
ignorableWhitespace(XMLConstants.CHAR_NEWLINE);
|
||||
comment(" "+userComment+" ");
|
||||
ignorableWhitespace(XMLConstants.CHAR_NEWLINE);
|
||||
if (userComment.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
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) {
|
||||
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();
|
||||
startElement = new StringBuilder(200);
|
||||
startElement.append(getPropertyConfig().getPropertyString(OUTPUT_CHAR_NEWLINE));
|
||||
|
@ -344,7 +369,7 @@ public class AbstractContentWriterHandler implements ContentHandler {
|
|||
int prevChars = 0;
|
||||
for (int i=0;i<atts.getLength();i++) {
|
||||
String attributeUri = atts.getURI(i);
|
||||
String attributeName = XMLConstants.escapeAttributeName(atts.getLocalName(i));
|
||||
String attributeName = atts.getLocalName(i);
|
||||
String attributeValue = atts.getValue(i);
|
||||
if (attributeValue==null) {
|
||||
attributeValue = propertyConfig.getPropertyString(OUTPUT_CHAR_NULL);
|
||||
|
|
|
@ -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)
|
||||
*/
|
||||
public void startDTD(String name, String publicId, String systemId) throws SAXException {
|
||||
charactersRaw(XMLConstants.XML_DOCTYPE);
|
||||
charactersRaw(XMLConstants.XML_DOCTYPE_TAG_OPEN);
|
||||
charactersRaw(" ");
|
||||
charactersRaw(name);
|
||||
if (publicId!=null) {
|
||||
|
|
|
@ -75,7 +75,7 @@ public class ContentWriterXsd extends ContentWriterTagWrapper<ContentWriterXsd.T
|
|||
|
||||
public enum Tag {
|
||||
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,
|
||||
redefine,restriction,schema,selector,sequence,
|
||||
simpleContent,simpleType,unoin,unique
|
||||
|
|
|
@ -28,6 +28,7 @@ import java.util.Collections;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
/**
|
||||
* 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_WRITER = "writer/x4o/";
|
||||
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_DOC = "eld-doc/";
|
||||
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_X4O_STATIC = "x4o-static/";
|
||||
//public final static String X4O_PROPERTIES_WRITER_DTD = "writer/dtd/";
|
||||
//public final static String X4O_PROPERTIES_WRITER_HTML = "writer/html/";
|
||||
|
||||
|
@ -267,6 +269,14 @@ public final class PropertyConfig implements Cloneable {
|
|||
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) {
|
||||
Object value = getProperty(key);
|
||||
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);
|
||||
}
|
||||
|
||||
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) {
|
||||
Object value = getProperty(key);
|
||||
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);
|
||||
}
|
||||
|
||||
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) {
|
||||
Object value = getProperty(key);
|
||||
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);
|
||||
}
|
||||
|
||||
public final Integer getPropertyInteger(String key,Supplier<Integer> defaultValue) {
|
||||
Integer result = getPropertyInteger(key);
|
||||
if (result != null) {
|
||||
return result;
|
||||
}
|
||||
return defaultValue.get();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public final List<String> getPropertyList(String 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);
|
||||
}
|
||||
|
||||
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")
|
||||
public final Map<String,String> getPropertyMap(String 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);
|
||||
}
|
||||
|
||||
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) {
|
||||
Object value = getProperty(key);
|
||||
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) {
|
||||
for (String key:getPropertyKeys()) {
|
||||
Object value = config.getProperty(key);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
|
@ -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();
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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> {
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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[] {});
|
||||
}
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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[] {});
|
||||
}
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
}
|
|
@ -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;
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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++;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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[] {}));
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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;
|
|
@ -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);
|
||||
}
|
|
@ -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.
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
|
@ -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;
|
30
x4o-driver/src/main/java/org/x4o/xml/o4o/package-info.java
Normal file
30
x4o-driver/src/main/java/org/x4o/xml/o4o/package-info.java
Normal 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;
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
|
||||
Copyright (c) 2004-2014, Willem Cazander
|
||||
Copyright ©Δ∞ 仙上主天
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
|
@ -11,8 +11,12 @@
|
|||
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 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
|
||||
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,
|
||||
|
@ -22,9 +26,10 @@
|
|||
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.
|
||||
|
||||
|
||||
-->
|
||||
<!-- ==================================================================== -->
|
||||
<!-- ===== Automatic generated schema for language: cel ===== -->
|
||||
<!-- ===== Automatic generated schema for language: cel by EldXsdWriter.===== -->
|
||||
<!-- ==================================================================== -->
|
||||
<!--
|
||||
Id: cel-module
|
||||
|
@ -33,11 +38,32 @@
|
|||
Namespaces: 2
|
||||
Uri: http://cel.x4o.org/xml/ns/cel-core
|
||||
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"
|
||||
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">
|
||||
<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">
|
||||
<choice minOccurs="0" maxOccurs="unbounded">
|
||||
<element name="attributeAlias" type="this:attributeAliasType"/>
|
||||
|
@ -54,48 +80,6 @@
|
|||
<attribute name="description" type="string"/>
|
||||
<attribute name="id" type="string"/>
|
||||
</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">
|
||||
<choice minOccurs="0" maxOccurs="unbounded">
|
||||
<element name="attribute" type="this:attributeType"/>
|
||||
|
@ -105,33 +89,22 @@
|
|||
</choice>
|
||||
<attribute name="objectClass" type="string"/>
|
||||
<attribute name="elementClass" type="string"/>
|
||||
<attribute name="schemaContentMixed" type="boolean"/>
|
||||
<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"/>
|
||||
<attribute name="id" type="string"/>
|
||||
</complexType>
|
||||
<complexType name="configuratorGlobalType">
|
||||
<complexType name="namespaceAttributeType">
|
||||
<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 name="attributeAliasType">
|
||||
<complexType name="classConverterType">
|
||||
<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 name="elementInterfaceType">
|
||||
<choice minOccurs="0" maxOccurs="unbounded">
|
||||
|
@ -144,30 +117,47 @@
|
|||
<attribute name="description" type="string"/>
|
||||
<attribute name="id" type="string"/>
|
||||
</complexType>
|
||||
<complexType name="elementParentType">
|
||||
<choice minOccurs="0" maxOccurs="unbounded"/>
|
||||
<attribute name="tag" type="string" use="required"/>
|
||||
<attribute name="uri" type="string"/>
|
||||
<complexType name="configuratorType">
|
||||
<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>
|
||||
<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>
|
||||
<documentation xml:lang="en">Defines xml element attribute.</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>
|
||||
<documentation xml:lang="en">Added (meta) element parent.</documentation>
|
||||
</annotation>
|
||||
</element>
|
||||
<element name="description" type="this:descriptionType">
|
||||
|
@ -175,9 +165,14 @@
|
|||
<documentation xml:lang="en">Adds description as text on all eld elements.</documentation>
|
||||
</annotation>
|
||||
</element>
|
||||
<element name="bindingHandler" type="this:bindingHandlerType">
|
||||
<element name="configuratorGlobal" type="this:configuratorGlobalType">
|
||||
<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>
|
||||
</element>
|
||||
<element name="element" type="this:elementType">
|
||||
|
@ -185,19 +180,14 @@
|
|||
<documentation xml:lang="en">Defines xml element tag.</documentation>
|
||||
</annotation>
|
||||
</element>
|
||||
<element name="configuratorGlobal" type="this:configuratorGlobalType">
|
||||
<element name="namespaceAttribute" type="this:namespaceAttributeType">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">Define generic global configuator for languge.</documentation>
|
||||
<documentation xml:lang="en">Defines generic namespace attribute for language.</documentation>
|
||||
</annotation>
|
||||
</element>
|
||||
<element name="attributeAlias" type="this:attributeAliasType">
|
||||
<element name="classConverter" type="this:classConverterType">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">Adds an attribute alias.</documentation>
|
||||
</annotation>
|
||||
</element>
|
||||
<element name="configurator" type="this:configuratorType">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">Define generic configurator for language.</documentation>
|
||||
<documentation xml:lang="en">Converts string attribute to java class instance.</documentation>
|
||||
</annotation>
|
||||
</element>
|
||||
<element name="elementInterface" type="this:elementInterfaceType">
|
||||
|
@ -205,9 +195,25 @@
|
|||
<documentation xml:lang="en">Defines element interface class.</documentation>
|
||||
</annotation>
|
||||
</element>
|
||||
<element name="elementParent" type="this:elementParentType">
|
||||
<element name="configurator" type="this:configuratorType">
|
||||
<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>
|
||||
</element>
|
||||
</schema>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
|
||||
Copyright (c) 2004-2014, Willem Cazander
|
||||
Copyright ©Δ∞ 仙上主天
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
|
@ -11,8 +11,12 @@
|
|||
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 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
|
||||
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,
|
||||
|
@ -22,9 +26,10 @@
|
|||
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.
|
||||
|
||||
|
||||
-->
|
||||
<!-- ==================================================================== -->
|
||||
<!-- ===== Automatic generated schema for language: cel ===== -->
|
||||
<!-- ===== Automatic generated schema for language: cel by EldXsdWriter.===== -->
|
||||
<!-- ==================================================================== -->
|
||||
<!--
|
||||
Id: cel-module
|
||||
|
@ -33,7 +38,7 @@
|
|||
Namespaces: 2
|
||||
Uri: http://cel.x4o.org/xml/ns/cel-root
|
||||
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"
|
||||
xmlns:cel-core="http://cel.x4o.org/xml/ns/cel-core"
|
||||
|
@ -48,12 +53,11 @@
|
|||
<element ref="cel-core:elementInterface"/>
|
||||
<element ref="cel-core:namespace"/>
|
||||
</choice>
|
||||
<attribute name="id" type="string" use="required"/>
|
||||
<attribute name="providerHost" type="string" use="required"/>
|
||||
<attribute name="languageModuleLoader" type="string"/>
|
||||
<attribute name="sourceResource" type="string"/>
|
||||
<attribute name="id" type="string" use="required"/>
|
||||
<attribute name="providerName" type="string"/>
|
||||
<attribute name="description" type="string"/>
|
||||
</complexType>
|
||||
</element>
|
||||
</schema>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
|
||||
Copyright (c) 2004-2014, Willem Cazander
|
||||
Copyright ©Δ∞ 仙上主天
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
|
@ -11,8 +11,12 @@
|
|||
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 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
|
||||
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,
|
||||
|
@ -22,9 +26,10 @@
|
|||
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.
|
||||
|
||||
|
||||
-->
|
||||
<!-- ==================================================================== -->
|
||||
<!-- ===== Automatic generated schema for language: eld ===== -->
|
||||
<!-- ===== Automatic generated schema for language: eld by EldXsdWriter.===== -->
|
||||
<!-- ==================================================================== -->
|
||||
<!--
|
||||
Id: eld-module
|
||||
|
@ -33,73 +38,13 @@
|
|||
Namespaces: 3
|
||||
Uri: http://eld.x4o.org/xml/ns/eld-conv
|
||||
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"
|
||||
xmlns:this="http://eld.x4o.org/xml/ns/eld-conv"
|
||||
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">
|
||||
<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 'to' convert.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="splitSize" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">The split value expected size.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="split" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">The split regex.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="classTo" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">The class name to convert the string to.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
</complexType>
|
||||
<complexType 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">
|
||||
<choice minOccurs="0" maxOccurs="unbounded">
|
||||
<element name="booleanConverter" type="this:booleanConverterType"/>
|
||||
|
@ -114,53 +59,114 @@
|
|||
<element name="stringSplitConverter" type="this:stringSplitConverterType"/>
|
||||
<element name="urlConverter" type="this:urlConverterType"/>
|
||||
</choice>
|
||||
<attribute name="toMethod" type="string">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">The convert 'to' method step.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="fromOrder" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">The convert 'from' order.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="fromMethod" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">The convert 'from' method step.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="toOrder" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">The convert 'to' order.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="toMethod" type="string">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">The convert 'to' method step.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="fromMethod" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">The convert 'from' method step.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="objectConverter" type="string"/>
|
||||
</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 'to' 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">
|
||||
<choice minOccurs="0" maxOccurs="unbounded"/>
|
||||
</complexType>
|
||||
<complexType name="characterConverterType">
|
||||
<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="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">
|
||||
<choice minOccurs="0" maxOccurs="unbounded"/>
|
||||
<attribute name="enumClass" type="string"/>
|
||||
</complexType>
|
||||
<element name="byteConverter" type="this:byteConverterType"/>
|
||||
<element name="doubleConverter" type="this:doubleConverterType"/>
|
||||
<element name="longConverter" type="this:longConverterType"/>
|
||||
<element name="classConverter" type="this:classConverterType"/>
|
||||
<element name="stringSplitConverter" type="this:stringSplitConverterType"/>
|
||||
<complexType name="longConverterType">
|
||||
<choice minOccurs="0" maxOccurs="unbounded"/>
|
||||
</complexType>
|
||||
<element name="stringSplitConverterStep" type="this:stringSplitConverterStepType"/>
|
||||
<element name="booleanConverter" type="this:booleanConverterType"/>
|
||||
<element name="urlConverter" type="this:urlConverterType"/>
|
||||
<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">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">Define an loadable in bean.class for an ObjectConverter.</documentation>
|
||||
</annotation>
|
||||
</element>
|
||||
<element name="stringSplitConverterStep" type="this:stringSplitConverterStepType"/>
|
||||
<element name="floatConverter" type="this:floatConverterType"/>
|
||||
<element name="characterConverter" type="this:characterConverterType"/>
|
||||
<element name="doubleConverter" type="this:doubleConverterType"/>
|
||||
<element name="classConverter" type="this:classConverterType"/>
|
||||
<element name="byteConverter" type="this:byteConverterType"/>
|
||||
<element name="urlConverter" type="this:urlConverterType"/>
|
||||
<element name="enumConverter" type="this:enumConverterType"/>
|
||||
<element name="longConverter" type="this:longConverterType"/>
|
||||
</schema>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
|
||||
Copyright (c) 2004-2014, Willem Cazander
|
||||
Copyright ©Δ∞ 仙上主天
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
|
@ -11,8 +11,12 @@
|
|||
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 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
|
||||
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,
|
||||
|
@ -22,9 +26,10 @@
|
|||
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.
|
||||
|
||||
|
||||
-->
|
||||
<!-- ==================================================================== -->
|
||||
<!-- ===== Automatic generated schema for language: eld ===== -->
|
||||
<!-- ===== Automatic generated schema for language: eld by EldXsdWriter.===== -->
|
||||
<!-- ==================================================================== -->
|
||||
<!--
|
||||
Id: eld-module
|
||||
|
@ -33,13 +38,99 @@
|
|||
Namespaces: 3
|
||||
Uri: http://eld.x4o.org/xml/ns/eld-lang
|
||||
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"
|
||||
xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv"
|
||||
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">
|
||||
<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">
|
||||
<choice minOccurs="0" maxOccurs="unbounded">
|
||||
<element ref="conv:beanConverter"/>
|
||||
|
@ -65,14 +156,66 @@
|
|||
</attribute>
|
||||
<attribute name="name" type="string"/>
|
||||
<attribute name="required" type="boolean"/>
|
||||
<attribute name="runResolveEL" type="boolean"/>
|
||||
<attribute name="defaultValue" type="string"/>
|
||||
<attribute name="objectConverter" type="string"/>
|
||||
<attribute name="runResolveEL" type="boolean"/>
|
||||
<attribute name="runConverters" type="boolean"/>
|
||||
<attribute name="runBeanValue" type="boolean"/>
|
||||
<attribute name="writeOrder" type="integer"/>
|
||||
<attribute name="description" type="string"/>
|
||||
</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">
|
||||
<choice minOccurs="0" maxOccurs="unbounded">
|
||||
<element name="description" type="this:descriptionType"/>
|
||||
|
@ -95,33 +238,47 @@
|
|||
</attribute>
|
||||
<anyAttribute/>
|
||||
</complexType>
|
||||
<complexType name="namespaceType">
|
||||
<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="element" type="this:elementType"/>
|
||||
<element name="namespaceAttribute" type="this:namespaceAttributeType"/>
|
||||
<element name="elementParent" type="this:elementParentType"/>
|
||||
</choice>
|
||||
<attribute name="id" type="string" use="required">
|
||||
<attribute name="interfaceClass" type="string" use="required">
|
||||
<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>
|
||||
</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"/>
|
||||
</complexType>
|
||||
<complexType name="descriptionType">
|
||||
<simpleContent>
|
||||
<extension base="string">
|
||||
<anyAttribute/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
<complexType name="configuratorType">
|
||||
<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 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 name="bindingHandlerType">
|
||||
<choice minOccurs="0" maxOccurs="unbounded">
|
||||
|
@ -139,45 +296,25 @@
|
|||
</attribute>
|
||||
<anyAttribute/>
|
||||
</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="elementType">
|
||||
<complexType name="namespaceType">
|
||||
<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"/>
|
||||
<element name="element" type="this:elementType"/>
|
||||
<element name="namespaceAttribute" type="this:namespaceAttributeType"/>
|
||||
</choice>
|
||||
<attribute name="id" type="string">
|
||||
<attribute name="id" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">The attribute id. (with tag as alias)</documentation>
|
||||
<documentation xml:lang="en">The namespace id.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="tag" type="string"/>
|
||||
<attribute name="objectClass" type="string">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">The class of the wrapped object.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="elementClass" type="string">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">An custom element class to config object.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="schemaContentMixed" type="boolean"/>
|
||||
<attribute name="autoAttributes" type="boolean"/>
|
||||
<attribute name="schemaContentBase" type="string"/>
|
||||
<attribute name="schemaContentComplex" type="boolean"/>
|
||||
<attribute name="name" type="string"/>
|
||||
<attribute name="schemaPrefix" type="string"/>
|
||||
<attribute name="schemaUri" type="string"/>
|
||||
<attribute name="schemaResource" type="string"/>
|
||||
<attribute name="languageRoot" type="boolean"/>
|
||||
<attribute name="elementNamespaceInstanceProvider" type="string"/>
|
||||
<attribute name="prefixMapping" type="string"/>
|
||||
<attribute name="uri" type="string"/>
|
||||
<attribute name="description" type="string"/>
|
||||
</complexType>
|
||||
<complexType name="attributeAliasType">
|
||||
|
@ -189,110 +326,6 @@
|
|||
</attribute>
|
||||
<anyAttribute/>
|
||||
</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">
|
||||
<choice minOccurs="0" maxOccurs="unbounded">
|
||||
<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 'characters'.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="id" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">The id for this configurator.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="name" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">The attribute name to fill the value.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="id" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">The id for this configurator.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
</complexType>
|
||||
<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="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">
|
||||
<element name="elementParent" type="this:elementParentType">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">XML Element Attribute tag.</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>
|
||||
<documentation xml:lang="en">Adds an parent element tag for xsd</documentation>
|
||||
</annotation>
|
||||
</element>
|
||||
<element name="classBindingHandler" type="this:classBindingHandlerType">
|
||||
|
@ -396,19 +356,9 @@
|
|||
<documentation xml:lang="en">Lets you dynamicly bind to object togecher.</documentation>
|
||||
</annotation>
|
||||
</element>
|
||||
<element name="elementInterface" type="this:elementInterfaceType">
|
||||
<element name="description" type="this:descriptionType">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">Config element objects by java interface.</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>
|
||||
<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="namespaceAttributeNext" type="this:namespaceAttributeNextType">
|
||||
|
@ -416,4 +366,65 @@
|
|||
<documentation xml:lang="en">Defines the parameter order.</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="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>
|
||||
|
||||
|
|
|
@ -255,10 +255,14 @@
|
|||
<description>The child class.</description>
|
||||
<classConverter/>
|
||||
</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>
|
||||
</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>
|
||||
</attribute>
|
||||
</element>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
|
||||
Copyright (c) 2004-2014, Willem Cazander
|
||||
Copyright ©Δ∞ 仙上主天
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
|
@ -11,8 +11,12 @@
|
|||
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 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
|
||||
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,
|
||||
|
@ -22,9 +26,10 @@
|
|||
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.
|
||||
|
||||
|
||||
-->
|
||||
<!-- ==================================================================== -->
|
||||
<!-- ===== Automatic generated schema for language: eld ===== -->
|
||||
<!-- ===== Automatic generated schema for language: eld by EldXsdWriter.===== -->
|
||||
<!-- ==================================================================== -->
|
||||
<!--
|
||||
Id: eld-module
|
||||
|
@ -33,7 +38,7 @@
|
|||
Namespaces: 3
|
||||
Uri: http://eld.x4o.org/xml/ns/eld-root
|
||||
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"
|
||||
xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv"
|
||||
|
@ -52,6 +57,11 @@
|
|||
<element ref="lang:elementInterface"/>
|
||||
<element ref="lang:namespace"/>
|
||||
</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">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">The module id.</documentation>
|
||||
|
@ -62,14 +72,8 @@
|
|||
<documentation xml:lang="en">The provider name in normal en:lang.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="providerHost" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation xml:lang="en">The provider host like langx.someorg.domain for uri/etc defaults.</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="languageModuleLoader" type="string"/>
|
||||
<attribute name="sourceResource" type="string"/>
|
||||
<attribute name="description" type="string"/>
|
||||
</complexType>
|
||||
</element>
|
||||
</schema>
|
||||
|
||||
|
|
|
@ -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;
|
||||
>
|
|
@ -29,6 +29,7 @@
|
|||
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.lang.task.X4OStaticLanguageTask"/>
|
||||
<driver language="eld" className="org.x4o.xml.eld.EldDriver"/>
|
||||
<driver language="cel" className="org.x4o.xml.eld.CelDriver"/>
|
||||
</drivers>
|
||||
|
|
|
@ -24,9 +24,8 @@ package org.x4o.xml;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import org.x4o.xml.X4ODriverManager;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* X4ODriverManager
|
||||
|
@ -34,26 +33,30 @@ import junit.framework.TestCase;
|
|||
* @author Willem Cazander
|
||||
* @version 1.0 Jul 24, 2006
|
||||
*/
|
||||
public class X4ODriverManagerTest extends TestCase {
|
||||
|
||||
public class X4ODriverManagerTest {
|
||||
|
||||
@Test
|
||||
public void testDefaultLanguageVersionSelect() throws Exception {
|
||||
String version = X4ODriverManager.getDefaultLanguageVersion(new String[]{"1.0","2.0","3.0"});
|
||||
assertNotNull(version);
|
||||
assertEquals("3.0",version);
|
||||
Assertions.assertNotNull(version);
|
||||
Assertions.assertEquals("3.0",version);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDefaultLanguageVersionEmpty() throws Exception {
|
||||
String version = X4ODriverManager.getDefaultLanguageVersion(new String[]{});
|
||||
assertNotNull(version);
|
||||
assertEquals(X4ODriver.DEFAULT_LANGUAGE_VERSION,version);
|
||||
Assertions.assertNotNull(version);
|
||||
Assertions.assertEquals(X4ODriver.DEFAULT_LANGUAGE_VERSION,version);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDefaultLanguageVersionNull() throws Exception {
|
||||
String version = X4ODriverManager.getDefaultLanguageVersion(null);
|
||||
assertNotNull(version);
|
||||
assertEquals(X4ODriver.DEFAULT_LANGUAGE_VERSION,version);
|
||||
Assertions.assertNotNull(version);
|
||||
Assertions.assertEquals(X4ODriver.DEFAULT_LANGUAGE_VERSION,version);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLanguageNull() throws Exception {
|
||||
String language = null;
|
||||
Exception e = null;
|
||||
|
@ -62,11 +65,12 @@ public class X4ODriverManagerTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull(e);
|
||||
assertEquals(NullPointerException.class, e.getClass());
|
||||
assertTrue(e.getMessage().contains("language"));
|
||||
Assertions.assertNotNull(e);
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass());
|
||||
Assertions.assertTrue(e.getMessage().contains("language"));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testLanguageEmpty() throws Exception {
|
||||
String language = "";
|
||||
Exception e = null;
|
||||
|
@ -75,11 +79,12 @@ public class X4ODriverManagerTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull(e);
|
||||
assertEquals(IllegalArgumentException.class, e.getClass());
|
||||
assertTrue("Error message string is missing language",e.getMessage().contains("language"));
|
||||
Assertions.assertNotNull(e);
|
||||
Assertions.assertEquals(IllegalArgumentException.class, e.getClass());
|
||||
Assertions.assertTrue(e.getMessage().contains("language"), "Error message string is missing language");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLanguageVersionNonExcisting() throws Exception {
|
||||
String language = "test";
|
||||
String version = "99.9";
|
||||
|
@ -90,7 +95,7 @@ public class X4ODriverManagerTest extends TestCase {
|
|||
} catch (Throwable catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull(e);
|
||||
Assertions.assertNotNull(e);
|
||||
/* TODO
|
||||
assertNotNull(e);
|
||||
assertNotNull(e.getCause());
|
||||
|
@ -104,29 +109,33 @@ public class X4ODriverManagerTest extends TestCase {
|
|||
*/
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLanguageCount() throws Exception {
|
||||
List<String> languages = X4ODriverManager.getX4OLanguages();
|
||||
assertNotNull(languages);
|
||||
assertFalse(languages.isEmpty());
|
||||
Assertions.assertNotNull(languages);
|
||||
Assertions.assertFalse(languages.isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLanguageNames() throws Exception {
|
||||
List<String> languages = X4ODriverManager.getX4OLanguages();
|
||||
assertNotNull(languages);
|
||||
assertTrue("cel language is missing",languages.contains("cel"));
|
||||
assertTrue("eld language is missing",languages.contains("eld"));
|
||||
assertTrue("test language is missing",languages.contains("test"));
|
||||
Assertions.assertNotNull(languages);
|
||||
Assertions.assertTrue(languages.contains("cel"), "cel language is missing");
|
||||
Assertions.assertTrue(languages.contains("eld"), "eld language is missing");
|
||||
Assertions.assertTrue(languages.contains("test"), "test language is missing");
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testLanguagesLoopSpeed() throws Exception {
|
||||
long startTime = System.currentTimeMillis();
|
||||
for (int i=0;i<100;i++) {
|
||||
testLanguageCount();
|
||||
}
|
||||
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 {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -134,11 +143,12 @@ public class X4ODriverManagerTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRegisterDriverNameNull() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -150,11 +160,12 @@ public class X4ODriverManagerTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRegisterDriverNameEmpty() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -166,11 +177,12 @@ public class X4ODriverManagerTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",IllegalArgumentException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("empty"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(IllegalArgumentException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("empty"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRegisterDriverVersionNull() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -182,11 +194,12 @@ public class X4ODriverManagerTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRegisterDriverVersionEmpty() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -198,11 +211,12 @@ public class X4ODriverManagerTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",IllegalArgumentException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("empty"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(IllegalArgumentException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("empty"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeregisterDriverNull() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -210,11 +224,12 @@ public class X4ODriverManagerTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeregisterDriverNameNull() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -226,11 +241,12 @@ public class X4ODriverManagerTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeregisterDriverInstance() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -239,14 +255,14 @@ public class X4ODriverManagerTest extends TestCase {
|
|||
@Override public String getLanguageName() { return "junit-driver-test"; }
|
||||
};
|
||||
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.getX4ODriver("junit-driver-test");
|
||||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",IllegalArgumentException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("junit-driver-test"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(IllegalArgumentException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("junit-driver-test"), "Wrong exception message");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,116 +26,124 @@ import java.net.MalformedURLException;
|
|||
import java.net.URL;
|
||||
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.EnumConverter;
|
||||
import org.x4o.xml.conv.text.URLConverter;
|
||||
import org.x4o.xml.lang.phase.X4OPhaseType;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* DefaultObjectConverterProviderTest test some basic converters.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Jul 24, 2006
|
||||
*/
|
||||
public class DefaultObjectConverterProviderTest extends TestCase {
|
||||
public class DefaultObjectConverterProviderTest {
|
||||
|
||||
Locale locale = Locale.getDefault();
|
||||
|
||||
|
||||
@Test
|
||||
public void testConverterClone() throws Exception {
|
||||
DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true);
|
||||
for (ObjectConverter conv:p.getObjectConverters()) {
|
||||
assertNotNull(conv);
|
||||
Assertions.assertNotNull(conv);
|
||||
ObjectConverter clone = conv.clone();
|
||||
assertNotNull(clone);
|
||||
Assertions.assertNotNull(clone);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConverterBoolean() throws Exception {
|
||||
DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true);
|
||||
ObjectConverter conv = p.getObjectConverterForClass(Boolean.class);
|
||||
assertNotNull(conv);
|
||||
Assertions.assertNotNull(conv);
|
||||
Object result = conv.convertTo("true", locale);
|
||||
assertNotNull(result);
|
||||
assertEquals("Result is not Boolean.class", Boolean.class,result.getClass());
|
||||
assertEquals("Result is not true", true,result);
|
||||
Assertions.assertNotNull(result);
|
||||
Assertions.assertEquals(Boolean.class,result.getClass(), "Result is not Boolean.class");
|
||||
Assertions.assertEquals(true,result, "Result is not true");
|
||||
Object resultBack = conv.convertBack(result, locale);
|
||||
assertNotNull(resultBack);
|
||||
assertEquals("resultBack is not String.class", String.class,resultBack.getClass());
|
||||
assertEquals("resultBack is not true", "true",resultBack);
|
||||
Assertions.assertNotNull(resultBack);
|
||||
Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class");
|
||||
Assertions.assertEquals("true",resultBack, "resultBack is not true");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConverterInteger() throws Exception {
|
||||
DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true);
|
||||
ObjectConverter conv = p.getObjectConverterForClass(Integer.class);
|
||||
assertNotNull(conv);
|
||||
Assertions.assertNotNull(conv);
|
||||
Object result = conv.convertTo("123", locale);
|
||||
assertNotNull(result);
|
||||
assertEquals("Result is not Integer.class", Integer.class,result.getClass());
|
||||
assertEquals("Result is not 123", 123,result);
|
||||
Assertions.assertNotNull(result);
|
||||
Assertions.assertEquals(Integer.class,result.getClass(), "Result is not Integer.class");
|
||||
Assertions.assertEquals(123,result, "Result is not 123");
|
||||
Object resultBack = conv.convertBack(result, locale);
|
||||
assertNotNull(resultBack);
|
||||
assertEquals("resultBack is not String.class", String.class,resultBack.getClass());
|
||||
assertEquals("resultBack is not 123", "123",resultBack);
|
||||
Assertions.assertNotNull(resultBack);
|
||||
Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class");
|
||||
Assertions.assertEquals("123",resultBack, "resultBack is not 123");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConverterFloat() throws Exception {
|
||||
DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true);
|
||||
ObjectConverter conv = p.getObjectConverterForClass(Float.class);
|
||||
assertNotNull(conv);
|
||||
Assertions.assertNotNull(conv);
|
||||
Object result = conv.convertTo("123.23", locale);
|
||||
assertNotNull(result);
|
||||
assertEquals("Result is not Float.class", Float.class,result.getClass());
|
||||
assertEquals("Result is not 123.23", 123.23F,result);
|
||||
Assertions.assertNotNull(result);
|
||||
Assertions.assertEquals(Float.class,result.getClass(), "Result is not Float.class");
|
||||
Assertions.assertEquals(123.23F,result, "Result is not 123.23");
|
||||
Object resultBack = conv.convertBack(result, locale);
|
||||
assertNotNull(resultBack);
|
||||
assertEquals("resultBack is not String.class", String.class,resultBack.getClass());
|
||||
assertEquals("resultBack is not 123.23", "123.23",resultBack);
|
||||
Assertions.assertNotNull(resultBack);
|
||||
Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class");
|
||||
Assertions.assertEquals("123.23",resultBack, "resultBack is not 123.23");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConverterLong() throws Exception {
|
||||
DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true);
|
||||
ObjectConverter conv = p.getObjectConverterForClass(Long.class);
|
||||
assertNotNull(conv);
|
||||
Assertions.assertNotNull(conv);
|
||||
Object result = conv.convertTo("12323", locale);
|
||||
assertNotNull(result);
|
||||
assertEquals("Result is not Long.class", Long.class,result.getClass());
|
||||
assertEquals("Result is not 12323", 12323L,result);
|
||||
Assertions.assertNotNull(result);
|
||||
Assertions.assertEquals(Long.class,result.getClass(), "Result is not Long.class");
|
||||
Assertions.assertEquals(12323L,result, "Result is not 12323");
|
||||
Object resultBack = conv.convertBack(result, locale);
|
||||
assertNotNull(resultBack);
|
||||
assertEquals("resultBack is not String.class", String.class,resultBack.getClass());
|
||||
assertEquals("resultBack is not 12323", "12323",resultBack);
|
||||
Assertions.assertNotNull(resultBack);
|
||||
Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class");
|
||||
Assertions.assertEquals("12323",resultBack, "resultBack is not 12323");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConverterDouble() throws Exception {
|
||||
DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true);
|
||||
ObjectConverter conv = p.getObjectConverterForClass(Double.class);
|
||||
assertNotNull(conv);
|
||||
Assertions.assertNotNull(conv);
|
||||
Object result = conv.convertTo("1232.3", locale);
|
||||
assertNotNull(result);
|
||||
assertEquals("Result is not Double.class", Double.class,result.getClass());
|
||||
assertEquals("Result is not 1232.3", 1232.3D,result);
|
||||
Assertions.assertNotNull(result);
|
||||
Assertions.assertEquals(Double.class,result.getClass(), "Result is not Double.class");
|
||||
Assertions.assertEquals(1232.3D,result, "Result is not 1232.3");
|
||||
Object resultBack = conv.convertBack(result, locale);
|
||||
assertNotNull(resultBack);
|
||||
assertEquals("resultBack is not String.class", String.class,resultBack.getClass());
|
||||
assertEquals("resultBack is not 1232.3", "1232.3",resultBack);
|
||||
Assertions.assertNotNull(resultBack);
|
||||
Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class");
|
||||
Assertions.assertEquals("1232.3",resultBack, "resultBack is not 1232.3");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConverterUrl() throws Exception {
|
||||
DefaultObjectConverterProvider p = new DefaultObjectConverterProvider(true);
|
||||
ObjectConverter conv = p.getObjectConverterForClass(URL.class);
|
||||
assertNotNull(conv);
|
||||
Assertions.assertNotNull(conv);
|
||||
Object result = conv.convertTo("http://www.x4o.org", locale);
|
||||
assertNotNull(result);
|
||||
assertEquals("Result is not Url.class", URL.class,result.getClass());
|
||||
assertEquals("Result is not http://www.x4o.org", new URL("http://www.x4o.org"),result);
|
||||
Assertions.assertNotNull(result);
|
||||
Assertions.assertEquals(URL.class,result.getClass(), "Result is not Url.class");
|
||||
Assertions.assertEquals(new URL("http://www.x4o.org"),result, "Result is not http://www.x4o.org");
|
||||
Object resultBack = conv.convertBack(result, locale);
|
||||
assertNotNull(resultBack);
|
||||
assertEquals("resultBack is not String.class", String.class,resultBack.getClass());
|
||||
assertEquals("resultBack is not http://www.x4o.org", "http://www.x4o.org",resultBack);
|
||||
Assertions.assertNotNull(resultBack);
|
||||
Assertions.assertEquals(String.class,resultBack.getClass(), "resultBack is not String.class");
|
||||
Assertions.assertEquals("http://www.x4o.org",resultBack, "resultBack is not http://www.x4o.org");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConverterUrlException() throws Exception {
|
||||
URLConverter conv = new URLConverter();
|
||||
Exception e = null;
|
||||
|
@ -144,25 +152,26 @@ public class DefaultObjectConverterProviderTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull(e);
|
||||
assertNotNull(e.getCause());
|
||||
assertEquals(ObjectConverterException.class, e.getClass());
|
||||
assertEquals(MalformedURLException.class, e.getCause().getClass());
|
||||
assertTrue("Error message string is missing error",e.getMessage().contains("error"));
|
||||
Assertions.assertNotNull(e);
|
||||
Assertions.assertNotNull(e.getCause());
|
||||
Assertions.assertEquals(ObjectConverterException.class, e.getClass());
|
||||
Assertions.assertEquals(MalformedURLException.class, e.getCause().getClass());
|
||||
Assertions.assertTrue(e.getMessage().contains("error"), "Error message string is missing error");
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testConverterEnum() throws Exception {
|
||||
EnumConverter convOrg = new EnumConverter();
|
||||
convOrg.setEnumClass(X4OPhaseType.class.getName());
|
||||
ObjectConverter conv = convOrg.clone();
|
||||
Object result = conv.convertTo("XML_READ", locale);
|
||||
assertNotNull(result);
|
||||
assertEquals("XML_READ", result.toString());
|
||||
Assertions.assertNotNull(result);
|
||||
Assertions.assertEquals("XML_READ", result.toString());
|
||||
Object resultBack = conv.convertBack(result, locale);
|
||||
assertEquals("XML_READ", resultBack.toString());
|
||||
Assertions.assertEquals("XML_READ", resultBack.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConverterEnumError() throws Exception {
|
||||
EnumConverter convOrg = new EnumConverter();
|
||||
convOrg.setEnumClass(X4OPhaseType.class.getName());
|
||||
|
@ -174,11 +183,12 @@ public class DefaultObjectConverterProviderTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull(e);
|
||||
assertEquals(ObjectConverterException.class, e.getClass());
|
||||
assertTrue(e.getMessage().contains("EnumError"));
|
||||
Assertions.assertNotNull(e);
|
||||
Assertions.assertEquals(ObjectConverterException.class, e.getClass());
|
||||
Assertions.assertTrue(e.getMessage().contains("EnumError"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConverterEnumNullError() throws Exception {
|
||||
EnumConverter conv = new EnumConverter();
|
||||
Exception e = null;
|
||||
|
@ -187,21 +197,23 @@ public class DefaultObjectConverterProviderTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull(e);
|
||||
assertEquals(ObjectConverterException.class, e.getClass());
|
||||
assertTrue(e.getMessage().contains("enumClass"));
|
||||
Assertions.assertNotNull(e);
|
||||
Assertions.assertEquals(ObjectConverterException.class, e.getClass());
|
||||
Assertions.assertTrue(e.getMessage().contains("enumClass"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConverterClass() throws Exception {
|
||||
ClassConverter classOrg = new ClassConverter();
|
||||
ObjectConverter conv = classOrg.clone();
|
||||
Object result = conv.convertTo("java.lang.Object", locale);
|
||||
assertNotNull(result);
|
||||
assertEquals(Object.class, result);
|
||||
Assertions.assertNotNull(result);
|
||||
Assertions.assertEquals(Object.class, result);
|
||||
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 {
|
||||
ClassConverter classOrg = new ClassConverter();
|
||||
ObjectConverter conv = classOrg.clone();
|
||||
|
@ -212,8 +224,8 @@ public class DefaultObjectConverterProviderTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull(e);
|
||||
assertEquals(ObjectConverterException.class, e.getClass());
|
||||
assertTrue(e.getMessage().contains("ObjectError"));
|
||||
Assertions.assertNotNull(e);
|
||||
Assertions.assertEquals(ObjectConverterException.class, e.getClass());
|
||||
Assertions.assertTrue(e.getMessage().contains("ObjectError"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,6 +24,8 @@ package org.x4o.xml.core;
|
|||
|
||||
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.io.X4OReader;
|
||||
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.TestObjectRoot;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Tests a simple x4o xml language.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Jul 24, 2006
|
||||
*/
|
||||
public class AttributeBeanTest extends TestCase {
|
||||
public class AttributeBeanTest {
|
||||
|
||||
@Test
|
||||
public void testBeanBody() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
|
||||
TestObjectRoot root = reader.readResource("tests/attributes/test-body.xml");
|
||||
assertNotNull(root);
|
||||
Assertions.assertNotNull(root);
|
||||
List<TestObjectChild> childs = root.getTestObjectChilds();
|
||||
assertEquals(2,childs.size());
|
||||
Assertions.assertEquals(2,childs.size());
|
||||
TestObjectChild child0 = childs.get(0);
|
||||
TestObjectChild child1 = childs.get(1);
|
||||
assertEquals("attr-name",child0.getName());
|
||||
assertEquals("body-name",child1.getName());
|
||||
Assertions.assertEquals("attr-name-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕",child0.getName());
|
||||
Assertions.assertEquals("body-name-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕",child1.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBeanProperties() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
|
||||
TestObjectRoot root = reader.readResource("tests/attributes/test-bean.xml");
|
||||
assertNotNull(root);
|
||||
assertNotNull(root.getTestBeans());
|
||||
assertEquals(2, root.getTestBeans().size());
|
||||
Assertions.assertNotNull(root);
|
||||
Assertions.assertNotNull(root.getTestBeans());
|
||||
Assertions.assertEquals(2, root.getTestBeans().size());
|
||||
TestBean b = root.getTestBeans().get(0);
|
||||
TestBean beanPublic = root.getTestBeans().get(1);
|
||||
|
||||
assertEquals(123 ,0+ b.getPrivateIntegerTypeField());
|
||||
assertEquals(123 ,0+ b.getPrivateIntegerObjectField());
|
||||
Assertions.assertEquals(123 ,0+ b.getPrivateIntegerTypeField());
|
||||
Assertions.assertEquals(123 ,0+ b.getPrivateIntegerObjectField());
|
||||
|
||||
assertEquals(123l ,0+ b.getPrivateLongTypeField());
|
||||
assertEquals(123l ,0+ b.getPrivateLongObjectField());
|
||||
Assertions.assertEquals(123l ,0+ b.getPrivateLongTypeField());
|
||||
Assertions.assertEquals(123l ,0+ b.getPrivateLongObjectField());
|
||||
|
||||
assertEquals(123.45d ,0+ b.getPrivateDoubleTypeField());
|
||||
assertEquals(123.45d ,0+ b.getPrivateDoubleObjectField());
|
||||
Assertions.assertEquals(123.45d ,0+ b.getPrivateDoubleTypeField());
|
||||
Assertions.assertEquals(123.45d ,0+ b.getPrivateDoubleObjectField());
|
||||
|
||||
assertEquals(123.45f ,0+ b.getPrivateFloatTypeField());
|
||||
assertEquals(123.45f ,0+ b.getPrivateFloatObjectField());
|
||||
Assertions.assertEquals(123.45f ,0+ b.getPrivateFloatTypeField());
|
||||
Assertions.assertEquals(123.45f ,0+ b.getPrivateFloatObjectField());
|
||||
|
||||
assertEquals(67 ,0+ b.getPrivateByteTypeField());
|
||||
assertEquals(67 ,0+ b.getPrivateByteObjectField());
|
||||
Assertions.assertEquals(67 ,0+ b.getPrivateByteTypeField());
|
||||
Assertions.assertEquals(67 ,0+ b.getPrivateByteObjectField());
|
||||
|
||||
assertEquals(true, b.isPrivateBooleanTypeField());
|
||||
assertEquals(new Boolean(true), b.getPrivateBooleanObjectField());
|
||||
Assertions.assertEquals(true, b.isPrivateBooleanTypeField());
|
||||
Assertions.assertEquals(new Boolean(true), b.getPrivateBooleanObjectField());
|
||||
|
||||
assertEquals('W' ,0+ b.getPrivateCharTypeField());
|
||||
assertEquals('C' ,0+ b.getPrivateCharObjectField());
|
||||
Assertions.assertEquals('W' ,0+ b.getPrivateCharTypeField());
|
||||
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());
|
||||
|
||||
Assertions.assertEquals("x4o-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕" ,beanPublic.publicStringObjectField);
|
||||
//Assertions.assertEquals("x4o-ᒡᒢᑊᒻᒻᓫᔿ" ,beanPublic.publicStringObjectFieldUnicodeᒡᒢᑊᒻᒻᓫᔿ); // SAX fails
|
||||
Assertions.assertEquals("x4o-仙上主天" ,beanPublic.publicStringObjectFieldUnicode仙上主天);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,12 +24,13 @@ package org.x4o.xml.core;
|
|||
|
||||
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.io.X4OReader;
|
||||
import org.x4o.xml.test.TestDriver;
|
||||
import org.x4o.xml.test.models.TestObjectRoot;
|
||||
import org.xml.sax.SAXException;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Tests a simple x4o xml language.
|
||||
|
@ -37,56 +38,61 @@ import junit.framework.TestCase;
|
|||
* @author Willem Cazander
|
||||
* @version 1.0 Jul 24, 2006
|
||||
*/
|
||||
public class EmptyXmlTest extends TestCase {
|
||||
|
||||
public class EmptyXmlTest {
|
||||
|
||||
@Test
|
||||
public void testFileNotFound() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
try {
|
||||
reader.readFile("tests/empty-xml/non-excisting-file.xml");
|
||||
} catch (FileNotFoundException e) {
|
||||
assertEquals(true, e.getMessage().contains("non-excisting-file.xml"));
|
||||
Assertions.assertEquals(true, e.getMessage().contains("non-excisting-file.xml"));
|
||||
return;
|
||||
}
|
||||
assertEquals(true,false);
|
||||
Assertions.assertEquals(true,false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResourceNotFound() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
try {
|
||||
reader.readResource("tests/empty-xml/non-excisting-resource.xml");
|
||||
} catch (NullPointerException e) {
|
||||
assertEquals(true,e.getMessage().contains("Could not find resource"));
|
||||
Assertions.assertEquals(true,e.getMessage().contains("Could not find resource"));
|
||||
return;
|
||||
}
|
||||
assertEquals(true,false);
|
||||
Assertions.assertEquals(true,false);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testResourceParsing() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
try {
|
||||
reader.readResource("tests/empty-xml/empty-test.xml");
|
||||
} catch (SAXException e) {
|
||||
assertEquals("No ElementNamespace found for empty namespace.", e.getMessage());
|
||||
// Assertions.assertEquals("No ElementNamespace found for empty namespace.", e.getMessage());
|
||||
return;
|
||||
}
|
||||
assertEquals(true,false);
|
||||
Assertions.assertEquals(true,false);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testResourceEmptyReal() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
try {
|
||||
reader.readResource("tests/empty-xml/empty-real.xml");
|
||||
} catch (SAXException e) {
|
||||
assertEquals(true,e.getMessage().contains("Premature end of file."));
|
||||
Assertions.assertEquals(true,e.getMessage().contains("Premature end of file."));
|
||||
return;
|
||||
}
|
||||
assertEquals(true,false);
|
||||
Assertions.assertEquals(true,false);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testResourceEmptyXml() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
|
@ -97,25 +103,26 @@ public class EmptyXmlTest extends TestCase {
|
|||
if (hasError==false) {
|
||||
hasError = e.getMessage().contains("A well-formed document requires a root element."); // xercesImpl sax message
|
||||
}
|
||||
assertEquals(true,hasError);
|
||||
Assertions.assertEquals(true,hasError);
|
||||
return;
|
||||
}
|
||||
assertEquals(true,false);
|
||||
Assertions.assertEquals(true,false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEmptyX40() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
assertNotNull(driver);
|
||||
Assertions.assertNotNull(driver);
|
||||
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
assertNotNull(reader);
|
||||
Assertions.assertNotNull(reader);
|
||||
|
||||
TestObjectRoot root = reader.readResource("tests/empty-xml/empty-x4o.xml");
|
||||
assertNotNull(root);
|
||||
Assertions.assertNotNull(root);
|
||||
|
||||
assertEquals(true,root.getTestBeans().isEmpty());
|
||||
assertEquals(true,root.getTestObjectChilds().isEmpty());
|
||||
assertEquals(true,root.getTestObjectParents().isEmpty());
|
||||
assertEquals(true,root.getTestObjects().isEmpty());
|
||||
Assertions.assertEquals(true,root.getTestBeans().isEmpty());
|
||||
Assertions.assertEquals(true,root.getTestObjectChilds().isEmpty());
|
||||
Assertions.assertEquals(true,root.getTestObjectParents().isEmpty());
|
||||
Assertions.assertEquals(true,root.getTestObjects().isEmpty());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
*/
|
||||
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.X4OReaderSession;
|
||||
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.models.TestObjectRoot;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Tests emptry uri namespace laoding.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 May 1, 2011
|
||||
*/
|
||||
public class NamespaceUriTest extends TestCase {
|
||||
public class NamespaceUriTest {
|
||||
|
||||
@Test
|
||||
public void testSimpleUri() throws Exception {
|
||||
X4OLanguageSession context = null;
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
|
@ -46,26 +47,28 @@ public class NamespaceUriTest extends TestCase {
|
|||
reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE);
|
||||
try {
|
||||
context = reader.readResourceSession("tests/namespace/uri-simple.xml");
|
||||
assertEquals(true,context.getRootElement().getChilderen().size()==1);
|
||||
Assertions.assertEquals(true,context.getRootElement().getChilderen().size()==1);
|
||||
} finally {
|
||||
reader.releaseSession(context);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEmptyUri() throws Exception {
|
||||
X4OLanguageSession context = null;
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
|
||||
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 {
|
||||
context = reader.readResourceSession("tests/namespace/uri-empty.xml");
|
||||
assertEquals(true,context.getRootElement().getChilderen().size()==1);
|
||||
Assertions.assertEquals(true,context.getRootElement().getChilderen().size()==1);
|
||||
} finally {
|
||||
reader.releaseSession(context);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSchemaUri() throws Exception {
|
||||
X4OLanguageSession context = null;
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
|
@ -73,7 +76,7 @@ public class NamespaceUriTest extends TestCase {
|
|||
reader.addPhaseSkip(X4OPhaseLanguageRead.READ_RELEASE);
|
||||
try {
|
||||
context = reader.readResourceSession("tests/namespace/uri-schema.xml");
|
||||
assertEquals(true,context.getRootElement().getChilderen().size()==1);
|
||||
Assertions.assertEquals(true,context.getRootElement().getChilderen().size()==1);
|
||||
} finally {
|
||||
reader.releaseSession(context);
|
||||
}
|
||||
|
|
|
@ -30,6 +30,8 @@ import java.io.IOException;
|
|||
import java.io.InputStreamReader;
|
||||
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.io.DefaultX4OReader;
|
||||
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.models.TestObjectRoot;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* X4ODebugWriterTest runs parser with debug output.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Aug 26, 2012
|
||||
*/
|
||||
public class X4ODebugWriterTest extends TestCase {
|
||||
public class X4ODebugWriterTest {
|
||||
|
||||
private File createDebugFile() throws IOException {
|
||||
File debugFile = File.createTempFile("test-debug", ".xml");
|
||||
|
@ -72,6 +72,7 @@ public class X4ODebugWriterTest extends TestCase {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDebugOutputReader() throws Exception {
|
||||
File debugFile = createDebugFile();
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
|
@ -79,17 +80,18 @@ public class X4ODebugWriterTest extends TestCase {
|
|||
reader.setProperty(DefaultX4OReader.DEBUG_OUTPUT_STREAM, new FileOutputStream(debugFile));
|
||||
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);
|
||||
assertNotNull(debug);
|
||||
assertFalse("no debug content",debug.length()==0);
|
||||
assertTrue("debug content to small",debug.length()>20);
|
||||
Assertions.assertNotNull(debug);
|
||||
Assertions.assertFalse(debug.length()==0, "no debug content");
|
||||
Assertions.assertTrue(debug.length()>20, "debug content to small");
|
||||
|
||||
//System.out.println("=================== Reader Output ======================");
|
||||
//System.out.println(debug);
|
||||
debugFile.delete();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDebugOutputWriter() throws Exception {
|
||||
File debugFile = createDebugFile();
|
||||
File writeFile = createDebugFile();
|
||||
|
@ -101,11 +103,11 @@ public class X4ODebugWriterTest extends TestCase {
|
|||
writer.setProperty(DefaultX4OWriter.DEBUG_OUTPUT_STREAM, new FileOutputStream(debugFile));
|
||||
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);
|
||||
assertNotNull(debug);
|
||||
assertFalse("no debug content",debug.length()==0);
|
||||
assertTrue("debug content to small",debug.length()>20);
|
||||
Assertions.assertNotNull(debug);
|
||||
Assertions.assertFalse(debug.length()==0, "no debug content");
|
||||
Assertions.assertTrue(debug.length()>20, "debug content to small");
|
||||
|
||||
//System.out.println("=================== Writer Output ======================");
|
||||
//System.out.println(debug);
|
||||
|
|
|
@ -24,6 +24,8 @@ package org.x4o.xml.core;
|
|||
|
||||
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.eld.CelDriver;
|
||||
import org.x4o.xml.io.DefaultX4OReader;
|
||||
|
@ -36,16 +38,15 @@ import org.xml.sax.EntityResolver;
|
|||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* X4OLanguageClassLoaderTest test classloader.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Aug 27, 2012
|
||||
*/
|
||||
public class X4OEntityResolverTest extends TestCase {
|
||||
|
||||
public class X4OEntityResolverTest {
|
||||
|
||||
@Test
|
||||
public void testElementLangugeNull() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -53,18 +54,20 @@ public class X4OEntityResolverTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull(e);
|
||||
assertEquals(NullPointerException.class, e.getClass());
|
||||
assertTrue(e.getMessage().contains("null"));
|
||||
Assertions.assertNotNull(e);
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass());
|
||||
Assertions.assertTrue(e.getMessage().contains("null"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResolve() throws Exception {
|
||||
X4ODriver<?> driver = new CelDriver();
|
||||
X4OEntityResolver resolver = new X4OEntityResolver(driver.createLanguage().createLanguageSession(),DefaultX4OReader.DEFAULT_PROPERTY_CONFIG);
|
||||
InputSource input = resolver.resolveEntity("","http://cel.x4o.org/xml/ns/cel-root-1.0.xsd");
|
||||
assertNotNull(input);
|
||||
Assertions.assertNotNull(input);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testResolveMissing() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = new TestDriver();
|
||||
X4OEntityResolver resolver = new X4OEntityResolver(driver.createLanguage().createLanguageSession(),DefaultX4OReader.DEFAULT_PROPERTY_CONFIG);
|
||||
|
@ -74,11 +77,12 @@ public class X4OEntityResolverTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull(e);
|
||||
assertEquals(SAXException.class, e.getClass());
|
||||
assertTrue(e.getMessage().contains("missing-resource"));
|
||||
Assertions.assertNotNull(e);
|
||||
Assertions.assertEquals(SAXException.class, e.getClass());
|
||||
Assertions.assertTrue(e.getMessage().contains("missing-resource"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResolveProperty() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = new TestDriver();
|
||||
X4OLanguageSession language = driver.createLanguage().createLanguageSession();
|
||||
|
@ -92,10 +96,11 @@ public class X4OEntityResolverTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNull(e);
|
||||
assertNotNull(input);
|
||||
Assertions.assertNull(e);
|
||||
Assertions.assertNotNull(input);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResolvePropertyNull() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = new TestDriver();
|
||||
X4OLanguageSession language = driver.createLanguage().createLanguageSession();
|
||||
|
@ -108,9 +113,9 @@ public class X4OEntityResolverTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull(e);
|
||||
assertEquals(SAXException.class, e.getClass());
|
||||
assertTrue(e.getMessage().contains("null"));
|
||||
Assertions.assertNotNull(e);
|
||||
Assertions.assertEquals(SAXException.class, e.getClass());
|
||||
Assertions.assertTrue(e.getMessage().contains("null"));
|
||||
}
|
||||
|
||||
public class TestEntityResolver implements EntityResolver {
|
||||
|
|
|
@ -22,44 +22,48 @@
|
|||
*/
|
||||
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.ElementClass;
|
||||
import org.x4o.xml.element.ElementClassAttribute;
|
||||
import org.x4o.xml.lang.X4OLanguageConfiguration;
|
||||
import org.x4o.xml.test.TestDriver;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Tests some resulting options from the language config.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Jan 20, 2012
|
||||
*/
|
||||
public class X4OParserConfigurationTest extends TestCase {
|
||||
public class X4OParserConfigurationTest {
|
||||
|
||||
TestDriver driver;
|
||||
X4OLanguageConfiguration config;
|
||||
static TestDriver driver;
|
||||
static X4OLanguageConfiguration config;
|
||||
|
||||
public void setUp() throws Exception {
|
||||
@BeforeAll
|
||||
public static void setUp() throws Exception {
|
||||
driver = TestDriver.getInstance();
|
||||
config = driver.createLanguage().getLanguageConfiguration();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testParserConfigurationLanguage() {
|
||||
assertEquals("test",driver.getLanguageName());
|
||||
assertEquals(X4OLanguageConfiguration.DEFAULT_LANG_MODULES_FILE,config.getLanguageResourceModulesFileName());
|
||||
assertEquals(X4OLanguageConfiguration.DEFAULT_LANG_PATH_PREFIX,config.getLanguageResourcePathPrefix());
|
||||
Assertions.assertEquals("test",driver.getLanguageName());
|
||||
Assertions.assertEquals(X4OLanguageConfiguration.DEFAULT_LANG_MODULES_FILE,config.getLanguageResourceModulesFileName());
|
||||
Assertions.assertEquals(X4OLanguageConfiguration.DEFAULT_LANG_PATH_PREFIX,config.getLanguageResourcePathPrefix());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testParserConfigurationElement() {
|
||||
assertNotNull(config.getDefaultElement());
|
||||
assertTrue("No Element Inteface", Element.class.isAssignableFrom(config.getDefaultElement()));
|
||||
Assertions.assertNotNull(config.getDefaultElement());
|
||||
Assertions.assertTrue(Element.class.isAssignableFrom(config.getDefaultElement()), "No Element Interface");
|
||||
|
||||
assertNotNull(config.getDefaultElementClass());
|
||||
assertTrue("No ElementClass Inteface", ElementClass.class.isAssignableFrom(config.getDefaultElementClass()));
|
||||
Assertions.assertNotNull(config.getDefaultElementClass());
|
||||
Assertions.assertTrue(ElementClass.class.isAssignableFrom(config.getDefaultElementClass()), "No ElementClass Interface");
|
||||
|
||||
assertNotNull(config.getDefaultElementClassAttribute());
|
||||
assertTrue("No ElementClass Inteface", ElementClassAttribute.class.isAssignableFrom(config.getDefaultElementClassAttribute()));
|
||||
Assertions.assertNotNull(config.getDefaultElementClassAttribute());
|
||||
Assertions.assertTrue(ElementClassAttribute.class.isAssignableFrom(config.getDefaultElementClassAttribute()), "No ElementClassAttribute Interface");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,41 +25,44 @@ package org.x4o.xml.core;
|
|||
import java.util.Collection;
|
||||
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.phase.DefaultX4OPhaseManager;
|
||||
import org.x4o.xml.lang.phase.X4OPhase;
|
||||
import org.x4o.xml.lang.phase.X4OPhaseType;
|
||||
import org.x4o.xml.test.TestDriver;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Tests some code for testing x4o phases.
|
||||
* *
|
||||
* @author Willem Cazander
|
||||
* @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;
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testPhases() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OLanguageSession context = driver.createLanguage().createLanguageSession();
|
||||
DefaultX4OPhaseManager manager = (DefaultX4OPhaseManager)context.getLanguage().getPhaseManager();
|
||||
Collection<X4OPhase> phasesAll = manager.getAllPhases();
|
||||
List<X4OPhase> phases = manager.getOrderedPhases(X4OPhaseType.XML_READ);
|
||||
assertNotNull(phases);
|
||||
assertFalse(phases.isEmpty());
|
||||
assertNotNull(phasesAll);
|
||||
assertFalse(phasesAll.isEmpty());
|
||||
Assertions.assertNotNull(phases);
|
||||
Assertions.assertFalse(phases.isEmpty());
|
||||
Assertions.assertNotNull(phasesAll);
|
||||
Assertions.assertFalse(phasesAll.isEmpty());
|
||||
for (X4OPhase phase:phases) {
|
||||
assertNotNull(phase);
|
||||
assertNotNull(phase.getId());
|
||||
Assertions.assertNotNull(phase);
|
||||
Assertions.assertNotNull(phase.getId());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -75,7 +78,7 @@ public class X4OPhaseManagerTest extends TestCase {
|
|||
} catch (NullPointerException ee) {
|
||||
e = ee;
|
||||
}
|
||||
assertEquals(true, e!=null );
|
||||
Assertions.assertEquals(true, e!=null );
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
*/
|
||||
package org.x4o.xml.eld;
|
||||
|
||||
import org.junit.Ignore;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.x4o.xml.X4ODriver;
|
||||
import org.x4o.xml.X4ODriverManager;
|
||||
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.X4OLanguageModule;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Tests some code for eld
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Jan 15, 2009
|
||||
*/
|
||||
public class EldParserTest extends TestCase {
|
||||
|
||||
public class EldParserTest {
|
||||
|
||||
@Test
|
||||
public void testNone() {
|
||||
/*
|
||||
X4ODriver<ElementLanguageModule> driver = X4ODriverManager.getX4ODriver(TestDriver.LANGUAGE);
|
||||
|
@ -67,6 +66,7 @@ public class EldParserTest extends TestCase {
|
|||
*/
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRunEldParserCore() throws Exception {
|
||||
|
||||
//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 {
|
||||
if (1 == 1) {
|
||||
return;
|
||||
}
|
||||
X4ODriver<X4OLanguageModule> driver = (X4ODriver<X4OLanguageModule>)X4ODriverManager.getX4ODriver(EldDriver.LANGUAGE_NAME);
|
||||
X4OReader<X4OLanguageModule> reader = driver.createReader();
|
||||
X4OWriter<X4OLanguageModule> writer = driver.createWriter();
|
||||
|
|
|
@ -22,22 +22,22 @@
|
|||
*/
|
||||
package org.x4o.xml.eld;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.x4o.xml.X4ODriver;
|
||||
import org.x4o.xml.io.DefaultX4OReader;
|
||||
import org.x4o.xml.io.X4OReader;
|
||||
import org.x4o.xml.test.TestDriver;
|
||||
import org.x4o.xml.test.models.TestObjectRoot;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* EldValidatingTest runs parser in validation mode.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Aug 22, 2012
|
||||
*/
|
||||
public class EldValidatingTest extends TestCase {
|
||||
|
||||
public class EldValidatingTest {
|
||||
|
||||
@Test
|
||||
public void testValidation() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
|
|
|
@ -26,27 +26,26 @@ import java.io.File;
|
|||
import java.util.HashMap;
|
||||
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.X4ODriverManager;
|
||||
import org.x4o.xml.eld.CelDriver;
|
||||
import org.x4o.xml.eld.EldDriver;
|
||||
import org.x4o.xml.eld.EldModuleLoaderCore;
|
||||
import org.x4o.xml.eld.xsd.EldXsdLanguageTask;
|
||||
import org.x4o.xml.io.X4OWriterTest;
|
||||
import org.x4o.xml.io.sax.ext.ContentWriterXml;
|
||||
import org.x4o.xml.io.sax.ext.PropertyConfig;
|
||||
import org.x4o.xml.lang.task.X4OLanguageTask;
|
||||
import org.x4o.xml.test.swixml.SwiXmlDriver;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Tests some code for eld schema generating
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Auh 16, 2012
|
||||
*/
|
||||
public class EldXsdLanguageTaskTest extends TestCase {
|
||||
public class EldXsdLanguageTaskTest {
|
||||
|
||||
private File createOutputPath(String dir) throws Exception {
|
||||
File result = new File("target/tests"+File.separator+dir);
|
||||
|
@ -56,6 +55,7 @@ public class EldXsdLanguageTaskTest extends TestCase {
|
|||
return result;
|
||||
}
|
||||
|
||||
@Test
|
||||
private File testSchema(String language,String outputPostfix,Map<String,Object> props) throws Exception {
|
||||
X4ODriver<?> driver = X4ODriverManager.getX4ODriver(language);
|
||||
X4OLanguageTask task = driver.getLanguageTask(EldXsdLanguageTask.TASK_ID);
|
||||
|
@ -63,7 +63,7 @@ public class EldXsdLanguageTaskTest extends TestCase {
|
|||
File outputPath = createOutputPath(outputPostfix);
|
||||
config.setProperty(EldXsdWriter.OUTPUT_PATH,outputPath);
|
||||
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());
|
||||
if (props!=null) {
|
||||
for (String key:props.keySet()) {
|
||||
|
@ -72,51 +72,56 @@ public class EldXsdLanguageTaskTest extends TestCase {
|
|||
}
|
||||
}
|
||||
task.createTaskExecutor(config).execute(driver.createLanguage());
|
||||
assertTrue(outputPath.exists());
|
||||
assertTrue(outputPath.list()!=null);
|
||||
Assertions.assertTrue(outputPath.exists());
|
||||
Assertions.assertTrue(outputPath.list()!=null);
|
||||
return outputPath;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEldSchema() throws Exception {
|
||||
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 {
|
||||
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 {
|
||||
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 {
|
||||
Map<String,Object> props = new HashMap<String,Object>();
|
||||
props.put(EldXsdWriter.FILTER_NAMESPACE, EldModuleLoaderCore.CEL_ROOT_URI);
|
||||
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 {
|
||||
Map<String,Object> props = new HashMap<String,Object>();
|
||||
props.put(EldXsdWriter.FILTER_NAMESPACE, EldModuleLoaderCore.CEL_CORE_URI);
|
||||
props.put(EldXsdWriter.FILTER_ELEMENT, "elementInterface");
|
||||
props.put(EldXsdWriter.PROLOG_GENERATED_BY_ENABLE, false);
|
||||
props.put(EldXsdWriter.PROLOG_PROVIDER_INFO_ENABLE, false);
|
||||
props.put(EldXsdWriter.PROLOG_GENERATED_ENABLE, false);
|
||||
props.put(EldXsdWriter.PROLOG_XMLNS_INFO_ENABLE, false);
|
||||
props.put(ContentWriterXml.PROLOG_LICENCE_ENABLE,false);
|
||||
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"));
|
||||
assertNotNull(text);
|
||||
assertTrue(text.contains("elementInterface"));
|
||||
assertFalse(text.contains("module"));
|
||||
assertFalse(text.contains("attributeAlias"));
|
||||
assertFalse(text.contains("bindingHandler"));
|
||||
assertFalse(text.contains("classConverter"));
|
||||
Assertions.assertNotNull(text);
|
||||
Assertions.assertTrue(text.contains("elementInterface"));
|
||||
Assertions.assertFalse(text.contains("module"));
|
||||
Assertions.assertFalse(text.contains("attributeAlias"));
|
||||
Assertions.assertFalse(text.contains("bindingHandler"));
|
||||
Assertions.assertFalse(text.contains("classConverter"));
|
||||
|
||||
assertTrue(text.length()<10000);
|
||||
Assertions.assertTrue(text.length()<10000);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,51 +25,54 @@ package org.x4o.xml.element;
|
|||
import java.io.InputStream;
|
||||
import java.util.logging.LogManager;
|
||||
|
||||
|
||||
import org.x4o.xml.element.DefaultElementObjectPropertyValue;
|
||||
import org.x4o.xml.element.ElementObjectPropertyValueException;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.x4o.xml.test.models.TestBean;
|
||||
import org.x4o.xml.test.models.TestObjectChild;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Tests a simple x4o xml language.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Jul 24, 2006
|
||||
*/
|
||||
public class DefaultElementObjectPropertyValueTest extends TestCase {
|
||||
public class DefaultElementObjectPropertyValueTest {
|
||||
|
||||
DefaultElementObjectPropertyValue helper = new DefaultElementObjectPropertyValue();
|
||||
|
||||
public void setUp() throws Exception {
|
||||
@BeforeAll
|
||||
public static void setUp() throws Exception {
|
||||
// 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 );
|
||||
loggingProperties.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNullValue() throws Exception {
|
||||
|
||||
TestObjectChild obj = new TestObjectChild();
|
||||
obj.setName("test");
|
||||
|
||||
assertEquals("test", obj.getName()); // test org value
|
||||
assertEquals("test", helper.getProperty(obj, "name")); // test null get value
|
||||
Assertions.assertEquals("test", obj.getName()); // test org value
|
||||
Assertions.assertEquals("test", helper.getProperty(obj, "name")); // test null get value
|
||||
|
||||
helper.setProperty(obj, "name", null);
|
||||
|
||||
assertEquals(null, obj.getName()); // test null value
|
||||
assertEquals(null, helper.getProperty(obj, "name")); // test null get value
|
||||
Assertions.assertEquals(null, obj.getName()); // test null value
|
||||
Assertions.assertEquals(null, helper.getProperty(obj, "name")); // test null get value
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIntegerValue() throws Exception {
|
||||
TestObjectChild obj = new TestObjectChild();
|
||||
helper.setProperty(obj, "price", 666);
|
||||
|
||||
assertEquals(666,helper.getProperty(obj, "price"));
|
||||
Assertions.assertEquals(666,helper.getProperty(obj, "price"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testException() throws Exception {
|
||||
TestObjectChild obj = new TestObjectChild();
|
||||
helper.setProperty(obj, "price", 666);
|
||||
|
@ -80,6 +83,17 @@ public class DefaultElementObjectPropertyValueTest extends TestCase {
|
|||
} catch (ElementObjectPropertyValueException not) {
|
||||
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仙上主天"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,21 +22,21 @@
|
|||
*/
|
||||
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.io.X4OReader;
|
||||
import org.x4o.xml.test.TestDriver;
|
||||
import org.x4o.xml.test.models.TestObjectRoot;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* X4OConnectionTest.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Apr 28, 2013
|
||||
*/
|
||||
public class X4OConnectionTest extends TestCase {
|
||||
public class X4OConnectionTest {
|
||||
|
||||
@Test
|
||||
public void testReaderPropertyFailRead() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -46,12 +46,13 @@ public class X4OConnectionTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",IllegalArgumentException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("key"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("No"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(IllegalArgumentException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("key"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("No"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReaderPropertyFail() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -61,12 +62,13 @@ public class X4OConnectionTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",IllegalArgumentException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("key"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("No"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(IllegalArgumentException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("key"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("No"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWriterPropertyFail() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -76,9 +78,9 @@ public class X4OConnectionTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",IllegalArgumentException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("key"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("No"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(IllegalArgumentException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("key"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("No"), "Wrong exception message");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,22 +27,21 @@ import java.io.FileNotFoundException;
|
|||
import java.io.IOException;
|
||||
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.io.X4OReader;
|
||||
import org.x4o.xml.lang.X4OLanguageSession;
|
||||
import org.x4o.xml.test.TestDriver;
|
||||
import org.x4o.xml.test.models.TestBean;
|
||||
import org.x4o.xml.test.models.TestObjectRoot;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* X4OReaderSessionTest.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Apr 15, 2013
|
||||
*/
|
||||
public class X4OReaderSessionTest extends TestCase {
|
||||
public class X4OReaderSessionTest {
|
||||
|
||||
private File copyResourceToTempFile() throws IOException {
|
||||
File tempFile = File.createTempFile("test-resource", ".xml");
|
||||
|
@ -58,18 +57,20 @@ public class X4OReaderSessionTest extends TestCase {
|
|||
return tempFile;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadFileName() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
|
||||
File xmlFile = copyResourceToTempFile();
|
||||
X4OLanguageSession context = reader.readFileSession(xmlFile.getAbsolutePath());
|
||||
TestObjectRoot root = (TestObjectRoot)context.getRootElement().getElementObject();
|
||||
assertNotNull(root);
|
||||
assertTrue(root.getTestBeans().size()>0);
|
||||
Assertions.assertNotNull(root);
|
||||
Assertions.assertTrue(root.getTestBeans().size()>0);
|
||||
TestBean bean = root.getTestBeans().get(0);
|
||||
assertNotNull(bean);
|
||||
Assertions.assertNotNull(bean);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadFileNameNull() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
|
||||
|
@ -80,24 +81,26 @@ public class X4OReaderSessionTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("fileName"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("fileName"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadFile() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
|
||||
File xmlFile = copyResourceToTempFile();
|
||||
X4OLanguageSession context = reader.readFileSession(xmlFile);
|
||||
TestObjectRoot root = (TestObjectRoot)context.getRootElement().getElementObject();
|
||||
assertNotNull(root);
|
||||
assertTrue(root.getTestBeans().size()>0);
|
||||
Assertions.assertNotNull(root);
|
||||
Assertions.assertTrue(root.getTestBeans().size()>0);
|
||||
TestBean bean = root.getTestBeans().get(0);
|
||||
assertNotNull(bean);
|
||||
Assertions.assertNotNull(bean);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadFileNull() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
|
||||
|
@ -108,12 +111,13 @@ public class X4OReaderSessionTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("file"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("file"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadFileNotExists() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
|
||||
|
@ -125,12 +129,13 @@ public class X4OReaderSessionTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",FileNotFoundException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("exists"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("File"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(FileNotFoundException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("exists"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("File"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadFileNotReadable() throws Exception {
|
||||
if (File.separatorChar != '/') {
|
||||
return; // only test on real os.
|
||||
|
@ -143,21 +148,22 @@ public class X4OReaderSessionTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",IOException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("exists"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("read"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(IOException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("exists"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("read"), "Wrong exception message");
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testReadResource() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
|
||||
X4OLanguageSession context = reader.readResourceSession("tests/attributes/test-bean.xml");
|
||||
TestObjectRoot root = (TestObjectRoot)context.getRootElement().getElementObject();
|
||||
assertNotNull(root);
|
||||
Assertions.assertNotNull(root);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadResourceNull() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
|
||||
|
@ -167,29 +173,31 @@ public class X4OReaderSessionTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("resourceName"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("resourceName"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadString() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
|
||||
X4OLanguageSession context = reader.readStringSession(
|
||||
"<?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\"/>"+
|
||||
"</root:root>"
|
||||
);
|
||||
TestObjectRoot root = (TestObjectRoot)context.getRootElement().getElementObject();
|
||||
assertNotNull(root);
|
||||
assertTrue(root.getTestBeans().size()>0);
|
||||
Assertions.assertNotNull(root);
|
||||
Assertions.assertTrue(root.getTestBeans().size()>0);
|
||||
TestBean bean = root.getTestBeans().get(0);
|
||||
assertNotNull(bean);
|
||||
assertEquals("987654321", ""+bean.getPrivateIntegerTypeField());
|
||||
Assertions.assertNotNull(bean);
|
||||
Assertions.assertEquals("987654321", ""+bean.getPrivateIntegerTypeField());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadStringNull() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
|
||||
|
@ -199,24 +207,26 @@ public class X4OReaderSessionTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("string"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("string"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadUrl() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
|
||||
URL xmlUrl = Thread.currentThread().getContextClassLoader().getResource("tests/attributes/test-bean.xml");
|
||||
X4OLanguageSession context = reader.readUrlSession(xmlUrl);
|
||||
TestObjectRoot root = (TestObjectRoot)context.getRootElement().getElementObject();
|
||||
assertNotNull(root);
|
||||
assertTrue(root.getTestBeans().size()>0);
|
||||
Assertions.assertNotNull(root);
|
||||
Assertions.assertTrue(root.getTestBeans().size()>0);
|
||||
TestBean bean = root.getTestBeans().get(0);
|
||||
assertNotNull(bean);
|
||||
Assertions.assertNotNull(bean);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadUrlNull() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
|
||||
|
@ -226,9 +236,9 @@ public class X4OReaderSessionTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("url"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("url"), "Wrong exception message");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,21 +28,20 @@ import java.io.IOException;
|
|||
import java.io.InputStream;
|
||||
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.io.X4OReader;
|
||||
import org.x4o.xml.test.TestDriver;
|
||||
import org.x4o.xml.test.models.TestBean;
|
||||
import org.x4o.xml.test.models.TestObjectRoot;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* X4OReaderTest.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Apr 15, 2013
|
||||
*/
|
||||
public class X4OReaderTest extends TestCase {
|
||||
public class X4OReaderTest {
|
||||
|
||||
private File copyResourceToTempFile() throws IOException {
|
||||
File tempFile = File.createTempFile("test-resource", ".xml");
|
||||
|
@ -58,6 +57,7 @@ public class X4OReaderTest extends TestCase {
|
|||
return tempFile;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadInputStream() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OReaderSession<TestObjectRoot> reader = driver.createReaderSession();
|
||||
|
@ -70,19 +70,21 @@ public class X4OReaderTest extends TestCase {
|
|||
} finally {
|
||||
inputStream.close();
|
||||
}
|
||||
assertNotNull(root);
|
||||
assertTrue(root.getTestBeans().size()>0);
|
||||
Assertions.assertNotNull(root);
|
||||
Assertions.assertTrue(root.getTestBeans().size()>0);
|
||||
TestBean bean = root.getTestBeans().get(0);
|
||||
assertNotNull(bean);
|
||||
Assertions.assertNotNull(bean);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadResource() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
TestObjectRoot root = reader.readResource("tests/attributes/test-bean.xml");
|
||||
assertNotNull(root);
|
||||
Assertions.assertNotNull(root);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadResourceNull() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -92,28 +94,30 @@ public class X4OReaderTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("resourceName"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("resourceName"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadString() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
TestObjectRoot root = reader.readString(
|
||||
"<?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\"/>"+
|
||||
"</root:root>"
|
||||
);
|
||||
assertNotNull(root);
|
||||
assertTrue(root.getTestBeans().size()>0);
|
||||
Assertions.assertNotNull(root);
|
||||
Assertions.assertTrue(root.getTestBeans().size()>0);
|
||||
TestBean bean = root.getTestBeans().get(0);
|
||||
assertNotNull(bean);
|
||||
assertEquals("987654321", ""+bean.getPrivateIntegerTypeField());
|
||||
Assertions.assertNotNull(bean);
|
||||
Assertions.assertEquals("987654321", ""+bean.getPrivateIntegerTypeField());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadStringNull() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -123,23 +127,25 @@ public class X4OReaderTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("string"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("string"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadUrl() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
URL xmlUrl = Thread.currentThread().getContextClassLoader().getResource("tests/attributes/test-bean.xml");
|
||||
TestObjectRoot root = reader.readUrl(xmlUrl);
|
||||
assertNotNull(root);
|
||||
assertTrue(root.getTestBeans().size()>0);
|
||||
Assertions.assertNotNull(root);
|
||||
Assertions.assertTrue(root.getTestBeans().size()>0);
|
||||
TestBean bean = root.getTestBeans().get(0);
|
||||
assertNotNull(bean);
|
||||
Assertions.assertNotNull(bean);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadUrlNull() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -149,23 +155,25 @@ public class X4OReaderTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("url"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("url"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadFileName() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
File xmlFile = copyResourceToTempFile();
|
||||
TestObjectRoot root = reader.readFile(xmlFile.getAbsolutePath());
|
||||
assertNotNull(root);
|
||||
assertTrue(root.getTestBeans().size()>0);
|
||||
Assertions.assertNotNull(root);
|
||||
Assertions.assertTrue(root.getTestBeans().size()>0);
|
||||
TestBean bean = root.getTestBeans().get(0);
|
||||
assertNotNull(bean);
|
||||
Assertions.assertNotNull(bean);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadFileNameNull() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -176,23 +184,25 @@ public class X4OReaderTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("fileName"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("fileName"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadFile() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
File xmlFile = copyResourceToTempFile();
|
||||
TestObjectRoot root = reader.readFile(xmlFile);
|
||||
assertNotNull(root);
|
||||
assertTrue(root.getTestBeans().size()>0);
|
||||
Assertions.assertNotNull(root);
|
||||
Assertions.assertTrue(root.getTestBeans().size()>0);
|
||||
TestBean bean = root.getTestBeans().get(0);
|
||||
assertNotNull(bean);
|
||||
Assertions.assertNotNull(bean);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReadFileNull() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -203,9 +213,9 @@ public class X4OReaderTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("file"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("file"), "Wrong exception message");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,28 +26,27 @@ import java.io.File;
|
|||
import java.io.IOException;
|
||||
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.io.X4OReader;
|
||||
import org.x4o.xml.test.TestDriver;
|
||||
import org.x4o.xml.test.models.TestObjectRoot;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* X4OWriterAttributeTest tests xml write attribute write order.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 May 19, 2013
|
||||
*/
|
||||
public class X4OWriterAttributeTest extends TestCase {
|
||||
public class X4OWriterAttributeTest {
|
||||
|
||||
|
||||
private File createOutputFile() throws IOException {
|
||||
File outputFile = File.createTempFile("test-writer-attr", ".xml");
|
||||
outputFile.deleteOnExit();
|
||||
return outputFile;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWriteAttrNatural() throws Exception {
|
||||
File outputFile = createOutputFile();
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
|
@ -59,13 +58,14 @@ public class X4OWriterAttributeTest extends TestCase {
|
|||
String text = new Scanner( outputFile ).useDelimiter("\\A").next();
|
||||
outputFile.delete();
|
||||
|
||||
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
assertTrue(text.contains("TestAttributeOrderChildNatural"+
|
||||
Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
Assertions.assertTrue(text.contains("TestAttributeOrderChildNatural"+
|
||||
" aaaName=\"NAME_1\" aabName=\"NAME_2\" aacName=\"NAME_3\""+
|
||||
" abaName=\"NAME_4\" abbName=\"NAME_5\" abcName=\"NAME_6\""+
|
||||
" caaName=\"NAME_7\" cabName=\"NAME_8\" cacName=\"NAME_9\""));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWriteAttrOrdered() throws Exception {
|
||||
File outputFile = createOutputFile();
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
|
@ -77,8 +77,8 @@ public class X4OWriterAttributeTest extends TestCase {
|
|||
String text = new Scanner( outputFile ).useDelimiter("\\A").next();
|
||||
outputFile.delete();
|
||||
|
||||
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
assertTrue(text.contains("custom-ordered-child"+
|
||||
Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
Assertions.assertTrue(text.contains("custom-ordered-child"+
|
||||
" cacName=\"NAME_9\" cabName=\"NAME_8\" caaName=\"NAME_7\""+
|
||||
" abcName=\"NAME_6\" abbName=\"NAME_5\" abaName=\"NAME_4\""+
|
||||
" aaaName=\"NAME_1\" aabName=\"NAME_2\" aacName=\"NAME_3\""));
|
||||
|
|
|
@ -27,23 +27,22 @@ import java.io.FileOutputStream;
|
|||
import java.io.IOException;
|
||||
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.element.Element;
|
||||
import org.x4o.xml.io.X4OReader;
|
||||
import org.x4o.xml.lang.X4OLanguageSession;
|
||||
import org.x4o.xml.test.TestDriver;
|
||||
import org.x4o.xml.test.models.TestObjectRoot;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* X4OWriterSessionTest.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Apr 28, 2013
|
||||
*/
|
||||
public class X4OWriterSessionTest extends TestCase {
|
||||
public class X4OWriterSessionTest {
|
||||
|
||||
private File createOutputFile() throws IOException {
|
||||
File outputFile = File.createTempFile("test-writer-context", ".xml");
|
||||
|
@ -69,6 +68,7 @@ public class X4OWriterSessionTest extends TestCase {
|
|||
return context;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWriteFile() throws Exception {
|
||||
File outputFile = createOutputFile();
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
|
@ -78,12 +78,13 @@ public class X4OWriterSessionTest extends TestCase {
|
|||
String text = X4OWriterTest.readFile( outputFile );
|
||||
outputFile.delete();
|
||||
|
||||
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
assertTrue(text.contains("http://test.x4o.org/xml/ns/test-root"));
|
||||
// assertTrue(text.contains("<test-lang:parent name=\"test-bean.xml\"/>"));
|
||||
assertTrue(text.contains("<test-lang:testBean"));
|
||||
Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
Assertions.assertTrue(text.contains("http://test.junit.x4o.org/xml/ns/junit-test-root"));
|
||||
Assertions.assertTrue(text.contains("<junit-test-lang:parent name=\"test-bean.xml\"/>"));
|
||||
Assertions.assertTrue(text.contains("<junit-test-lang:configBean"), text);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWriteFileNull() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OWriterSession<TestObjectRoot> writer = driver.createWriterSession();
|
||||
|
@ -94,12 +95,13 @@ public class X4OWriterSessionTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("file"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("file"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWriteFileName() throws Exception {
|
||||
File outputFile = createOutputFile();
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
|
@ -109,12 +111,13 @@ public class X4OWriterSessionTest extends TestCase {
|
|||
String text = X4OWriterTest.readFile( outputFile );
|
||||
outputFile.delete();
|
||||
|
||||
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
assertTrue(text.contains("http://test.x4o.org/xml/ns/test-root"));
|
||||
// assertTrue(text.contains("<test-lang:parent name=\"test-bean.xml\"/>")); // TODO: fix writer
|
||||
assertTrue(text.contains("<test-lang:testBean"));
|
||||
Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
Assertions.assertTrue(text.contains("http://test.junit.x4o.org/xml/ns/junit-test-root"));
|
||||
Assertions.assertTrue(text.contains("<junit-test-lang:parent name=\"test-bean.xml\"/>"));
|
||||
Assertions.assertTrue(text.contains("<junit-test-lang:configBean"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWriteFileNameNull() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OWriterSession<TestObjectRoot> writer = driver.createWriterSession();
|
||||
|
@ -125,12 +128,13 @@ public class X4OWriterSessionTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull("No exception",e);
|
||||
assertEquals("Wrong exception class",NullPointerException.class, e.getClass());
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("null"));
|
||||
assertTrue("Wrong exception message",e.getMessage().contains("fileName"));
|
||||
Assertions.assertNotNull(e, "No exception");
|
||||
Assertions.assertEquals(NullPointerException.class, e.getClass(), "Wrong exception class");
|
||||
Assertions.assertTrue(e.getMessage().contains("null"), "Wrong exception message");
|
||||
Assertions.assertTrue(e.getMessage().contains("fileName"), "Wrong exception message");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWriteStream() throws Exception {
|
||||
File outputFile = createOutputFile();
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
|
@ -145,9 +149,9 @@ public class X4OWriterSessionTest extends TestCase {
|
|||
String text = X4OWriterTest.readFile( outputFile );
|
||||
outputFile.delete();
|
||||
|
||||
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
assertTrue(text.contains("http://test.x4o.org/xml/ns/test-root"));
|
||||
// assertTrue(text.contains("<test-lang:parent name=\"test-bean.xml\"/>"));
|
||||
assertTrue(text.contains("<test-lang:testBean"));
|
||||
Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
Assertions.assertTrue(text.contains("http://test.junit.x4o.org/xml/ns/junit-test-root"));
|
||||
Assertions.assertTrue(text.contains("<junit-test-lang:parent name=\"test-bean.xml\"/>"));
|
||||
Assertions.assertTrue(text.contains("<junit-test-lang:configBean"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,23 +32,22 @@ import java.io.InputStreamReader;
|
|||
import java.io.OutputStream;
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.x4o.xml.X4ODriver;
|
||||
import org.x4o.xml.io.X4OReader;
|
||||
import org.x4o.xml.test.TestDriver;
|
||||
import org.x4o.xml.test.models.TestObjectRoot;
|
||||
import org.x4o.xml.test.swixml.Accelerator3;
|
||||
import org.x4o.xml.test.swixml.SwiXmlDriver;
|
||||
import org.x4o.xml.test.swixml.SwingEngine;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* X4OWriterTest test xml writer output.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Apr 28, 2013
|
||||
*/
|
||||
public class X4OWriterTest extends TestCase {
|
||||
public class X4OWriterTest {
|
||||
|
||||
private File createOutputFile() throws IOException {
|
||||
File outputFile = File.createTempFile("test-writer", ".xml");
|
||||
|
@ -74,6 +73,7 @@ public class X4OWriterTest extends TestCase {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWriterSwiXmlOutput() throws Exception {
|
||||
Accelerator3 ac3 = new Accelerator3(false);
|
||||
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");
|
||||
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();
|
||||
//System.out.println("Output: '\n"+text+"\n' end in "+outputFile.getAbsolutePath());
|
||||
|
@ -98,6 +98,7 @@ public class X4OWriterTest extends TestCase {
|
|||
outputFile.delete();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWriteFile() throws Exception {
|
||||
File outputFile = createOutputFile();
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
|
@ -109,12 +110,13 @@ public class X4OWriterTest extends TestCase {
|
|||
String text = readFile( outputFile );
|
||||
outputFile.delete();
|
||||
|
||||
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
assertTrue(text.contains("http://test.x4o.org/xml/ns/test-root"));
|
||||
// assertTrue(text.contains("<test-lang:parent name=\"test-bean.xml\"/>"));
|
||||
assertTrue(text.contains("<test-lang:testBean"));
|
||||
Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
Assertions.assertTrue(text.contains("http://test.junit.x4o.org/xml/ns/junit-test-root"));
|
||||
Assertions.assertTrue(text.contains("<junit-test-lang:parent name=\"test-bean.xml\"/>"));
|
||||
Assertions.assertTrue(text.contains("<junit-test-lang:configBean"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWriteFileName() throws Exception {
|
||||
File outputFile = createOutputFile();
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
|
@ -126,12 +128,13 @@ public class X4OWriterTest extends TestCase {
|
|||
String text = readFile( outputFile );
|
||||
outputFile.delete();
|
||||
|
||||
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
assertTrue(text.contains("http://test.x4o.org/xml/ns/test-root"));
|
||||
// assertTrue(text.contains("<test-lang:parent name=\"test-bean.xml\"/>"));
|
||||
assertTrue(text.contains("<test-lang:testBean"));
|
||||
Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
Assertions.assertTrue(text.contains("http://test.junit.x4o.org/xml/ns/junit-test-root"));
|
||||
Assertions.assertTrue(text.contains("<junit-test-lang:parent name=\"test-bean.xml\"/>"));
|
||||
Assertions.assertTrue(text.contains("<junit-test-lang:configBean"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWriteStream() throws Exception {
|
||||
File outputFile = createOutputFile();
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
|
@ -150,9 +153,9 @@ public class X4OWriterTest extends TestCase {
|
|||
String text = readFile( outputFile );
|
||||
outputFile.delete();
|
||||
|
||||
assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
assertTrue(text.contains("http://test.x4o.org/xml/ns/test-root"));
|
||||
// assertTrue(text.contains("<test-lang:parent name=\"test-bean.xml\"/>"));
|
||||
assertTrue(text.contains("<test-lang:testBean"));
|
||||
Assertions.assertTrue(text.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
|
||||
Assertions.assertTrue(text.contains("http://test.junit.x4o.org/xml/ns/junit-test-root"));
|
||||
Assertions.assertTrue(text.contains("<junit-test-lang:parent name=\"test-bean.xml\"/>"));
|
||||
Assertions.assertTrue(text.contains("<junit-test-lang:configBean"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,23 +22,32 @@
|
|||
*/
|
||||
package org.x4o.xml.io.sax;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.StringWriter;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.HashMap;
|
||||
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.xml.sax.InputSource;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.XMLReader;
|
||||
import org.xml.sax.helpers.AttributesImpl;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* ContentWriterXmlAttributeTest test xml attribute printing. *
|
||||
* ContentWriterXmlAttributeTest test xml attribute printing.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 S 17, 2012
|
||||
*/
|
||||
public class ContentWriterXmlAttributeTest extends TestCase {
|
||||
public class ContentWriterXmlAttributeTest {
|
||||
|
||||
@Test
|
||||
public void testAttributeNormal() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -50,11 +59,12 @@ public class ContentWriterXmlAttributeTest extends TestCase {
|
|||
writer.endDocument();
|
||||
|
||||
String output = outputWriter.toString();
|
||||
assertNotNull(output);
|
||||
assertTrue(output.length()>0);
|
||||
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<test attr=\"foobar\"/>"));
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(output.length()>0);
|
||||
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<test attr=\"foobar\"/>"), output);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAttributeEscape() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -66,9 +76,97 @@ public class ContentWriterXmlAttributeTest extends TestCase {
|
|||
writer.endDocument();
|
||||
|
||||
String output = outputWriter.toString();
|
||||
assertNotNull(output);
|
||||
assertTrue(output.length()>0);
|
||||
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<test attr=\"<test/> & 'foobar' is "e;quoted"e;!\"/>"));
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(output.length()>0);
|
||||
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<test attr=\"<test/> & 'foobar' is "e;quoted"e;!\"/>"), 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 {
|
||||
|
@ -96,38 +194,42 @@ public class ContentWriterXmlAttributeTest extends TestCase {
|
|||
return output;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAttributeLongNormal() throws Exception {
|
||||
Map<String,Object> para = new HashMap<String,Object>();
|
||||
String output = createLongAttribute(para);
|
||||
int newlines = output.split("\n").length;
|
||||
assertNotNull(output);
|
||||
assertTrue("outputs: "+newlines,newlines==4);
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(newlines==4, "outputs: "+newlines);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAttributeLongPerLine() throws Exception {
|
||||
Map<String,Object> para = new HashMap<String,Object>();
|
||||
para.put(ContentWriterXml.OUTPUT_LINE_PER_ATTRIBUTE, true);
|
||||
String output = createLongAttribute(para);
|
||||
int newlines = output.split("\n").length;
|
||||
assertNotNull(output);
|
||||
assertTrue("outputs: "+newlines,newlines==20);
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(newlines==20, "outputs: "+newlines);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAttributeLongSplit80() throws Exception {
|
||||
Map<String,Object> para = new HashMap<String,Object>();
|
||||
para.put(ContentWriterXml.OUTPUT_LINE_BREAK_WIDTH, 80);
|
||||
String output = createLongAttribute(para);
|
||||
int newlines = output.split("\n").length;
|
||||
assertNotNull(output);
|
||||
assertTrue("outputs: "+newlines,newlines==16);
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(newlines==16, "outputs: "+newlines);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAttributeLongSplit180() throws Exception {
|
||||
Map<String,Object> para = new HashMap<String,Object>();
|
||||
para.put(ContentWriterXml.OUTPUT_LINE_BREAK_WIDTH, 180);
|
||||
String output = createLongAttribute(para);
|
||||
int newlines = output.split("\n").length;
|
||||
assertNotNull(output);
|
||||
assertTrue("outputs: "+newlines,newlines==11);
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(newlines==11, "outputs: "+newlines);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,18 +24,19 @@ package org.x4o.xml.io.sax;
|
|||
|
||||
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 junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* ContentWriterXmlCDataTest tests cdata xml escaping.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Sep 17, 2013
|
||||
*/
|
||||
public class ContentWriterXmlCDataTest extends TestCase {
|
||||
public class ContentWriterXmlCDataTest {
|
||||
|
||||
@Test
|
||||
public void testCDATANone() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -45,11 +46,12 @@ public class ContentWriterXmlCDataTest extends TestCase {
|
|||
writer.endDocument();
|
||||
|
||||
String output = outputWriter.toString();
|
||||
assertNotNull(output);
|
||||
assertTrue(output.length()>0);
|
||||
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>foobar"));
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(output.length()>0);
|
||||
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>foobar"), output);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCDATANoneTagEscape() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -59,11 +61,12 @@ public class ContentWriterXmlCDataTest extends TestCase {
|
|||
writer.endDocument();
|
||||
|
||||
String output = outputWriter.toString();
|
||||
assertNotNull(output);
|
||||
assertTrue(output.length()>0);
|
||||
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>foobar<test/>"));
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(output.length()>0);
|
||||
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>foobar<test/>"), output);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCDATANormal() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -75,11 +78,12 @@ public class ContentWriterXmlCDataTest extends TestCase {
|
|||
writer.endDocument();
|
||||
|
||||
String output = outputWriter.toString();
|
||||
assertNotNull(output);
|
||||
assertTrue(output.length()>0);
|
||||
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[foobar]]>"));
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(output.length()>0);
|
||||
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[foobar]]>"), output);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCDATAEscapeTag() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -91,11 +95,12 @@ public class ContentWriterXmlCDataTest extends TestCase {
|
|||
writer.endDocument();
|
||||
|
||||
String output = outputWriter.toString();
|
||||
assertNotNull(output);
|
||||
assertTrue(output.length()>0);
|
||||
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[foobar<test/>]]>"));
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(output.length()>0);
|
||||
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[foobar<test/>]]>"), output);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCDATAEscapeStart() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -107,11 +112,12 @@ public class ContentWriterXmlCDataTest extends TestCase {
|
|||
writer.endDocument();
|
||||
|
||||
String output = outputWriter.toString();
|
||||
assertNotNull(output);
|
||||
assertTrue(output.length()>0);
|
||||
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[foobar]]>"));
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(output.length()>0);
|
||||
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[foobar]]>"), output);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCDATAEscapeEnd() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -123,11 +129,29 @@ public class ContentWriterXmlCDataTest extends TestCase {
|
|||
writer.endDocument();
|
||||
|
||||
String output = outputWriter.toString();
|
||||
assertNotNull(output);
|
||||
assertTrue(output.length()>0);
|
||||
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[foobar]]>"));
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(output.length()>0);
|
||||
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 {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -139,11 +163,12 @@ public class ContentWriterXmlCDataTest extends TestCase {
|
|||
writer.endDocument();
|
||||
|
||||
String output = outputWriter.toString();
|
||||
assertNotNull(output);
|
||||
assertTrue(output.length()>0);
|
||||
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[tokens like \'\' are <invalid>]]>"));
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(output.length()>0);
|
||||
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[tokens like \'\' are <invalid>]]>"), output);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCDATAEscapeValid() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -155,8 +180,8 @@ public class ContentWriterXmlCDataTest extends TestCase {
|
|||
writer.endDocument();
|
||||
|
||||
String output = outputWriter.toString();
|
||||
assertNotNull(output);
|
||||
assertTrue(output.length()>0);
|
||||
assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[tokens like \']]>\' are <valid>]]>"));
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(output.length()>0);
|
||||
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><![CDATA[tokens like \']]>\' are <valid>]]>"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,21 +24,21 @@ package org.x4o.xml.io.sax;
|
|||
|
||||
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.xml.sax.SAXException;
|
||||
import org.xml.sax.helpers.AttributesImpl;
|
||||
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* ContentWriterXml test xml escaping.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Aug 26, 2012
|
||||
*/
|
||||
public class ContentWriterXmlTest extends TestCase {
|
||||
public class ContentWriterXmlTest {
|
||||
|
||||
@Test
|
||||
public void testCharactersNormal() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -48,11 +48,12 @@ public class ContentWriterXmlTest extends TestCase {
|
|||
writer.endDocument();
|
||||
|
||||
String output = outputWriter.toString();
|
||||
assertNotNull(output);
|
||||
assertTrue(output.length()>0);
|
||||
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>test is foobar!"));
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(output.length()>0);
|
||||
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>test is foobar!"), output);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCharactersEscape() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -62,11 +63,12 @@ public class ContentWriterXmlTest extends TestCase {
|
|||
writer.endDocument();
|
||||
|
||||
String output = outputWriter.toString();
|
||||
assertNotNull(output);
|
||||
assertTrue(output.length()>0);
|
||||
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><test/> & 'foobar' is "e;quoted"e;!"));
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(output.length()>0);
|
||||
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><test/> & 'foobar' is "e;quoted"e;!"), output);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCommentNormal() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -76,11 +78,12 @@ public class ContentWriterXmlTest extends TestCase {
|
|||
writer.endDocument();
|
||||
|
||||
String output = outputWriter.toString();
|
||||
assertNotNull(output);
|
||||
assertTrue(output.length()>0);
|
||||
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- foobar -->"));
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(output.length()>0);
|
||||
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- foobar -->"), output);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCommentEscape() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -96,11 +99,12 @@ public class ContentWriterXmlTest extends TestCase {
|
|||
// 4) "<!-- foobar -->" - printed
|
||||
|
||||
String output = outputWriter.toString();
|
||||
assertNotNull(output);
|
||||
assertTrue(output.length()>0);
|
||||
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- foobar -->"));
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(output.length()>0);
|
||||
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- foobar -->"), output);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testXmlInvalid() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -116,12 +120,13 @@ public class ContentWriterXmlTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull(e);
|
||||
assertEquals(SAXException.class, e.getClass());
|
||||
assertTrue(e.getMessage().contains("tag"));
|
||||
assertTrue(e.getMessage().contains("foobar"));
|
||||
Assertions.assertNotNull(e);
|
||||
Assertions.assertEquals(SAXException.class, e.getClass());
|
||||
Assertions.assertTrue(e.getMessage().contains("tag"));
|
||||
Assertions.assertTrue(e.getMessage().contains("foobar"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testXmlInvalidEnd() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -136,13 +141,14 @@ public class ContentWriterXmlTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull(e);
|
||||
assertEquals(SAXException.class, e.getClass());
|
||||
assertTrue(e.getMessage().contains("Invalid"));
|
||||
assertTrue(e.getMessage().contains("2"));
|
||||
assertTrue(e.getMessage().contains("open"));
|
||||
Assertions.assertNotNull(e);
|
||||
Assertions.assertEquals(SAXException.class, e.getClass());
|
||||
Assertions.assertTrue(e.getMessage().contains("Invalid"));
|
||||
Assertions.assertTrue(e.getMessage().contains("2"));
|
||||
Assertions.assertTrue(e.getMessage().contains("open"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testProcessingInstruction() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -159,12 +165,13 @@ public class ContentWriterXmlTest extends TestCase {
|
|||
e = catchE;
|
||||
}
|
||||
String output = outputWriter.toString();
|
||||
assertNull(e);
|
||||
assertNotNull(output);
|
||||
assertTrue(output.length()>0);
|
||||
assertTrue(output,output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?target data?>\n<test/>"));
|
||||
Assertions.assertNull(e);
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(output.length()>0);
|
||||
Assertions.assertTrue(output.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?target data?>\n<test/>"), output);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testProcessingInstructionInline() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -182,12 +189,13 @@ public class ContentWriterXmlTest extends TestCase {
|
|||
e = catchE;
|
||||
}
|
||||
String output = outputWriter.toString();
|
||||
assertNull(e);
|
||||
assertNotNull(output);
|
||||
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.assertNull(e);
|
||||
Assertions.assertNotNull(output);
|
||||
Assertions.assertTrue(output.length()>0);
|
||||
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 {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -198,12 +206,13 @@ public class ContentWriterXmlTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull(e);
|
||||
assertEquals(SAXException.class, e.getClass());
|
||||
assertTrue(e.getMessage().contains("instruction"));
|
||||
assertTrue(e.getMessage().contains("start with xml"));
|
||||
Assertions.assertNotNull(e);
|
||||
Assertions.assertEquals(SAXException.class, e.getClass());
|
||||
Assertions.assertTrue(e.getMessage().contains("instruction"));
|
||||
Assertions.assertTrue(e.getMessage().contains("start with xml"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testProcessingInstructionTargetNoneNameChar() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -214,13 +223,14 @@ public class ContentWriterXmlTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull(e);
|
||||
assertEquals(SAXException.class, e.getClass());
|
||||
assertTrue(e.getMessage().contains("instruction"));
|
||||
assertTrue(e.getMessage().contains("invalid name"));
|
||||
assertTrue(e.getMessage().contains("4Prefix"));
|
||||
Assertions.assertNotNull(e);
|
||||
Assertions.assertEquals(SAXException.class, e.getClass());
|
||||
Assertions.assertTrue(e.getMessage().contains("instruction"));
|
||||
Assertions.assertTrue(e.getMessage().contains("invalid name"));
|
||||
Assertions.assertTrue(e.getMessage().contains("4Prefix"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testProcessingInstructionDataNoneChar() throws Exception {
|
||||
StringWriter outputWriter = new StringWriter();
|
||||
ContentWriterXml writer = new ContentWriterXml(outputWriter);
|
||||
|
@ -231,10 +241,10 @@ public class ContentWriterXmlTest extends TestCase {
|
|||
} catch (Exception catchE) {
|
||||
e = catchE;
|
||||
}
|
||||
assertNotNull(e);
|
||||
assertEquals(SAXException.class, e.getClass());
|
||||
assertTrue(e.getMessage().contains("instruction"));
|
||||
assertTrue(e.getMessage().contains("invalid char"));
|
||||
assertTrue(e.getMessage().contains("isInvalidChar=55296"));
|
||||
Assertions.assertNotNull(e);
|
||||
Assertions.assertEquals(SAXException.class, e.getClass());
|
||||
Assertions.assertTrue(e.getMessage().contains("instruction"));
|
||||
Assertions.assertTrue(e.getMessage().contains("invalid char"));
|
||||
Assertions.assertTrue(e.getMessage().contains("isInvalidChar=55296"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,33 +25,34 @@ package org.x4o.xml.lang;
|
|||
import java.io.InputStream;
|
||||
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.lang.X4OLanguage;
|
||||
import org.x4o.xml.lang.X4OLanguageLocal;
|
||||
import org.x4o.xml.lang.DefaultX4OLanguageLoader.VersionedResources;
|
||||
import org.x4o.xml.test.TestDriver;
|
||||
import org.x4o.xml.test.models.TestObjectRoot;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Tests a simple x4o language loader
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Jan 20, 2012
|
||||
*/
|
||||
public class DefaultX4OLanguageLoaderTest extends TestCase {
|
||||
public class DefaultX4OLanguageLoaderTest {
|
||||
|
||||
X4ODriver<TestObjectRoot> driver;
|
||||
X4OLanguage language;
|
||||
DefaultX4OLanguageLoader loader;
|
||||
static X4ODriver<TestObjectRoot> driver;
|
||||
static X4OLanguage language;
|
||||
static DefaultX4OLanguageLoader loader;
|
||||
|
||||
public void setUp() throws Exception {
|
||||
@BeforeAll
|
||||
public static void setUp() throws Exception {
|
||||
driver = TestDriver.getInstance();
|
||||
language = driver.createLanguage();
|
||||
loader = (DefaultX4OLanguageLoader)language.getLanguageConfiguration().getDefaultLanguageLoader().newInstance();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLoadingDuplicate() throws Exception {
|
||||
Exception e = null;
|
||||
try {
|
||||
|
@ -59,46 +60,50 @@ public class DefaultX4OLanguageLoaderTest extends TestCase {
|
|||
} catch (Exception ee) {
|
||||
e = ee;
|
||||
}
|
||||
assertNotNull("no duplicate module exception",e);
|
||||
assertTrue("wrong module id.",e.getMessage().contains("test"));
|
||||
Assertions.assertNotNull(e, "no duplicate module exception");
|
||||
Assertions.assertTrue(e.getMessage().contains("test"), "wrong module id.");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testModulesSimple() throws Exception {
|
||||
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");
|
||||
assertNotNull(result);
|
||||
assertFalse(result.isEmpty());
|
||||
assertTrue("Simple test returned non-one result: "+result.size(),result.size()==1);
|
||||
Assertions.assertNotNull(result);
|
||||
Assertions.assertFalse(result.isEmpty());
|
||||
Assertions.assertTrue(result.size()==1, "Simple test returned non-one result: "+result.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testModulesFull() throws Exception {
|
||||
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");
|
||||
assertNotNull(result);
|
||||
assertFalse(result.isEmpty());
|
||||
Assertions.assertNotNull(result);
|
||||
Assertions.assertFalse(result.isEmpty());
|
||||
VersionedResources vr = result.get(0);
|
||||
assertTrue(vr.eldResources.size()>1);
|
||||
assertTrue(vr.moduleLoaders.size()>1);
|
||||
assertTrue(vr.elbResources.size()>1);
|
||||
assertTrue(vr.siblingLoaders.size()==1);
|
||||
Assertions.assertTrue(vr.eldResources.size()>1);
|
||||
Assertions.assertTrue(vr.moduleLoaders.size()>1);
|
||||
Assertions.assertTrue(vr.elbResources.size()>1);
|
||||
Assertions.assertTrue(vr.siblingLoaders.size()==1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testModulesDuplicateLoaderNoError() throws Exception {
|
||||
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");
|
||||
assertNotNull(result);
|
||||
assertFalse(result.isEmpty());
|
||||
Assertions.assertNotNull(result);
|
||||
Assertions.assertFalse(result.isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testModulesDuplicateLoader() throws Exception {
|
||||
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");
|
||||
assertNotNull(result);
|
||||
assertFalse(result.isEmpty());
|
||||
Assertions.assertNotNull(result);
|
||||
Assertions.assertFalse(result.isEmpty());
|
||||
|
||||
Exception e=null;
|
||||
try {
|
||||
|
@ -106,17 +111,18 @@ public class DefaultX4OLanguageLoaderTest extends TestCase {
|
|||
} catch (Exception ee) {
|
||||
e=ee;
|
||||
}
|
||||
assertNotNull(e);
|
||||
assertTrue("No 'Duplicate' found in message: "+e.getMessage(),e.getMessage().contains("Duplicate"));
|
||||
assertTrue("No 'module-loader' found in message: "+e.getMessage(),e.getMessage().contains("module-loader"));
|
||||
Assertions.assertNotNull(e);
|
||||
Assertions.assertTrue(e.getMessage().contains("Duplicate"), "No 'Duplicate' found in message: "+e.getMessage());
|
||||
Assertions.assertTrue(e.getMessage().contains("module-loader"), "No 'module-loader' found in message: "+e.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testModulesDuplicateSiblingLoader() throws Exception {
|
||||
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");
|
||||
assertNotNull(result);
|
||||
assertFalse(result.isEmpty());
|
||||
Assertions.assertNotNull(result);
|
||||
Assertions.assertFalse(result.isEmpty());
|
||||
|
||||
Exception e=null;
|
||||
try {
|
||||
|
@ -124,8 +130,8 @@ public class DefaultX4OLanguageLoaderTest extends TestCase {
|
|||
} catch (Exception ee) {
|
||||
e=ee;
|
||||
}
|
||||
assertNotNull(e);
|
||||
assertTrue("No 'Duplicate' found in message: "+e.getMessage(),e.getMessage().contains("Duplicate"));
|
||||
assertTrue("No 'sibling-loader' found in message: "+e.getMessage(),e.getMessage().contains("sibling-loader"));
|
||||
Assertions.assertNotNull(e);
|
||||
Assertions.assertTrue(e.getMessage().contains("Duplicate"), "No 'Duplicate' found in message: "+e.getMessage());
|
||||
Assertions.assertTrue(e.getMessage().contains("sibling-loader"), "No 'sibling-loader' found in message: "+e.getMessage());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,9 +22,8 @@
|
|||
*/
|
||||
package org.x4o.xml.lang;
|
||||
|
||||
import org.x4o.xml.lang.X4OLanguageClassLoader;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* X4OLanguageClassLoaderTest test classloader.
|
||||
|
@ -32,21 +31,23 @@ import junit.framework.TestCase;
|
|||
* @author Willem Cazander
|
||||
* @version 1.0 Aug 27, 2012
|
||||
*/
|
||||
public class X4OLanguageClassLoaderTest extends TestCase {
|
||||
|
||||
public class X4OLanguageClassLoaderTest {
|
||||
|
||||
@Test
|
||||
public void testLoadObject() throws Exception {
|
||||
Object o = X4OLanguageClassLoader.newInstance("java.lang.Object");
|
||||
assertNotNull(o);
|
||||
assertEquals(Object.class, o.getClass());
|
||||
Assertions.assertNotNull(o);
|
||||
Assertions.assertEquals(Object.class, o.getClass());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void tesNullThread() throws Exception {
|
||||
ClassLoader cl = Thread.currentThread().getContextClassLoader();
|
||||
try {
|
||||
Thread.currentThread().setContextClassLoader(null);
|
||||
Object o = X4OLanguageClassLoader.newInstance("java.lang.Object");
|
||||
assertNotNull(o);
|
||||
assertEquals(Object.class, o.getClass());
|
||||
Assertions.assertNotNull(o);
|
||||
Assertions.assertEquals(Object.class, o.getClass());
|
||||
} finally {
|
||||
Thread.currentThread().setContextClassLoader(cl);
|
||||
}
|
||||
|
|
|
@ -22,8 +22,8 @@
|
|||
*/
|
||||
package org.x4o.xml.lang;
|
||||
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* X4OLanguagePropertyTest test static enum code.
|
||||
|
@ -31,10 +31,11 @@ import junit.framework.TestCase;
|
|||
* @author Willem Cazander
|
||||
* @version 1.0 Aug 27, 2012
|
||||
*/
|
||||
public class X4OLanguagePropertyTest extends TestCase {
|
||||
public class X4OLanguagePropertyTest {
|
||||
|
||||
@Test
|
||||
public void testUriValue() throws Exception {
|
||||
assertEquals(1,1);
|
||||
Assertions.assertEquals(1,1);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
|
@ -25,25 +25,23 @@ package org.x4o.xml.test;
|
|||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.x4o.xml.io.X4OReader;
|
||||
import org.x4o.xml.test.models.TestObjectRoot;
|
||||
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Tests a simple x4o xml language.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Jul 24, 2006
|
||||
*/
|
||||
public class SwingTests extends TestCase {
|
||||
public class SwingTests {
|
||||
|
||||
public void setUp() throws Exception {
|
||||
//X4OTesting.initLogging();
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testSwing() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
|
|
|
@ -22,20 +22,18 @@
|
|||
*/
|
||||
package org.x4o.xml.test;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.x4o.xml.X4ODriver;
|
||||
import org.x4o.xml.io.X4OReader;
|
||||
import org.x4o.xml.test.models.TestObjectRoot;
|
||||
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Tests a simple x4o xml language.
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Jul 24, 2006
|
||||
*/
|
||||
public class TagHandlerTest extends TestCase {
|
||||
public class TagHandlerTest {
|
||||
|
||||
public void setUp() throws Exception {
|
||||
//X4OTesting.initLogging();
|
||||
|
@ -48,7 +46,8 @@ public class TagHandlerTest extends TestCase {
|
|||
}
|
||||
printS(e.getCause());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testTagHanders() throws Exception {
|
||||
X4ODriver<TestObjectRoot> driver = TestDriver.getInstance();
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
|
|
|
@ -22,35 +22,34 @@
|
|||
*/
|
||||
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.test.models.TestObjectChild;
|
||||
import org.x4o.xml.test.models.TestObjectParent;
|
||||
import org.x4o.xml.test.models.TestObjectRoot;
|
||||
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* XIncludeTest
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Aug 31, 2012
|
||||
*/
|
||||
public class XIncludeTest extends TestCase {
|
||||
|
||||
public class XIncludeTest {
|
||||
|
||||
@Test
|
||||
public void testXInclude() throws Exception {
|
||||
TestDriver driver = TestDriver.getInstance();
|
||||
X4OReader<TestObjectRoot> reader = driver.createReader();
|
||||
TestObjectRoot root = reader.readResource("tests/xinclude/include-base.xml");
|
||||
assertNotNull(root);
|
||||
Assertions.assertNotNull(root);
|
||||
TestObjectRoot parentRoot = (TestObjectRoot)root;
|
||||
if (parentRoot.getTestObjectParents().size()==0) {
|
||||
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);
|
||||
TestObjectChild child = parent.testObjectChilds.get(0);
|
||||
assertEquals("include-child.xml",child.getName());
|
||||
Assertions.assertEquals("include-child.xml",child.getName());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ package org.x4o.xml.test.models;
|
|||
*/
|
||||
public class TestBean {
|
||||
|
||||
// public ... todo not implemented
|
||||
// TODO: Add public field support, ... and remove public* methods below
|
||||
|
||||
public int publicIntegerTypeField = 0;
|
||||
public Integer publicIntegerObjectField = new Integer(0);
|
||||
|
@ -53,9 +53,11 @@ public class TestBean {
|
|||
public char publicCharTypeField = ' ';
|
||||
public Character publicCharObjectField = new Character(' ');
|
||||
|
||||
public String publicStringObjectField = " ";
|
||||
//public Date publicDateObjectField = new Date(0); // TODO add date converters
|
||||
public String publicStringObjectField = "𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕";
|
||||
//public String publicStringObjectFieldUnicodeᒡᒢᑊᒻᒻᓫᔿ = " ᒡᒢᑊᒻᒻᓫᔿ";
|
||||
public String publicStringObjectFieldUnicode仙上主天 = "仙上主天";
|
||||
|
||||
//public Date publicDateObjectField = new Date(0); // TODO add date converters
|
||||
|
||||
// private
|
||||
|
||||
|
@ -80,7 +82,9 @@ public class TestBean {
|
|||
private char privateCharTypeField = ' ';
|
||||
private Character privateCharObjectField = new Character(' ');
|
||||
|
||||
private String privateStringObjectField = " ";
|
||||
private String privateStringObjectField = "𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕";
|
||||
//private String privateStringObjectFieldUnicodeᒡᒢᑊᒻᒻᓫᔿ = " ᒡᒢᑊᒻᒻᓫᔿ";
|
||||
private String privateStringObjectFieldUnicode仙上主天 = "仙上主天";
|
||||
//private Date privateDateObjectField = new Date(0);
|
||||
|
||||
|
||||
|
@ -266,6 +270,30 @@ public class TestBean {
|
|||
public void setPublicStringObjectField(String 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
|
||||
|
||||
|
@ -458,6 +486,30 @@ public class TestBean {
|
|||
public void setPrivateStringObjectField(String 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
|
||||
|
||||
|
|
|
@ -28,18 +28,19 @@ import javax.swing.JFrame;
|
|||
import javax.swing.JMenu;
|
||||
import javax.swing.JMenuItem;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.x4o.xml.io.X4OReader;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Accelerator3Test test xml parsing
|
||||
*
|
||||
* @author Willem Cazander
|
||||
* @version 1.0 Aug 31, 2012
|
||||
*/
|
||||
public class Accelerator3Test extends TestCase {
|
||||
public class Accelerator3Test {
|
||||
|
||||
@Test
|
||||
public void testSwingMenuAbout() throws Exception {
|
||||
Accelerator3 ac3 = new Accelerator3(false);
|
||||
SwingEngine engine = new SwingEngine(ac3);
|
||||
|
@ -47,13 +48,13 @@ public class Accelerator3Test extends TestCase {
|
|||
X4OReader<Component> reader = driver.createReader(SwiXmlDriver.LANGUAGE_VERSION_3);
|
||||
reader.addELBeanInstance(SwiXmlDriver.LANGUAGE_EL_SWING_ENGINE, engine);
|
||||
Component root = reader.readResource(Accelerator3.DESCRIPTOR);
|
||||
assertNotNull(root);
|
||||
Assertions.assertNotNull(root);
|
||||
JFrame frame = (JFrame)root;
|
||||
assertTrue(frame.getJMenuBar().getMenuCount()>0);
|
||||
Assertions.assertTrue(frame.getJMenuBar().getMenuCount()>0);
|
||||
JMenu helpMenu = frame.getJMenuBar().getMenu(1);
|
||||
assertEquals("Help",helpMenu.getText());
|
||||
assertTrue(helpMenu.getMenuComponentCount()>0);
|
||||
Assertions.assertEquals("Help",helpMenu.getText());
|
||||
Assertions.assertTrue(helpMenu.getMenuComponentCount()>0);
|
||||
JMenuItem about = (JMenuItem)helpMenu.getMenuComponent(0);
|
||||
assertEquals("mi_about", about.getName());
|
||||
Assertions.assertEquals("mi_about", about.getName());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ public class SwiXmlDriver extends X4ODriver<Component> {
|
|||
|
||||
public static final String LANGUAGE_NAME = "swixml";
|
||||
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_VERSIONS = new String[]{LANGUAGE_VERSION_2,LANGUAGE_VERSION_3};
|
||||
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.
|
||||
*/
|
||||
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());
|
||||
return se;
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ import java.lang.reflect.Field;
|
|||
|
||||
import javax.swing.Action;
|
||||
|
||||
import org.x4o.xml.io.DefaultX4OReader;
|
||||
import org.x4o.xml.io.X4OReader;
|
||||
|
||||
/**
|
||||
|
@ -71,6 +72,9 @@ public class SwingEngine {
|
|||
public Component render(String resource,String languageVersion) {
|
||||
SwiXmlDriver driver = SwiXmlDriver.getInstance();
|
||||
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);
|
||||
try {
|
||||
rootComponent = reader.readResource(resource);
|
||||
|
|
|
@ -29,9 +29,9 @@
|
|||
xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv"
|
||||
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"
|
||||
providerHost="swixml2.test.x4o.org"
|
||||
providerName="Swixml2 Language"
|
||||
id="swixml2-module"
|
||||
providerHost="swixml.junit.x4o.org"
|
||||
providerName="Junit Swixml-2 Language"
|
||||
id="junit-swixml-module"
|
||||
>
|
||||
|
||||
<bindingHandler id="JFrameBindingHandler" bean.class="org.x4o.xml.test.swixml.bind.JFrameBindingHandler"/>
|
||||
|
@ -88,12 +88,29 @@
|
|||
</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">
|
||||
<description>Single element in language root to create nice tree, for imports in xsd namespace aware generated files.</description>
|
||||
</element>
|
||||
</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. -->
|
||||
<element tag="frame" objectClass="javax.swing.JFrame"/>
|
||||
<element tag="menubar" objectClass="javax.swing.JMenuBar"/>
|
||||
|
|
|
@ -29,9 +29,9 @@
|
|||
xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv"
|
||||
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"
|
||||
providerHost="swixml.x4o.org"
|
||||
providerName="Swixml3 Language"
|
||||
id="swixml3-module"
|
||||
providerHost="swixml.junit.x4o.org"
|
||||
providerName="Junit Swixml-3 Language"
|
||||
id="junit-swixml-module"
|
||||
>
|
||||
|
||||
<bindingHandler id="JFrameBindingHandler" bean.class="org.x4o.xml.test.swixml.bind.JFrameBindingHandler"/>
|
||||
|
@ -84,10 +84,27 @@
|
|||
</attribute>
|
||||
</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"/>
|
||||
</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>
|
||||
<element objectClass="javax.swing.JMenuBar"/>
|
||||
<element objectClass="javax.swing.JMenu"/>
|
||||
|
|
|
@ -29,9 +29,9 @@
|
|||
xmlns:conv="http://eld.x4o.org/xml/ns/eld-conv"
|
||||
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"
|
||||
providerName="test Language"
|
||||
providerHost="test.x4o.org"
|
||||
id="test-module"
|
||||
providerName="Junit Test Language"
|
||||
providerHost="test.junit.x4o.org"
|
||||
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">
|
||||
|
@ -66,14 +66,14 @@
|
|||
</eld:elementInterface>
|
||||
|
||||
<eld:namespace
|
||||
uri="http://test.x4o.org/xml/ns/test-root"
|
||||
schemaUri="http://test.x4o.org/xml/ns/test-root-1.0.xsd"
|
||||
schemaResource="test-root-1.0.xsd"
|
||||
uri="http://test.junit.x4o.org/xml/ns/junit-test-root"
|
||||
schemaUri="http://test.junit.x4o.org/xml/ns/junit-test-root-1.0.xsd"
|
||||
schemaResource="junit-test-root-1.0.xsd"
|
||||
schemaPrefix="root"
|
||||
description="Root namespace to have nice namespaceing."
|
||||
name="Test Root Namespace"
|
||||
name="Junit Test Root Namespace"
|
||||
languageRoot="true"
|
||||
id="test-root"
|
||||
id="junit-test-root"
|
||||
>
|
||||
<!-- Root Element for nice namespace'ing -->
|
||||
<eld:element tag="root" objectClass="org.x4o.xml.test.models.TestObjectRoot">
|
||||
|
@ -82,13 +82,13 @@
|
|||
</eld:namespace>
|
||||
|
||||
<eld:namespace
|
||||
uri="http://test.x4o.org/xml/ns/test-lang"
|
||||
schemaUri="http://test.x4o.org/xml/ns/test-lang-1.0.xsd"
|
||||
schemaResource="test-lang-1.0.xsd"
|
||||
uri="http://test.junit.x4o.org/xml/ns/junit-test-lang"
|
||||
schemaUri="http://test.junit.x4o.org/xml/ns/junit-test-lang-1.0.xsd"
|
||||
schemaResource="junit-test-lang-1.0.xsd"
|
||||
schemaPrefix="lang"
|
||||
description="Test language namespace to test some/most features"
|
||||
name="Test Language Namespace"
|
||||
id="test-lang"
|
||||
name="Junit Test Language Namespace"
|
||||
id="junit-test-lang"
|
||||
>
|
||||
<!-- TODO: fix x4o writer, run EldParserTest
|
||||
<eld:namespaceAttribute attributeName="attr1" bean.class="org.x4o.xml.test.element.TestElementNamespaceAttribute" id="attrTest1">
|
||||
|
|
|
@ -24,8 +24,8 @@
|
|||
|
||||
-->
|
||||
<root:root
|
||||
xmlns:root="http://test.x4o.org/xml/ns/test-root"
|
||||
xmlns="http://test.x4o.org/xml/ns/test-lang"
|
||||
xmlns:root="http://test.junit.x4o.org/xml/ns/junit-test-root"
|
||||
xmlns="http://test.junit.x4o.org/xml/ns/junit-test-lang"
|
||||
>
|
||||
<parent name="test-bean.xml"/>
|
||||
<testBean
|
||||
|
@ -43,7 +43,8 @@
|
|||
privateBooleanObjectField="true"
|
||||
privateCharTypeField="W"
|
||||
privateCharObjectField="C"
|
||||
privateStringObjectField="x4o"
|
||||
privateStringObjectField="x4o-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕"
|
||||
privateStringObjectFieldUnicode仙上主天="x4o-仙上主天"
|
||||
privateDateObjectField="${date0}"
|
||||
/>
|
||||
<testBean
|
||||
|
@ -61,7 +62,12 @@
|
|||
publicBooleanObjectField="true"
|
||||
publicCharTypeField="W"
|
||||
publicCharObjectField="C"
|
||||
publicStringObjectField="x4o"
|
||||
publicStringObjectField="x4o-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕"
|
||||
publicStringObjectFieldUnicode仙上主天="x4o-仙上主天"
|
||||
publicDateObjectField="${date0}"
|
||||
/>
|
||||
<!-- TODO: Add when SAX is fixed
|
||||
privateStringObjectFieldUnicodeᒡᒢᑊᒻᒻᓫᔿ="x4o-ᒡᒢᑊᒻᒻᓫᔿ"
|
||||
publicStringObjectFieldUnicodeᒡᒢᑊᒻᒻᓫᔿ="x4o-ᒡᒢᑊᒻᒻᓫᔿ"
|
||||
-->
|
||||
</root:root>
|
||||
|
|
|
@ -24,9 +24,9 @@
|
|||
|
||||
-->
|
||||
<root:root
|
||||
xmlns:root="http://test.x4o.org/xml/ns/test-root"
|
||||
xmlns="http://test.x4o.org/xml/ns/test-lang"
|
||||
xmlns:root="http://test.junit.x4o.org/xml/ns/junit-test-root"
|
||||
xmlns="http://test.junit.x4o.org/xml/ns/junit-test-lang"
|
||||
>
|
||||
<child name="attr-name"/>
|
||||
<child>body-name</child>
|
||||
<child name="attr-name-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕"/>
|
||||
<child>body-name-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕</child>
|
||||
</root:root>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue