From a357107cedd742521b5b432797b8fca65cd4e243 Mon Sep 17 00:00:00 2001 From: Mat Booth Date: Tue, 28 Jul 2020 10:53:50 +0100 Subject: [PATCH] Patch for javaparser API changes --- 0001-Javaparser-API.patch | 325 ++++++++++++++++++++++++++++++++++++++ jctools.spec | 12 +- 2 files changed, 335 insertions(+), 2 deletions(-) create mode 100644 0001-Javaparser-API.patch diff --git a/0001-Javaparser-API.patch b/0001-Javaparser-API.patch new file mode 100644 index 0000000..920a0ec --- /dev/null +++ b/0001-Javaparser-API.patch @@ -0,0 +1,325 @@ +From 19806373f6ac4babbbb3929870f8b5089e851773 Mon Sep 17 00:00:00 2001 +From: Mat Booth +Date: Tue, 28 Jul 2020 10:42:10 +0100 +Subject: [PATCH] Javaparser API + +--- + jctools-build/pom.xml | 2 +- + .../JavaParsingAtomicArrayQueueGenerator.java | 18 +++++------ + ...JavaParsingAtomicLinkedQueueGenerator.java | 28 ++++++++-------- + .../jctools/queues/atomic/TraceVisitor.java | 32 +++++++++---------- + 4 files changed, 40 insertions(+), 40 deletions(-) + +diff --git a/jctools-build/pom.xml b/jctools-build/pom.xml +index fac435c..8b1d820 100644 +--- a/jctools-build/pom.xml ++++ b/jctools-build/pom.xml +@@ -17,7 +17,7 @@ + + com.github.javaparser + javaparser-core +- 3.3.0 ++ 3.14.2 + + + +\ No newline at end of file +diff --git a/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicArrayQueueGenerator.java b/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicArrayQueueGenerator.java +index 3708b8a..9602eca 100644 +--- a/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicArrayQueueGenerator.java ++++ b/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicArrayQueueGenerator.java +@@ -12,6 +12,7 @@ import com.github.javaparser.JavaParser; + import com.github.javaparser.ast.CompilationUnit; + import com.github.javaparser.ast.ImportDeclaration; + import com.github.javaparser.ast.Modifier; ++import com.github.javaparser.ast.Modifier.Keyword; + import com.github.javaparser.ast.Node; + import com.github.javaparser.ast.NodeList; + import com.github.javaparser.ast.PackageDeclaration; +@@ -87,7 +88,7 @@ public final class JavaParsingAtomicArrayQueueGenerator extends VoidVisitorAdapt + } + + if (!node.getMethodsByName("failFastOffer").isEmpty()) { +- MethodDeclaration deprecatedMethodRedirect = node.addMethod("weakOffer", Modifier.PUBLIC); ++ MethodDeclaration deprecatedMethodRedirect = node.addMethod("weakOffer", Keyword.PUBLIC); + patchMethodAsDepreciatedRedirector(deprecatedMethodRedirect, "failFastOffer", PrimitiveType.intType(), + new Parameter(classType("E"), "e")); + } +@@ -147,7 +148,7 @@ public final class JavaParsingAtomicArrayQueueGenerator extends VoidVisitorAdapt + + // Remove all static fields + for (FieldDeclaration field : node.getFields()) { +- if (field.getModifiers().contains(Modifier.STATIC)) { ++ if (field.getModifiers().contains(Modifier.staticModifier())) { + field.remove(); + continue; + } +@@ -221,7 +222,7 @@ public final class JavaParsingAtomicArrayQueueGenerator extends VoidVisitorAdapt + String className = n.getNameAsString(); + + for (FieldDeclaration field : n.getFields()) { +- if (field.getModifiers().contains(Modifier.STATIC)) { ++ if (field.getModifiers().contains(Keyword.STATIC)) { + // Ignore statics + continue; + } +@@ -266,7 +267,7 @@ public final class JavaParsingAtomicArrayQueueGenerator extends VoidVisitorAdapt + } + + if (usesFieldUpdater) { +- field.addModifier(Modifier.VOLATILE); ++ field.addModifier(Keyword.VOLATILE); + } + } + } +@@ -346,12 +347,11 @@ public final class JavaParsingAtomicArrayQueueGenerator extends VoidVisitorAdapt + * @return + */ + private static FieldDeclaration fieldDeclarationWithInitialiser(Type type, String name, Expression initializer, +- Modifier... modifiers) { ++ Keyword... modifiers) { + FieldDeclaration fieldDeclaration = new FieldDeclaration(); + VariableDeclarator variable = new VariableDeclarator(type, name, initializer); + fieldDeclaration.getVariables().add(variable); +- EnumSet modifierSet = EnumSet.copyOf(Arrays.asList(modifiers)); +- fieldDeclaration.setModifiers(modifierSet); ++ fieldDeclaration.setModifiers(modifiers); + return fieldDeclaration; + } + +@@ -368,7 +368,7 @@ public final class JavaParsingAtomicArrayQueueGenerator extends VoidVisitorAdapt + + ClassOrInterfaceType type = simpleParametricType("AtomicLongFieldUpdater", className); + FieldDeclaration newField = fieldDeclarationWithInitialiser(type, fieldUpdaterFieldName(variableName), +- initializer, Modifier.PRIVATE, Modifier.STATIC, Modifier.FINAL); ++ initializer, Keyword.PRIVATE, Keyword.STATIC, Keyword.FINAL); + return newField; + } + +@@ -536,7 +536,7 @@ public final class JavaParsingAtomicArrayQueueGenerator extends VoidVisitorAdapt + for (int i = 1; i < args.length; i++) { + File file = new File(args[i]); + System.out.println("Processing " + file); +- CompilationUnit cu = JavaParser.parse(file); ++ CompilationUnit cu = new JavaParser().parse(file).getResult().get(); + new JavaParsingAtomicArrayQueueGenerator(file.getName()).visit(cu, null); + + organiseImports(cu); +diff --git a/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicLinkedQueueGenerator.java b/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicLinkedQueueGenerator.java +index 1a195b4..77fab49 100644 +--- a/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicLinkedQueueGenerator.java ++++ b/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicLinkedQueueGenerator.java +@@ -12,6 +12,7 @@ import com.github.javaparser.JavaParser; + import com.github.javaparser.ast.CompilationUnit; + import com.github.javaparser.ast.ImportDeclaration; + import com.github.javaparser.ast.Modifier; ++import com.github.javaparser.ast.Modifier.Keyword; + import com.github.javaparser.ast.Node; + import com.github.javaparser.ast.NodeList; + import com.github.javaparser.ast.PackageDeclaration; +@@ -88,8 +89,8 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap + /* + * Special case for MPSC + */ +- node.removeModifier(Modifier.ABSTRACT); +- node.addModifier(Modifier.FINAL); ++ node.removeModifier(Keyword.ABSTRACT); ++ node.addModifier(Keyword.FINAL); + } + + if (isCommentPresent(node, GEN_DIRECTIVE_CLASS_CONTAINS_ORDERED_FIELD_ACCESSORS)) { +@@ -118,8 +119,8 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap + n.setName(translateQueueName(n.getNameAsString())); + if (MPSC_LINKED_ATOMIC_QUEUE_NAME.equals(n.getNameAsString())) { + // Special case for MPSC because the Unsafe variant has a static factory method and a protected constructor. +- n.setModifier(Modifier.PROTECTED, false); +- n.setModifier(Modifier.PUBLIC, true); ++ n.setModifier(Keyword.PROTECTED, false); ++ n.setModifier(Keyword.PUBLIC, true); + } + } + +@@ -177,7 +178,7 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap + + // Remove all static fields + for (FieldDeclaration field : node.getFields()) { +- if (field.getModifiers().contains(Modifier.STATIC)) { ++ if (field.getModifiers().contains(Modifier.staticModifier())) { + field.remove(); + continue; + } +@@ -222,7 +223,7 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap + String className = n.getNameAsString(); + + for (FieldDeclaration field : n.getFields()) { +- if (field.getModifiers().contains(Modifier.STATIC)) { ++ if (field.getModifiers().contains(Keyword.STATIC)) { + // Ignore statics + continue; + } +@@ -269,7 +270,7 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap + usesFieldUpdater = true; + String fieldUpdaterFieldName = fieldUpdaterFieldName(variableName); + +- MethodDeclaration method = n.addMethod("xchgProducerNode", Modifier.PROTECTED, Modifier.FINAL); ++ MethodDeclaration method = n.addMethod("xchgProducerNode", Keyword.PROTECTED, Keyword.FINAL); + method.setType(simpleParametricType("LinkedQueueAtomicNode", "E")); + method.addParameter(simpleParametricType("LinkedQueueAtomicNode", "E"), "newValue"); + method.setBody(fieldUpdaterGetAndSet(fieldUpdaterFieldName, "newValue")); +@@ -285,7 +286,7 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap + } + + if (usesFieldUpdater) { +- field.addModifier(Modifier.VOLATILE); ++ field.addModifier(Keyword.VOLATILE); + } + } + } +@@ -380,12 +381,11 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap + * @return + */ + private static FieldDeclaration fieldDeclarationWithInitialiser(Type type, String name, Expression initializer, +- Modifier... modifiers) { ++ Keyword... modifiers) { + FieldDeclaration fieldDeclaration = new FieldDeclaration(); + VariableDeclarator variable = new VariableDeclarator(type, name, initializer); + fieldDeclaration.getVariables().add(variable); +- EnumSet modifierSet = EnumSet.copyOf(Arrays.asList(modifiers)); +- fieldDeclaration.setModifiers(modifierSet); ++ fieldDeclaration.setModifiers(modifiers); + return fieldDeclaration; + } + +@@ -403,7 +403,7 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap + ClassOrInterfaceType type = simpleParametricType("AtomicReferenceFieldUpdater", className, + "LinkedQueueAtomicNode"); + FieldDeclaration newField = fieldDeclarationWithInitialiser(type, fieldUpdaterFieldName(variableName), +- initializer, Modifier.PRIVATE, Modifier.STATIC, Modifier.FINAL); ++ initializer, Keyword.PRIVATE, Keyword.STATIC, Keyword.FINAL); + return newField; + } + +@@ -425,7 +425,7 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap + + ClassOrInterfaceType type = simpleParametricType("AtomicLongFieldUpdater", className); + FieldDeclaration newField = fieldDeclarationWithInitialiser(type, fieldUpdaterFieldName(variableName), +- initializer, Modifier.PRIVATE, Modifier.STATIC, Modifier.FINAL); ++ initializer, Keyword.PRIVATE, Keyword.STATIC, Keyword.FINAL); + return newField; + } + +@@ -621,7 +621,7 @@ public final class JavaParsingAtomicLinkedQueueGenerator extends VoidVisitorAdap + for (int i = 1; i < args.length; i++) { + File file = new File(args[i]); + System.out.println("Processing " + file); +- CompilationUnit cu = JavaParser.parse(file); ++ CompilationUnit cu = new JavaParser().parse(file).getResult().get(); + new JavaParsingAtomicLinkedQueueGenerator(file.getName()).visit(cu, null); + + organiseImports(cu); +diff --git a/jctools-build/src/main/java/org/jctools/queues/atomic/TraceVisitor.java b/jctools-build/src/main/java/org/jctools/queues/atomic/TraceVisitor.java +index 7ff87f4..e64cf74 100644 +--- a/jctools-build/src/main/java/org/jctools/queues/atomic/TraceVisitor.java ++++ b/jctools-build/src/main/java/org/jctools/queues/atomic/TraceVisitor.java +@@ -58,11 +58,11 @@ import com.github.javaparser.ast.expr.TypeExpr; + import com.github.javaparser.ast.expr.UnaryExpr; + import com.github.javaparser.ast.expr.VariableDeclarationExpr; + import com.github.javaparser.ast.modules.ModuleDeclaration; +-import com.github.javaparser.ast.modules.ModuleExportsStmt; +-import com.github.javaparser.ast.modules.ModuleOpensStmt; +-import com.github.javaparser.ast.modules.ModuleProvidesStmt; +-import com.github.javaparser.ast.modules.ModuleRequiresStmt; +-import com.github.javaparser.ast.modules.ModuleUsesStmt; ++import com.github.javaparser.ast.modules.ModuleExportsDirective; ++import com.github.javaparser.ast.modules.ModuleOpensDirective; ++import com.github.javaparser.ast.modules.ModuleProvidesDirective; ++import com.github.javaparser.ast.modules.ModuleRequiresDirective; ++import com.github.javaparser.ast.modules.ModuleUsesDirective; + import com.github.javaparser.ast.stmt.AssertStmt; + import com.github.javaparser.ast.stmt.BlockStmt; + import com.github.javaparser.ast.stmt.BreakStmt; +@@ -72,13 +72,13 @@ import com.github.javaparser.ast.stmt.DoStmt; + import com.github.javaparser.ast.stmt.EmptyStmt; + import com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt; + import com.github.javaparser.ast.stmt.ExpressionStmt; ++import com.github.javaparser.ast.stmt.ForEachStmt; + import com.github.javaparser.ast.stmt.ForStmt; +-import com.github.javaparser.ast.stmt.ForeachStmt; + import com.github.javaparser.ast.stmt.IfStmt; + import com.github.javaparser.ast.stmt.LabeledStmt; + import com.github.javaparser.ast.stmt.LocalClassDeclarationStmt; + import com.github.javaparser.ast.stmt.ReturnStmt; +-import com.github.javaparser.ast.stmt.SwitchEntryStmt; ++import com.github.javaparser.ast.stmt.SwitchEntry; + import com.github.javaparser.ast.stmt.SwitchStmt; + import com.github.javaparser.ast.stmt.SynchronizedStmt; + import com.github.javaparser.ast.stmt.ThrowStmt; +@@ -317,8 +317,8 @@ public final class TraceVisitor extends VoidVisitorAdapter { + } + + @Override +- public void visit(ForeachStmt n, Void arg) { +- out.println("ForeachStmt: " + (extended ? n : "")); ++ public void visit(ForEachStmt n, Void arg) { ++ out.println("ForEachStmt: " + (extended ? n : "")); + super.visit(n, arg); + } + +@@ -445,31 +445,31 @@ public final class TraceVisitor extends VoidVisitorAdapter { + } + + @Override +- public void visit(ModuleExportsStmt n, Void arg) { ++ public void visit(ModuleExportsDirective n, Void arg) { + out.println("ModuleExportsStmt: " + (extended ? n : "")); + super.visit(n, arg); + } + + @Override +- public void visit(ModuleOpensStmt n, Void arg) { ++ public void visit(ModuleOpensDirective n, Void arg) { + out.println("ModuleOpensStmt: " + (extended ? n : "")); + super.visit(n, arg); + } + + @Override +- public void visit(ModuleProvidesStmt n, Void arg) { ++ public void visit(ModuleProvidesDirective n, Void arg) { + out.println("ModuleProvidesStmt: " + (extended ? n : "")); + super.visit(n, arg); + } + + @Override +- public void visit(ModuleRequiresStmt n, Void arg) { ++ public void visit(ModuleRequiresDirective n, Void arg) { + out.println("ModuleRequiresStmt: " + (extended ? n : "")); + super.visit(n, arg); + } + + @Override +- public void visit(ModuleUsesStmt n, Void arg) { ++ public void visit(ModuleUsesDirective n, Void arg) { + out.println("ModuleUsesStmt: " + (extended ? n : "")); + super.visit(n, arg); + } +@@ -559,7 +559,7 @@ public final class TraceVisitor extends VoidVisitorAdapter { + } + + @Override +- public void visit(SwitchEntryStmt n, Void arg) { ++ public void visit(SwitchEntry n, Void arg) { + out.println("SwitchEntryStmt: " + (extended ? n : "")); + super.visit(n, arg); + } +@@ -665,7 +665,7 @@ public final class TraceVisitor extends VoidVisitorAdapter { + public static void main(String[] args) throws Exception { + for (String file : args) { + System.out.println("Opening " + file); +- CompilationUnit cu = JavaParser.parse(new File(file)); ++ CompilationUnit cu = new JavaParser().parse(new File(file)).getResult().get(); + new TraceVisitor(System.out, false).visit(cu, null); + System.out.println(); + System.out.println(); +-- +2.26.2 + diff --git a/jctools.spec b/jctools.spec index 2381c85..4ac432b 100644 --- a/jctools.spec +++ b/jctools.spec @@ -3,15 +3,18 @@ Name: jctools Version: 2.1.2 -Release: 9%{?dist} +Release: 10%{?dist} Summary: Java Concurrency Tools for the JVM License: ASL 2.0 URL: http://jctools.github.io/JCTools/ Source0: https://github.com/JCTools/JCTools/archive/v%{namedversion}/%{name}-%{namedversion}.tar.gz +# Update for javaparser API change, taken from https://github.com/JCTools/JCTools/commit/b8311b2f818e40cd3e2efa6686169ec7d4ee7dac +Patch0: 0001-Javaparser-API.patch + BuildRequires: java-1.8.0-openjdk-devel BuildRequires: maven-local -BuildRequires: mvn(com.github.javaparser:javaparser-core) +BuildRequires: mvn(com.github.javaparser:javaparser-core) >= 3.14.16 BuildRequires: mvn(com.google.guava:guava-testlib) BuildRequires: mvn(junit:junit) BuildRequires: mvn(org.apache.felix:maven-bundle-plugin) @@ -61,6 +64,8 @@ JCTools Parent POM. %prep %setup -q -n JCTools-%{namedversion} +%patch0 -p1 + # Cleanup find . -name '*.class' -print -delete find . -name '*.jar' -print -delete @@ -132,6 +137,9 @@ export JAVA_HOME=%{_jvmdir}/java-1.8.0 %license LICENSE %changelog +* Tue Jul 28 2020 Mat Booth - 2.1.2-10 +- Patch for javaparser API changes + * Tue Jul 28 2020 Fedora Release Engineering - 2.1.2-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild