public Builder( String[] namespace, String name ) { this.name = new QualifiedName( namespace, name ); }
public Builder( String[] namespace, String name ) { this.name = new QualifiedName( namespace, name ); }
private FromEpoch() { this.signature = new UserFunctionSignature( new QualifiedName( new String[] {"datetime"}, "fromepoch" ), SIGNATURE, Neo4jTypes.NTDateTime, null, new String[0], DESCRIPTION, true ); }
private FromEpochMillis() { this.signature = new UserFunctionSignature( new QualifiedName( new String[] {"datetime"}, "fromepochmillis" ), SIGNATURE, Neo4jTypes.NTDateTime, null, new String[0], DESCRIPTION, true ); }
TemporalFunction( Neo4jTypes.AnyType result, Supplier<ZoneId> defaultZone ) { String basename = basename( getClass() ); assert result.getClass().getSimpleName().equals( basename + "Type" ) : "result type should match function name"; Description description = getClass().getAnnotation( Description.class ); this.signature = new UserFunctionSignature( new QualifiedName( new String[0], basename.toLowerCase() ), INPUT_SIGNATURE, result, null, ALLOWED, description == null ? null : description.value(), true ); this.defaultZone = defaultZone; }
private QualifiedName extractName( Class<?> procDefinition, Method m, String valueName, String definedName ) { String procName = definedName.trim().isEmpty() ? valueName : definedName; if ( procName.trim().length() > 0 ) { String[] split = procName.split( "\\." ); if ( split.length == 1 ) { return new QualifiedName( new String[0], split[0] ); } else { int lastElement = split.length - 1; return new QualifiedName( Arrays.copyOf( split, lastElement ), split[lastElement] ); } } Package pkg = procDefinition.getPackage(); // Package is null if class is in root package String[] namespace = pkg == null ? new String[0] : pkg.getName().split( "\\." ); String name = m.getName(); return new QualifiedName( namespace, name ); }
private Between( String unit ) { String unitString; switch ( unit ) { case "between": this.unit = null; unitString = "logical units"; break; case "inMonths": this.unit = ChronoUnit.MONTHS; unitString = "months"; break; case "inDays": this.unit = ChronoUnit.DAYS; unitString = "days"; break; case "inSeconds": this.unit = ChronoUnit.SECONDS; unitString = "seconds"; break; default: throw new IllegalStateException( "Unsupported unit: " + unit ); } this.signature = new UserFunctionSignature( new QualifiedName( new String[] {"duration"}, unit ), SIGNATURE, Neo4jTypes.NTDuration, null, new String[0], String.format( DESCRIPTION, unitString ), true ); }
private QualifiedName toLowerCaseName( QualifiedName name ) { String[] oldNs = name.namespace(); String[] lowerCaseNamespace = new String[oldNs.length]; for ( int i = 0; i < oldNs.length; i++ ) { lowerCaseNamespace[i] = oldNs[i].toLowerCase(); } String lowercaseName = name.name().toLowerCase(); return new QualifiedName( lowerCaseNamespace, lowercaseName ); } }
SubFunction( TemporalFunction<T> base, String name, List<FieldSignature> input, String description ) { this.function = base; this.signature = new UserFunctionSignature( new QualifiedName( new String[] {base.signature.name().name()}, name ), input, base.signature.outputType(), null, ALLOWED, description, true ); }
@Test public void okToHaveProcsOnlyDifferByCase() { // given ProcedureHolder<String> procHolder = new ProcedureHolder<>(); procHolder.put( new QualifiedName( new String[0], "CASESENSITIVE" ), "CASESENSITIVEItem", false ); procHolder.put( new QualifiedName( new String[0], "CaseSensitive" ), "CaseSensitiveItem", false ); // then assertThat( procHolder.get( new QualifiedName( new String[0], "CASESENSITIVE" ) ), equalTo( "CASESENSITIVEItem" ) ); assertThat( procHolder.get( new QualifiedName( new String[0], "CaseSensitive" ) ), equalTo( "CaseSensitiveItem" ) ); assertThat( procHolder.idOf( new QualifiedName( new String[0], "CASESENSITIVE" ) ), equalTo( 0 ) ); assertThat( procHolder.idOf( new QualifiedName( new String[0], "CaseSensitive" ) ), equalTo( 1 ) ); }
@Test public void shouldGetCaseInsensitiveFromHolder() { // given ProcedureHolder<String> procHolder = new ProcedureHolder<>(); QualifiedName qualifiedName = new QualifiedName( new String[0], "CaseInSensitive" ); String item = "CaseInSensitiveItem"; procHolder.put( qualifiedName, item, true ); // then QualifiedName lowerCaseName = new QualifiedName( new String[0], "caseinsensitive" ); assertThat( procHolder.get( lowerCaseName ), equalTo( item ) ); assertThat( procHolder.idOf( lowerCaseName ), equalTo( 0 ) ); }
@Test public void shouldGetProcedureFromHolder() { // given ProcedureHolder<String> procHolder = new ProcedureHolder<>(); QualifiedName qualifiedName = new QualifiedName( new String[0], "CaseSensitive" ); String item = "CaseSensitiveItem"; procHolder.put( qualifiedName, item, false ); // then assertThat( procHolder.get( qualifiedName ), equalTo( item ) ); assertThat( procHolder.idOf( qualifiedName ), equalTo( 0 ) ); }
@Test public void shouldGetProcedureByName() throws Throwable { // Given internalKernel().registerProcedure( procedure ); // When ProcedureSignature found = procs() .procedureGet( new QualifiedName( new String[]{"example"}, "exampleProc" ) ).signature(); // Then assertThat( found, equalTo( signature ) ); commit(); }
@Test public void shouldCallReadOnlyProcedure() throws Throwable { // Given internalKernel().registerProcedure( procedure ); // When RawIterator<Object[],ProcedureException> found = procs() .procedureCallRead( procs().procedureGet( new QualifiedName( new String[]{"example"}, "exampleProc" ) ).id(), new Object[]{1337} ); // Then assertThat( asList( found ), contains( equalTo( new Object[]{1337} ) ) ); commit(); }
@Test public void canOverwriteFunctionAndChangeCaseSensitivity() { // given ProcedureHolder<String> procHolder = new ProcedureHolder<>(); QualifiedName qualifiedName = new QualifiedName( new String[0], "CaseInSensitive" ); String item = "CaseInSensitiveItem"; procHolder.put( qualifiedName, item, true ); // then QualifiedName lowerCaseName = new QualifiedName( new String[0], "caseinsensitive" ); assertThat( procHolder.get( lowerCaseName ), equalTo( item ) ); assertThat( procHolder.idOf( lowerCaseName ), equalTo( 0 ) ); // and then procHolder.put( qualifiedName, item, false ); assertNull( procHolder.get( lowerCaseName ) ); try { procHolder.idOf( lowerCaseName ); fail( "Should have failed to find with lower case" ); } catch ( NoSuchElementException e ) { // expected } } }
public static QualifiedName qualifiedName(@Name("name") String name) { String[] names = name.split("\\."); List<String> namespace = new ArrayList<>(names.length); namespace.add(PREFIX); namespace.addAll(Arrays.asList(names)); return new QualifiedName(namespace.subList(0,namespace.size()-1), names[names.length-1]); }
private FromEpochMillis() { this.signature = new UserFunctionSignature( new QualifiedName( new String[] {"datetime"}, "fromepochmillis" ), SIGNATURE, Neo4jTypes.NTDateTime, null, new String[0], DESCRIPTION, true ); }
TemporalFunction( Neo4jTypes.AnyType result, Supplier<ZoneId> defaultZone ) { String basename = basename( getClass() ); assert result.getClass().getSimpleName().equals( basename + "Type" ) : "result type should match function name"; Description description = getClass().getAnnotation( Description.class ); this.signature = new UserFunctionSignature( new QualifiedName( new String[0], basename.toLowerCase() ), INPUT_SIGNATURE, result, null, ALLOWED, description == null ? null : description.value(), true ); this.defaultZone = defaultZone; }
RoleProcedure() { super( procedureSignature( new QualifiedName( PROCEDURE_NAMESPACE, PROCEDURE_NAME ) ) .out( OUTPUT_NAME, Neo4jTypes.NTString ) .description( "The role of a specific instance in the cluster." ) .build() ); }
public ClusterOverviewProcedure( TopologyService topologyService, LogProvider logProvider ) { super( procedureSignature( new QualifiedName( PROCEDURE_NAMESPACE, PROCEDURE_NAME ) ) .out( "id", Neo4jTypes.NTString ) .out( "addresses", Neo4jTypes.NTList( Neo4jTypes.NTString ) ) .out( "role", Neo4jTypes.NTString ) .out( "groups", Neo4jTypes.NTList( Neo4jTypes.NTString ) ) .out( "database", Neo4jTypes.NTString ) .description( "Overview of all currently accessible cluster members and their roles." ) .build() ); this.topologyService = topologyService; this.log = logProvider.getLog( getClass() ); }