Skip to content

Commit

Permalink
Merge @​PerformWrites check into procedure processor
Browse files Browse the repository at this point in the history
  • Loading branch information
fbiville committed Jun 23, 2017
1 parent becf0cb commit 0179ad6
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 142 deletions.

This file was deleted.

Expand Up @@ -46,6 +46,7 @@ public class StoredProcedureVisitor extends SimpleElementVisitor8<Stream<Compila
private final ElementVisitor<Stream<CompilationMessage>,Void> classVisitor; private final ElementVisitor<Stream<CompilationMessage>,Void> classVisitor;
private final TypeVisitor<Stream<CompilationMessage>,Void> recordVisitor; private final TypeVisitor<Stream<CompilationMessage>,Void> recordVisitor;
private final ElementVisitor<Stream<CompilationMessage>,Void> parameterVisitor; private final ElementVisitor<Stream<CompilationMessage>,Void> parameterVisitor;
private final ElementVisitor<Stream<CompilationMessage>,Void> performsWriteVisitor;


public StoredProcedureVisitor( Types typeUtils, Elements elementUtils, boolean ignoresWarnings ) public StoredProcedureVisitor( Types typeUtils, Elements elementUtils, boolean ignoresWarnings )
{ {
Expand All @@ -56,6 +57,7 @@ public StoredProcedureVisitor( Types typeUtils, Elements elementUtils, boolean i
this.classVisitor = new StoredProcedureClassVisitor( typeUtils, elementUtils, ignoresWarnings ); this.classVisitor = new StoredProcedureClassVisitor( typeUtils, elementUtils, ignoresWarnings );
this.recordVisitor = new RecordTypeVisitor( typeUtils, typeMirrors ); this.recordVisitor = new RecordTypeVisitor( typeUtils, typeMirrors );
this.parameterVisitor = new ParameterVisitor( new ParameterTypeVisitor( typeUtils, typeMirrors ) ); this.parameterVisitor = new ParameterVisitor( new ParameterTypeVisitor( typeUtils, typeMirrors ) );
this.performsWriteVisitor = new PerformsWriteMethodVisitor();
} }


/** /**
Expand All @@ -66,7 +68,8 @@ public Stream<CompilationMessage> visitExecutable( ExecutableElement executableE
{ {
return Stream.of( classVisitor.visit( executableElement.getEnclosingElement() ), return Stream.of( classVisitor.visit( executableElement.getEnclosingElement() ),
validateParameters( executableElement.getParameters(), ignored ), validateParameters( executableElement.getParameters(), ignored ),
validateReturnType( executableElement ) ).flatMap( Function.identity() ); validateReturnType( executableElement ), validatePerformsWriteUsage( executableElement ) )
.flatMap( Function.identity() );
} }


private Stream<CompilationMessage> validateParameters( List<? extends VariableElement> parameters, Void ignored ) private Stream<CompilationMessage> validateParameters( List<? extends VariableElement> parameters, Void ignored )
Expand Down Expand Up @@ -97,6 +100,11 @@ private Stream<CompilationMessage> validateReturnType( ExecutableElement method
return recordVisitor.visit( returnType ); return recordVisitor.visit( returnType );
} }


private Stream<CompilationMessage> validatePerformsWriteUsage( ExecutableElement executableElement )
{
return performsWriteVisitor.visit( executableElement );
}

private AnnotationMirror annotationMirror( List<? extends AnnotationMirror> mirrors ) private AnnotationMirror annotationMirror( List<? extends AnnotationMirror> mirrors )
{ {
AnnotationTypeVisitor nameVisitor = new AnnotationTypeVisitor( Name.class ); AnnotationTypeVisitor nameVisitor = new AnnotationTypeVisitor( Name.class );
Expand Down

This file was deleted.

Expand Up @@ -256,4 +256,17 @@ public void fails_if_context_injected_fields_have_unsupported_types()
"BadContextUnsupportedTypeError#foo, expected one of: <org.neo4j.graphdb.GraphDatabaseService>, <org.neo4j.logging.Log>, <org.neo4j.procedure.TerminationGuard>, <org.neo4j.kernel.api.security.SecurityContext>, <org.neo4j.procedure.ProcedureTransaction>" ) "BadContextUnsupportedTypeError#foo, expected one of: <org.neo4j.graphdb.GraphDatabaseService>, <org.neo4j.logging.Log>, <org.neo4j.procedure.TerminationGuard>, <org.neo4j.kernel.api.security.SecurityContext>, <org.neo4j.procedure.ProcedureTransaction>" )
.in( sproc ).onLine( 28 ); .in( sproc ).onLine( 28 );
} }

@Test
public void fails_with_conflicting_mode()
{
JavaFileObject procedure = JavaFileObjectUtils.INSTANCE.procedureSource(
"invalid/conflicting_mode/ConflictingMode.java" );

assert_().about( javaSource() ).that( procedure ).processedWith( processor ).failsToCompile()
.withErrorCount( 1 )
.withErrorContaining( "@PerformsWrites usage error: cannot use mode other than Mode.DEFAULT" )
.in( procedure ).onLine( 30 );

}
} }

0 comments on commit 0179ad6

Please sign in to comment.