public final class JavaParsingAtomicArrayQueueGenerator extends JavaParsingAtomicQueueGenerator
| Modifier and Type | Field and Description |
|---|---|
private static java.lang.String |
GEN_DIRECTIVE_CLASS_CONTAINS_ORDERED_FIELD_ACCESSORS |
private static java.lang.String |
GEN_DIRECTIVE_METHOD_IGNORE |
INDENT_LEVEL, sourceFileName| Constructor and Description |
|---|
JavaParsingAtomicArrayQueueGenerator(java.lang.String sourceFileName) |
| Modifier and Type | Method and Description |
|---|---|
private com.github.javaparser.ast.type.ClassOrInterfaceType |
atomicLongArrayType() |
private com.github.javaparser.ast.type.ClassOrInterfaceType |
atomicRefArrayType(com.github.javaparser.ast.type.ArrayType in) |
(package private) java.lang.String |
fieldUpdaterFieldName(java.lang.String fieldName) |
private boolean |
isLongArray(com.github.javaparser.ast.type.Type in) |
static void |
main(java.lang.String[] args) |
(package private) void |
organiseImports(com.github.javaparser.ast.CompilationUnit cu) |
private void |
patchAtomicFieldUpdaterAccessorMethods(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration n)
For each method accessor to a field, add in the calls necessary to
AtomicFieldUpdaters.
|
private void |
patchMethodAsDeprecatedRedirector(com.github.javaparser.ast.body.MethodDeclaration methodToPatch,
java.lang.String toMethodName,
com.github.javaparser.ast.type.Type returnType,
com.github.javaparser.ast.body.Parameter... parameters)
Given a method declaration node this method will replace it's code and
signature with code to redirect all calls to it to the
newMethodName. |
(package private) void |
processSpecialNodeTypes(com.github.javaparser.ast.nodeTypes.NodeWithType<?,com.github.javaparser.ast.type.Type> node,
java.lang.String name)
Given a variable declaration of some sort, check it's name and type and
if it looks like any of the key type changes between unsafe and atomic
queues, perform the conversion to change it's type.
|
private void |
replaceParentClassesForAtomics(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration n)
Searches all extended or implemented super classes or interfaces for
special classes that differ with the atomics version and replaces them
with the appropriate class.
|
(package private) java.lang.String |
translateQueueName(java.lang.String originalQueueName) |
void |
visit(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration node,
java.lang.Void arg) |
void |
visit(com.github.javaparser.ast.body.ConstructorDeclaration n,
java.lang.Void arg) |
capitalise, classType, declareLongFieldUpdater, fieldAssignment, fieldDeclarationWithInitialiser, fieldUpdaterCompareAndSet, fieldUpdaterLazySet, formatMultilineJavadoc, importDeclaration, isCommentPresent, isRefArray, isRefType, main, methodCallExpr, newAtomicLongFieldUpdater, removeStaticFieldsAndInitialisers, returnField, simpleParametricType, staticImportDeclaration, visit, visit, visit, visitvisit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitprivate static final java.lang.String GEN_DIRECTIVE_CLASS_CONTAINS_ORDERED_FIELD_ACCESSORS
private static final java.lang.String GEN_DIRECTIVE_METHOD_IGNORE
JavaParsingAtomicArrayQueueGenerator(java.lang.String sourceFileName)
public static void main(java.lang.String[] args)
throws java.lang.Exception
java.lang.Exceptionpublic void visit(com.github.javaparser.ast.body.ConstructorDeclaration n,
java.lang.Void arg)
visit in interface com.github.javaparser.ast.visitor.VoidVisitor<java.lang.Void>visit in class com.github.javaparser.ast.visitor.VoidVisitorAdapter<java.lang.Void>public void visit(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration node,
java.lang.Void arg)
visit in interface com.github.javaparser.ast.visitor.VoidVisitor<java.lang.Void>visit in class com.github.javaparser.ast.visitor.VoidVisitorAdapter<java.lang.Void>java.lang.String translateQueueName(java.lang.String originalQueueName)
translateQueueName in class JavaParsingAtomicQueueGeneratorjava.lang.String fieldUpdaterFieldName(java.lang.String fieldName)
fieldUpdaterFieldName in class JavaParsingAtomicQueueGeneratorvoid organiseImports(com.github.javaparser.ast.CompilationUnit cu)
organiseImports in class JavaParsingAtomicQueueGeneratorvoid processSpecialNodeTypes(com.github.javaparser.ast.nodeTypes.NodeWithType<?,com.github.javaparser.ast.type.Type> node,
java.lang.String name)
processSpecialNodeTypes in class JavaParsingAtomicQueueGeneratorprivate void replaceParentClassesForAtomics(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration n)
private void patchMethodAsDeprecatedRedirector(com.github.javaparser.ast.body.MethodDeclaration methodToPatch,
java.lang.String toMethodName,
com.github.javaparser.ast.type.Type returnType,
com.github.javaparser.ast.body.Parameter... parameters)
newMethodName. Method signatures of both methods must match
exactly.private void patchAtomicFieldUpdaterAccessorMethods(com.github.javaparser.ast.body.ClassOrInterfaceDeclaration n)
lv, lp and
sv are simple field accesses with only so and cas
using the AtomicFieldUpdaters.n - the AST node for the containing classprivate boolean isLongArray(com.github.javaparser.ast.type.Type in)
private com.github.javaparser.ast.type.ClassOrInterfaceType atomicRefArrayType(com.github.javaparser.ast.type.ArrayType in)
private com.github.javaparser.ast.type.ClassOrInterfaceType atomicLongArrayType()