Skip to content

Commit

Permalink
[TOQo1n9M] Core part - apoc-hadoop dependency is conflicting 5.x (neo…
Browse files Browse the repository at this point in the history
…4j-contrib/neo4j-apoc-procedures#3450) (#347)

* [TOQo1n9M] Core part - apoc-hadoop dependency is conflicting 5.x (neo4j-contrib/neo4j-apoc-procedures#3450)

* [TOQo1n9M] changed getProjectPath() to isExtendedProject()
  • Loading branch information
vga91 committed Apr 5, 2023
1 parent f8bf9b0 commit 100be38
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 15 deletions.
23 changes: 19 additions & 4 deletions processor/src/main/java/apoc/processor/ExtensionClassWriter.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@
import com.squareup.javapoet.TypeSpec;

import javax.annotation.processing.Filer;
import javax.lang.model.element.Element;
import javax.lang.model.element.Modifier;
import javax.tools.FileObject;
import javax.tools.StandardLocation;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
Expand All @@ -25,16 +28,28 @@ public void write(List<String> procedureSignatures,
List<String> userFunctionSignatures) {

try {
JavaFile.builder("apoc", defineClass(procedureSignatures, userFunctionSignatures))
String suffix = isExtendedProject() ? "Extended" : "";
final TypeSpec typeSpec = defineClass(procedureSignatures, userFunctionSignatures, suffix);

JavaFile.builder("apoc", typeSpec)
.build()
.writeTo(filer);
} catch (IOException e) {
throw new RuntimeException(e);
}
}

private TypeSpec defineClass(List<String> procedureSignatures, List<String> userFunctionSignatures) {
return TypeSpec.classBuilder("ApocSignatures")
private boolean isExtendedProject() throws IOException {
// create and delete a file to retrieve the current project path (e.g `ROOT/../core/build/generated/.../tmp`)
FileObject resource = filer.createResource(StandardLocation.SOURCE_OUTPUT, "", "tmp", (Element[]) null);
String projectPath = resource.getName();
resource.delete();

return projectPath.contains("extended/build/generated");
}

private TypeSpec defineClass(List<String> procedureSignatures, List<String> userFunctionSignatures, String suffix) {
return TypeSpec.classBuilder("ApocSignatures" + suffix)
.addModifiers(Modifier.PUBLIC)
.addField(signatureListField("PROCEDURES", procedureSignatures))
.addField(signatureListField("FUNCTIONS", userFunctionSignatures))
Expand All @@ -57,4 +72,4 @@ private String placeholders(List<String> signatures) {
// FIXME: find a way to manage the indentation automatically
return signatures.stream().map((ignored) -> "$S").collect(Collectors.joining(",\n\t\t"));
}
}
}
27 changes: 16 additions & 11 deletions test-utils/src/main/java/apoc/util/TestContainerUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.github.dockerjava.api.exception.NotFoundException;
import java.time.Duration;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.commons.io.filefilter.WildcardFileFilter;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.gradle.tooling.BuildLauncher;
Expand Down Expand Up @@ -46,9 +47,10 @@ public enum ApocPackage {

private TestContainerUtil() {}

private static File baseDir = Paths.get("..").toFile();
public static File baseDir = Paths.get("..").toFile();
public static File pluginsFolder = new File(baseDir, "build/plugins");
private static File coreDir = new File(baseDir, System.getProperty("coreDir"));
private static File extendedDir = new File(baseDir, "extended");
public static File extendedDir = new File(baseDir, "extended");

public static String dockerImageForNeo4j(Neo4jVersion version) {
if (version == Neo4jVersion.COMMUNITY)
Expand Down Expand Up @@ -84,7 +86,6 @@ private static Neo4jContainerExtension createNeo4jContainer(List<ApocPackage> ap
dockerImage = neo4jCommunityDockerImageVersion;
}

File pluginsFolder = new File(baseDir, "build/plugins");
try {
FileUtils.deleteDirectory( pluginsFolder );
} catch (IOException e) {
Expand Down Expand Up @@ -113,14 +114,7 @@ private static Neo4jContainerExtension createNeo4jContainer(List<ApocPackage> ap

executeGradleTasks(projectDir, "shadowJar");

Collection<File> files = FileUtils.listFiles(new File(projectDir, "build/libs"), new WildcardFileFilter(Arrays.asList("*-extended.jar", "*-core.jar")), null);
for (File file: files) {
try {
FileUtils.copyFileToDirectory(file, pluginsFolder);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
copyFilesToPlugin(new File(projectDir, "build/libs"), new WildcardFileFilter(Arrays.asList("*-extended.jar", "*-core.jar")), pluginsFolder);
}

System.out.println("neo4jDockerImageVersion = " + dockerImage);
Expand Down Expand Up @@ -165,6 +159,17 @@ private static Neo4jContainerExtension createNeo4jContainer(List<ApocPackage> ap
return neo4jContainer.withWaitForNeo4jDatabaseReady(password, version);
}

public static void copyFilesToPlugin(File directory, IOFileFilter instance, File pluginsFolder) {
Collection<File> files = FileUtils.listFiles(directory, instance, null);
for (File file: files) {
try {
FileUtils.copyFileToDirectory(file, pluginsFolder);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

public static void executeGradleTasks(File baseDir, String... tasks) {
try (ProjectConnection connection = GradleConnector.newConnector()
.forProjectDirectory(baseDir)
Expand Down

0 comments on commit 100be38

Please sign in to comment.