Skip to content

Commit

Permalink
fixes #5 downgrade to JDK 17
Browse files Browse the repository at this point in the history
  • Loading branch information
sarmbruster committed Apr 8, 2024
1 parent 359b9b4 commit b13933f
Show file tree
Hide file tree
Showing 7 changed files with 89 additions and 68 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
java-version: '17'
- run: mvn -B install --no-transfer-progress

# coverage:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/create-github-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 21
java-version: 17
# server-id: oss.sonatype.org
# server-username: MAVEN_USERNAME
# server-password: MAVEN_PASSWORD
Expand Down
14 changes: 12 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@
<version>0.2.3-SNAPSHOT</version>

<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<!--<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>-->

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<neo4j.version>5.18.0</neo4j.version>
<junitJupiter.version>5.10.1</junitJupiter.version>
Expand Down Expand Up @@ -111,6 +112,15 @@

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
Expand Down
115 changes: 54 additions & 61 deletions src/main/java/atag/text/Importer.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,7 @@
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Stream;

public class Importer {
Expand Down Expand Up @@ -59,42 +56,40 @@ public Stream<ResultTypes.NodeResult> importHtml(

return startNode.getRelationships(Direction.OUTGOING, relationshipType).stream()
.map(Relationship::getEndNode)
.sorted(Comparator.comparing(node -> (long) node.getProperty("startIndex")))
.map(ResultTypes.NodeResult::new);
}

private long traverse(int depth, org.jsoup.nodes.Node node, long index, StringBuilder plainTextBuilder,
Node neo4jNode, Label label, RelationshipType relationshipType, String plainTextProperty) {
switch (node) {
case org.jsoup.nodes.Element element:

Node newNeo4jNode = null;
if (depth>0){
newNeo4jNode = tx.createNode(label);
neo4jNode.createRelationshipTo(newNeo4jNode, relationshipType);
newNeo4jNode.setProperty("startIndex", index);
newNeo4jNode.setProperty("tag", element.nodeName());
}
if (node instanceof org.jsoup.nodes.Element element) {
Node newNeo4jNode = null;
if (depth>0){
newNeo4jNode = tx.createNode(label);
neo4jNode.createRelationshipTo(newNeo4jNode, relationshipType);
newNeo4jNode.setProperty("startIndex", index);
newNeo4jNode.setProperty("tag", element.nodeName());
}

log.debug(" ".repeat(depth) + "Depth: {}, Element: {}, index: {}", depth, element.nodeName(), index);
StringBuilder localPlainTextBuilder = new StringBuilder();
for (org.jsoup.nodes.Node child : element.childNodes()) {
index = traverse(depth+1, child, index, localPlainTextBuilder, neo4jNode, label,
relationshipType, plainTextProperty);
}
log.debug(" ".repeat(depth) + "Depth: {}, Element: {}, index: {}", depth, element.nodeName(), index);
StringBuilder localPlainTextBuilder = new StringBuilder();
for (org.jsoup.nodes.Node child : element.childNodes()) {
index = traverse(depth+1, child, index, localPlainTextBuilder, neo4jNode, label,
relationshipType, plainTextProperty);
}

if (depth>0){
newNeo4jNode.setProperty("endIndex", index);
newNeo4jNode.setProperty(plainTextProperty, localPlainTextBuilder.toString());
}
plainTextBuilder.append(localPlainTextBuilder);
break;
case org.jsoup.nodes.TextNode textNode:
plainTextBuilder.append(textNode.text());
index += textNode.text().length();
log.debug("Text: {}, index: {}", textNode.text(), index);
break;
default:
throw new IllegalArgumentException("Unknown node type: " + node);
if (depth>0){
newNeo4jNode.setProperty("endIndex", index);
newNeo4jNode.setProperty(plainTextProperty, localPlainTextBuilder.toString());
}
plainTextBuilder.append(localPlainTextBuilder);

} else if (node instanceof org.jsoup.nodes.TextNode textNode) {
plainTextBuilder.append(textNode.text());
index += textNode.text().length();
log.debug(" ".repeat(depth) + "Text: {}, index: {}", textNode.text(), index);
} else {
throw new IllegalArgumentException("Unknown node type: " + node);
}
return index;
}
Expand Down Expand Up @@ -133,34 +128,32 @@ public Stream<ResultTypes.NodeResult> importXml(
for (int i=0; i<nodeList.getLength(); i++) {
org.w3c.dom.Node item = nodeList.item(i);
// int depth = getDepth(item);
switch (item) {
case org.w3c.dom.Element element:
Node newNeo4jNode = tx.createNode(label);
annotations.add(newNeo4jNode);
String textContent = element.getTextContent();
startNode.createRelationshipTo(newNeo4jNode, relationshipType);
newNeo4jNode.setProperty("tag", element.getNodeName());
newNeo4jNode.setProperty("startIndex", Integer.toUnsignedLong(plainTextBuilder.length()));
newNeo4jNode.setProperty("endIndex", Integer.toUnsignedLong(plainTextBuilder.length()+textContent.length()));
Map<String, Object> attributes = getAttributes(element);
attributes.forEach(newNeo4jNode::setProperty);
if (!textContent.isEmpty()) {
newNeo4jNode.setProperty(plainTextProperty, textContent);
}
if (log.isDebugEnabled()) {
log.debug("{} Element: {}, attributes: {}, startIndex: {}, stopIndex: {}",
".".repeat(getDepth(item)), element.getNodeName(), attributes,
plainTextBuilder.length(), plainTextBuilder.length()+textContent.length());
}
break;
case org.w3c.dom.Text text:
if (log.isDebugEnabled()) {
log.debug( "{} Text: {}",".".repeat(getDepth(item)), text.getTextContent());
}
plainTextBuilder.append(text.getTextContent());
break;
default:
throw new IllegalArgumentException("Unknown node type: " + item);

if (item instanceof Element element) {
Node newNeo4jNode = tx.createNode(label);
annotations.add(newNeo4jNode);
String textContent = element.getTextContent();
startNode.createRelationshipTo(newNeo4jNode, relationshipType);
newNeo4jNode.setProperty("tag", element.getNodeName());
newNeo4jNode.setProperty("startIndex", Integer.toUnsignedLong(plainTextBuilder.length()));
newNeo4jNode.setProperty("endIndex", Integer.toUnsignedLong(plainTextBuilder.length()+textContent.length()));
Map<String, Object> attributes = getAttributes(element);
attributes.forEach(newNeo4jNode::setProperty);
if (!textContent.isEmpty()) {
newNeo4jNode.setProperty(plainTextProperty, textContent);
}
if (log.isDebugEnabled()) {
log.debug("{} Element: {}, attributes: {}, startIndex: {}, stopIndex: {}",
".".repeat(getDepth(item)), element.getNodeName(), attributes,
plainTextBuilder.length(), plainTextBuilder.length()+textContent.length());
}
} else if (item instanceof org.w3c.dom.Text text) {
if (log.isDebugEnabled()) {
log.debug("{} Text: {}", ".".repeat(getDepth(item)), text.getTextContent());
}
plainTextBuilder.append(text.getTextContent());
} else {
throw new IllegalArgumentException("Unknown node type: " + item);
}
}
String plainText = plainTextBuilder.toString();
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/atag/text/Load.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ public class Load {
*/
@UserFunction
public String load(@Name("uri") String uri) {
try (HttpClient client = HttpClient.newHttpClient()) {
try {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(uri))
.GET()
Expand Down
20 changes: 18 additions & 2 deletions src/test/java/atag/atag/util/HttpServerExtension.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
package atag.atag.util;

import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.SimpleFileServer;
import org.junit.jupiter.api.extension.*;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;

public class HttpServerExtension implements BeforeEachCallback, AfterEachCallback, ParameterResolver {

Expand Down Expand Up @@ -43,10 +44,25 @@ public URI getURI() {
@Override
public void beforeEach(ExtensionContext context) throws IOException {
int port = findAvailablePort();
server = HttpServer.create(new InetSocketAddress(port), 0);
server.createContext("/", exchange -> {
URI requestURI = exchange.getRequestURI();
Path path = Path.of("src/test/resources", requestURI.getPath());
byte[] response = Files.readAllBytes(path);
exchange.sendResponseHeaders(200, response.length);
OutputStream outputStream = exchange.getResponseBody();
outputStream.write(response);
outputStream.flush();
outputStream.close();
exchange.close();
});

/* once we move to JDK 21
server = SimpleFileServer.createFileServer(new InetSocketAddress(port),
FileSystems.getDefault().getPath("src/test/resources").toAbsolutePath(),
SimpleFileServer.OutputLevel.INFO
);
*/
server.start();
context.getStore(NAMESPACE).put(HTTP_SERVER_INFO, new HttpServerInfo(server.getAddress()));
}
Expand Down
1 change: 1 addition & 0 deletions src/test/java/atag/text/ImporterTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ public void testAnnotate(GraphDatabaseService db) {
Collections.emptyMap(), result -> {
List<Map<String, Object>> list = Iterators.asList(result);
assertEquals(4, list.size());
list.forEach(System.out::println);

assertThat(list.get(0), Matchers.<Map<String, Object>>allOf(
hasEntry("startIndex", 5L),
Expand Down

0 comments on commit b13933f

Please sign in to comment.