diff --git a/build.gradle.kts b/build.gradle.kts index 4df2235..b844967 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("java") + `java-library` } group = "io.gitlab.jfronny" @@ -7,10 +7,16 @@ version = "1.0-SNAPSHOT" repositories { mavenCentral() + maven("https://maven.frohnmeyer-wds.de/artifacts") } dependencies { - val manifoldVersion = "2022.1.23" + val manifoldVersion = "2022.1.27" + val gsonCompileVersion = "1.1-SNAPSHOT" + + api("io.gitlab.jfronny.gson:gson-compile-core:$gsonCompileVersion") + compileOnly("io.gitlab.jfronny.gson:gson-compile-annotations:$gsonCompileVersion") + annotationProcessor("io.gitlab.jfronny.gson:gson-compile-processor:$gsonCompileVersion") implementation("systems.manifold:manifold-props-rt:$manifoldVersion") diff --git a/module2/build.gradle.kts b/module2/build.gradle.kts new file mode 100644 index 0000000..9457e0a --- /dev/null +++ b/module2/build.gradle.kts @@ -0,0 +1,29 @@ +plugins { + `java-library` +} + + +repositories { + mavenCentral() + maven("https://maven.frohnmeyer-wds.de/artifacts") +} + +dependencies { + val manifoldVersion = "2022.1.27" + + implementation(rootProject) + + implementation("systems.manifold:manifold-ext-rt:$manifoldVersion") + + testAnnotationProcessor(annotationProcessor("systems.manifold:manifold-ext:$manifoldVersion")!!) +} + +if (sourceSets.main.get().allJava.files.any {it.name == "module-info.java"}) { + tasks.withType { + options.compilerArgs.addAll(arrayOf("-Xplugin:Manifold no-bootstrap", "--module-path", classpath.asPath)) + } +} else { + tasks.withType { + options.compilerArgs.addAll(arrayOf("-Xplugin:Manifold no-bootstrap")) + } +} diff --git a/module2/src/main/java/io/gitlab/jfronny/Main.java b/module2/src/main/java/io/gitlab/jfronny/Main.java new file mode 100644 index 0000000..630d2fe --- /dev/null +++ b/module2/src/main/java/io/gitlab/jfronny/Main.java @@ -0,0 +1,12 @@ +package io.gitlab.jfronny; + +import io.gitlab.jfronny.inceptum.ExampleRecord; + +import java.io.IOException; + +public class Main { + public static void main(String[] args) throws IOException { + // This works + System.out.println(new ExampleRecord("aaee").toJson()); + } +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 0230f6d..b6502cc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,2 +1,2 @@ rootProject.name = "manifold-example" - +include("module2") diff --git a/src/main/java/extensions/java/lang/Iterable/StructuralIterable.java b/src/main/java/extensions/java/lang/Iterable/StructuralIterable.java deleted file mode 100644 index 5e3d1ef..0000000 --- a/src/main/java/extensions/java/lang/Iterable/StructuralIterable.java +++ /dev/null @@ -1,9 +0,0 @@ -package extensions.java.lang.Iterable; - -import manifold.ext.rt.api.Extension; -import manifold.ext.rt.api.Structural; - -@Extension -@Structural -public class StructuralIterable { -} diff --git a/src/main/java/extensions/org/w3c/dom/Node/NodeExt.java b/src/main/java/extensions/org/w3c/dom/Node/NodeExt.java deleted file mode 100644 index 45ad5fc..0000000 --- a/src/main/java/extensions/org/w3c/dom/Node/NodeExt.java +++ /dev/null @@ -1,14 +0,0 @@ -package extensions.org.w3c.dom.Node; - -import manifold.ext.rt.api.Extension; -import manifold.ext.rt.api.This; -import org.w3c.dom.Node; - -@Extension -public class NodeExt { - public static boolean isWhitespace(@This Node thiz) { - if (thiz.nodeType == Node.TEXT_NODE && thiz.textContent.isBlank()) return true; - if (thiz.nodeType == Node.COMMENT_NODE) return true; - return false; - } -} diff --git a/src/main/java/extensions/org/w3c/dom/NodeList/NodeListExt.java b/src/main/java/extensions/org/w3c/dom/NodeList/NodeListExt.java deleted file mode 100644 index 96ea000..0000000 --- a/src/main/java/extensions/org/w3c/dom/NodeList/NodeListExt.java +++ /dev/null @@ -1,20 +0,0 @@ -package extensions.org.w3c.dom.NodeList; - -import io.gitlab.jfronny.inceptum.common.dom.NodeListIterator; -import manifold.ext.rt.api.Extension; -import manifold.ext.rt.api.This; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import java.util.Iterator; - -@Extension -public abstract class NodeListExt implements Iterable { - public static Iterator iterator(@This NodeList thiz) { - return new NodeListIterator(thiz); - } - - public static Node get(@This NodeList thiz, int index) { - return thiz.item(index); - } -} diff --git a/src/main/java/io/gitlab/jfronny/inceptum/ExampleRecord.java b/src/main/java/io/gitlab/jfronny/inceptum/ExampleRecord.java new file mode 100644 index 0000000..84a966e --- /dev/null +++ b/src/main/java/io/gitlab/jfronny/inceptum/ExampleRecord.java @@ -0,0 +1,9 @@ +package io.gitlab.jfronny.inceptum; + +import io.gitlab.jfronny.gson.compile.annotations.GSerializable; + +// An extension class called "GC_ExampleRecord" is generated through a javax.annotation.processing.Processor through javax.annotation.processing.AbstractProcessor + +@GSerializable +public record ExampleRecord(String someValue) { +} diff --git a/src/main/java/io/gitlab/jfronny/inceptum/Main.java b/src/main/java/io/gitlab/jfronny/inceptum/Main.java index 29c6d30..449433c 100644 --- a/src/main/java/io/gitlab/jfronny/inceptum/Main.java +++ b/src/main/java/io/gitlab/jfronny/inceptum/Main.java @@ -1,85 +1,10 @@ package io.gitlab.jfronny.inceptum; -import io.gitlab.jfronny.inceptum.common.model.maven.Pom; -import org.w3c.dom.Document; -import org.w3c.dom.Node; -import org.xml.sax.SAXException; - -import javax.xml.parsers.*; import java.io.IOException; -import java.io.InputStream; public class Main { - private static final DocumentBuilder FACTORY; - - static { - try { - FACTORY = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - } catch (ParserConfigurationException e) { - throw new RuntimeException("Could not create document builder", e); - } - } - - public static void main(String[] args) throws IOException, SAXException { - Pom result; - try (InputStream is = Main.class.getResourceAsStream("/ExamplePom.xml")) { - Document doc = FACTORY.parse(is); - doc.documentElement.normalize(); - result = new Pom(); - if (!"project".equals(doc.documentElement.nodeName)) throw new IOException("Illegal document name"); - boolean hasModelVersion = false; - boolean hasGroupId = false; - boolean hasArtifactId = false; - boolean hasVersion = false; - for (Node node : doc.documentElement.childNodes) { - switch (node.nodeName) { - case "modelVersion" -> { - hasModelVersion = true; - result.modelVersion = node.textContent; - } - case "parent" -> { - // Dirty hack to get slf4j working: simply assume the groupId and version of the parent is also the groupId of this - if (!hasGroupId) { - for (Node child : node.childNodes) { - switch (child.nodeName) { - case "groupId" -> { - if (!hasGroupId) { - hasGroupId = true; - result.groupId = node.textContent; - } - } - case "version" -> { - if (!hasVersion) { - hasVersion = true; - result.version = node.textContent; - } - } - } - } - } - } - case "groupId" -> { - hasGroupId = true; - result.groupId = node.textContent; - } - case "artifactId" -> { - hasArtifactId = true; - result.artifactId = node.textContent; - } - case "version" -> { - hasVersion = true; - result.version = node.textContent; - } - case "packaging" -> result.packaging = node.textContent; - case "classifier" -> result.classifier = node.textContent; - default -> {} - } - } - if (!hasModelVersion) throw new IOException("Pom lacks modelVersion"); - if (!hasGroupId) throw new IOException("Pom lacks groupId"); - if (!hasArtifactId) throw new IOException("Pom lacks artifactId"); - if (!hasVersion) throw new IOException("Pom lacks version"); - } - System.out.println("Parsed: $result"); + public static void main(String[] args) throws IOException { + // This doesn't + System.out.println(new ExampleRecord("aaee").toJson()); } } diff --git a/src/main/java/io/gitlab/jfronny/inceptum/common/dom/NodeListIterator.java b/src/main/java/io/gitlab/jfronny/inceptum/common/dom/NodeListIterator.java deleted file mode 100644 index 466437f..0000000 --- a/src/main/java/io/gitlab/jfronny/inceptum/common/dom/NodeListIterator.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.gitlab.jfronny.inceptum.common.dom; - -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import java.util.Iterator; -import java.util.NoSuchElementException; - -public class NodeListIterator implements Iterator { - private final NodeList list; - private int index = 0; - - public NodeListIterator(NodeList list) { - this.list = list; - } - - @Override - public boolean hasNext() { - while (index < list.length && list[index].isWhitespace()) { - index++; - } - return index < list.length; - } - - @Override - public Node next() { - if (!hasNext()) throw new NoSuchElementException(); - return list[index++]; - } -} diff --git a/src/main/java/io/gitlab/jfronny/inceptum/common/model/maven/Pom.java b/src/main/java/io/gitlab/jfronny/inceptum/common/model/maven/Pom.java deleted file mode 100644 index df1f707..0000000 --- a/src/main/java/io/gitlab/jfronny/inceptum/common/model/maven/Pom.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.gitlab.jfronny.inceptum.common.model.maven; - -import java.util.List; - -public class Pom { - public String modelVersion; - public String groupId; - public String artifactId; - public String version; - public String classifier; - public String snapshotVersion; - public String packaging; - - @Override - public String toString() { - return "Pom{" + - "modelVersion='" + modelVersion + '\'' + - ", groupId='" + groupId + '\'' + - ", artifactId='" + artifactId + '\'' + - ", version='" + version + '\'' + - ", classifier='" + classifier + '\'' + - ", snapshotVersion='" + snapshotVersion + '\'' + - ", packaging='" + packaging + '\'' + - '}'; - } -} diff --git a/src/main/resources/ExamplePom.xml b/src/main/resources/ExamplePom.xml deleted file mode 100644 index 6ff987c..0000000 --- a/src/main/resources/ExamplePom.xml +++ /dev/null @@ -1,85 +0,0 @@ - - - - 4.0.0 - - - org.slf4j - slf4j-parent - 1.7.36 - - - slf4j-api - - jar - SLF4J API Module - The slf4j API - - http://www.slf4j.org - - - - - org.codehaus.mojo - animal-sniffer-maven-plugin - - - - org.slf4j.impl.StaticMDCBinder - org.slf4j.impl.StaticLoggerBinder - org.slf4j.impl.StaticMarkerBinder - - - - - org.apache.maven.plugins - maven-surefire-plugin - - once - plain - false - - **/AllTest.java - **/PackageTest.java - - - - - - org.apache.maven.plugins - maven-jar-plugin - - - bundle-test-jar - package - - test-jar - - - - - - - org.apache.maven.plugins - maven-antrun-plugin - - - process-classes - - run - - - - - - Removing slf4j-api's dummy StaticLoggerBinder and StaticMarkerBinder - - - - - - - - \ No newline at end of file