use of org.neo4j.procedure.Name in project neo4j by neo4j.
the class BuiltInProcedures method listConstraints.
@Deprecated(since = "4.2.0", forRemoval = true)
@SystemProcedure
@Description("List all constraints in the database.")
@Procedure(name = "db.constraints", mode = READ, deprecatedBy = "SHOW CONSTRAINTS command")
public Stream<ConstraintResult> listConstraints() {
if (callContext.isSystemDatabase()) {
return Stream.empty();
}
SchemaReadCore schemaRead = kernelTransaction.schemaRead().snapshot();
List<ConstraintResult> result = new ArrayList<>();
final List<ConstraintDescriptor> constraintDescriptors = asList(schemaRead.constraintsGetAll());
for (ConstraintDescriptor constraint : constraintDescriptors) {
String description = ConstraintsProcedureUtil.prettyPrint(constraint, kernelTransaction.tokenRead());
String details = constraint.userDescription(kernelTransaction.tokenRead());
result.add(new ConstraintResult(constraint.getName(), description, details));
}
result.sort(Comparator.comparing(r -> r.name));
return result.stream();
}
use of org.neo4j.procedure.Name in project neo4j by neo4j.
the class BuiltInProcedures method listLabels.
@SystemProcedure
@Description("List all available labels in the database.")
@Procedure(name = "db.labels", mode = READ)
public Stream<LabelResult> listLabels() {
if (callContext.isSystemDatabase()) {
return Stream.empty();
}
AccessMode mode = kernelTransaction.securityContext().mode();
TokenRead tokenRead = kernelTransaction.tokenRead();
List<LabelResult> labelsInUse;
try (KernelTransaction.Revertable ignore = kernelTransaction.overrideWith(SecurityContext.AUTH_DISABLED)) {
// Get all labels that are in use as seen by a super user
labelsInUse = stream(LABELS.inUse(kernelTransaction)).filter(label -> mode.allowsTraverseNode(tokenRead.nodeLabel(label.name()))).map(LabelResult::new).collect(Collectors.toList());
}
return labelsInUse.stream();
}
use of org.neo4j.procedure.Name in project neo4j by neo4j.
the class MethodSignatureCompiler method signatureFor.
List<FieldSignature> signatureFor(Method method) throws ProcedureException {
Parameter[] params = method.getParameters();
Type[] types = method.getGenericParameterTypes();
List<FieldSignature> signature = new ArrayList<>(params.length);
boolean seenDefault = false;
for (int i = 0; i < params.length; i++) {
Parameter param = params[i];
Type type = types[i];
if (!param.isAnnotationPresent(Name.class)) {
throw new ProcedureException(Status.Procedure.ProcedureRegistrationFailed, "Argument at position %d in method `%s` is missing an `@%s` annotation.%n" + "Please add the annotation, recompile the class and try again.", i, method.getName(), Name.class.getSimpleName());
}
Name parameter = param.getAnnotation(Name.class);
String name = parameter.value();
if (name.isBlank()) {
throw new ProcedureException(Status.Procedure.ProcedureRegistrationFailed, "Argument at position %d in method `%s` is annotated with a name,%n" + "but the name is empty, please provide a non-empty name for the argument.", i, method.getName());
}
try {
DefaultValueConverter valueConverter = typeCheckers.converterFor(type);
Optional<DefaultParameterValue> defaultValue = valueConverter.defaultValue(parameter.defaultValue());
// it is not allowed to have holes in default values
if (seenDefault && !defaultValue.isPresent()) {
throw new ProcedureException(Status.Procedure.ProcedureRegistrationFailed, "Non-default argument at position %d with name %s in method %s follows default argument. " + "Add a default value or rearrange arguments so that the non-default values comes first.", i, parameter.value(), method.getName());
}
seenDefault = defaultValue.isPresent();
boolean isSensitive = param.isAnnotationPresent(Sensitive.class);
signature.add(defaultValue.map(neo4jValue -> inputField(name, valueConverter.type(), neo4jValue, isSensitive)).orElseGet(() -> inputField(name, valueConverter.type(), isSensitive)));
} catch (ProcedureException e) {
throw new ProcedureException(e.status(), "Argument `%s` at position %d in `%s` with%n" + "type `%s` cannot be converted to a Neo4j type: %s", name, i, method.getName(), param.getType().getSimpleName(), e.getMessage());
}
}
return signature;
}
Aggregations