Search in sources :

Example 31 with NamedToken

use of org.neo4j.token.api.NamedToken in project neo4j by neo4j.

the class KernelToken method labelsGetAllTokens.

@Override
public Iterator<NamedToken> labelsGetAllTokens() {
    ktx.assertOpen();
    AccessMode mode = ktx.securityContext().mode();
    return Iterators.stream(tokenHolders.labelTokens().getAllTokens().iterator()).filter(label -> mode.allowsTraverseNode(label.id())).iterator();
}
Also used : KernelTransactionImplementation(org.neo4j.kernel.impl.api.KernelTransactionImplementation) LabelNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.LabelNotFoundKernelException) Iterator(java.util.Iterator) Iterators(org.neo4j.internal.helpers.collection.Iterators) PrivilegeAction(org.neo4j.internal.kernel.api.security.PrivilegeAction) RelationshipTypeIdNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.RelationshipTypeIdNotFoundKernelException) TransactionState(org.neo4j.kernel.api.txstate.TransactionState) AccessMode(org.neo4j.internal.kernel.api.security.AccessMode) TokenHolder(org.neo4j.token.api.TokenHolder) PropertyKeyIdNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException) CommandCreationContext(org.neo4j.storageengine.api.CommandCreationContext) KernelException(org.neo4j.exceptions.KernelException) TokenHolders(org.neo4j.token.TokenHolders) TokenNotFoundException(org.neo4j.token.api.TokenNotFoundException) NamedToken(org.neo4j.token.api.NamedToken) TokenWrite.checkValidTokenName(org.neo4j.internal.kernel.api.TokenWrite.checkValidTokenName) StorageReader(org.neo4j.storageengine.api.StorageReader) IntSupplier(java.util.function.IntSupplier) IdCapacityExceededException(org.neo4j.internal.id.IdCapacityExceededException) Token(org.neo4j.internal.kernel.api.Token) TokenCapacityExceededKernelException(org.neo4j.internal.kernel.api.exceptions.schema.TokenCapacityExceededKernelException) AccessMode(org.neo4j.internal.kernel.api.security.AccessMode)

Example 32 with NamedToken

use of org.neo4j.token.api.NamedToken in project neo4j by neo4j.

the class KernelToken method propertyKeyGetAllTokens.

@Override
public Iterator<NamedToken> propertyKeyGetAllTokens() {
    ktx.assertOpen();
    AccessMode mode = ktx.securityContext().mode();
    return Iterators.stream(tokenHolders.propertyKeyTokens().getAllTokens().iterator()).filter(propKey -> mode.allowsSeePropertyKeyToken(propKey.id())).iterator();
}
Also used : KernelTransactionImplementation(org.neo4j.kernel.impl.api.KernelTransactionImplementation) LabelNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.LabelNotFoundKernelException) Iterator(java.util.Iterator) Iterators(org.neo4j.internal.helpers.collection.Iterators) PrivilegeAction(org.neo4j.internal.kernel.api.security.PrivilegeAction) RelationshipTypeIdNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.RelationshipTypeIdNotFoundKernelException) TransactionState(org.neo4j.kernel.api.txstate.TransactionState) AccessMode(org.neo4j.internal.kernel.api.security.AccessMode) TokenHolder(org.neo4j.token.api.TokenHolder) PropertyKeyIdNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException) CommandCreationContext(org.neo4j.storageengine.api.CommandCreationContext) KernelException(org.neo4j.exceptions.KernelException) TokenHolders(org.neo4j.token.TokenHolders) TokenNotFoundException(org.neo4j.token.api.TokenNotFoundException) NamedToken(org.neo4j.token.api.NamedToken) TokenWrite.checkValidTokenName(org.neo4j.internal.kernel.api.TokenWrite.checkValidTokenName) StorageReader(org.neo4j.storageengine.api.StorageReader) IntSupplier(java.util.function.IntSupplier) IdCapacityExceededException(org.neo4j.internal.id.IdCapacityExceededException) Token(org.neo4j.internal.kernel.api.Token) TokenCapacityExceededKernelException(org.neo4j.internal.kernel.api.exceptions.schema.TokenCapacityExceededKernelException) AccessMode(org.neo4j.internal.kernel.api.security.AccessMode)

Example 33 with NamedToken

use of org.neo4j.token.api.NamedToken in project neo4j by neo4j.

the class KernelToken method relationshipTypesGetAllTokens.

@Override
public Iterator<NamedToken> relationshipTypesGetAllTokens() {
    ktx.assertOpen();
    AccessMode mode = ktx.securityContext().mode();
    return Iterators.stream(tokenHolders.relationshipTypeTokens().getAllTokens().iterator()).filter(relType -> mode.allowsTraverseRelType(relType.id())).iterator();
}
Also used : KernelTransactionImplementation(org.neo4j.kernel.impl.api.KernelTransactionImplementation) LabelNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.LabelNotFoundKernelException) Iterator(java.util.Iterator) Iterators(org.neo4j.internal.helpers.collection.Iterators) PrivilegeAction(org.neo4j.internal.kernel.api.security.PrivilegeAction) RelationshipTypeIdNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.RelationshipTypeIdNotFoundKernelException) TransactionState(org.neo4j.kernel.api.txstate.TransactionState) AccessMode(org.neo4j.internal.kernel.api.security.AccessMode) TokenHolder(org.neo4j.token.api.TokenHolder) PropertyKeyIdNotFoundKernelException(org.neo4j.internal.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException) CommandCreationContext(org.neo4j.storageengine.api.CommandCreationContext) KernelException(org.neo4j.exceptions.KernelException) TokenHolders(org.neo4j.token.TokenHolders) TokenNotFoundException(org.neo4j.token.api.TokenNotFoundException) NamedToken(org.neo4j.token.api.NamedToken) TokenWrite.checkValidTokenName(org.neo4j.internal.kernel.api.TokenWrite.checkValidTokenName) StorageReader(org.neo4j.storageengine.api.StorageReader) IntSupplier(java.util.function.IntSupplier) IdCapacityExceededException(org.neo4j.internal.id.IdCapacityExceededException) Token(org.neo4j.internal.kernel.api.Token) TokenCapacityExceededKernelException(org.neo4j.internal.kernel.api.exceptions.schema.TokenCapacityExceededKernelException) AccessMode(org.neo4j.internal.kernel.api.security.AccessMode)

Example 34 with NamedToken

use of org.neo4j.token.api.NamedToken in project neo4j by neo4j.

the class PlainOperationsTest method shouldReleaseAcquiredSchemaWriteLockIfNodePropertyExistenceConstraintCreationFails.

@Test
void shouldReleaseAcquiredSchemaWriteLockIfNodePropertyExistenceConstraintCreationFails() throws Exception {
    // given
    NodeExistenceConstraintDescriptor constraint = existsForSchema(schema);
    storageReaderWithConstraints(constraint);
    int labelId = schema.getLabelId();
    int propertyId = schema.getPropertyId();
    when(tokenHolders.labelTokens().getTokenById(labelId)).thenReturn(new NamedToken("Label", labelId));
    when(tokenHolders.propertyKeyTokens().getTokenById(propertyId)).thenReturn(new NamedToken("prop", labelId));
    // when
    try {
        operations.nodePropertyExistenceConstraintCreate(schema, "constraint name");
        fail("Expected an exception because this schema should already be constrained.");
    } catch (AlreadyConstrainedException ignore) {
    // Good.
    }
    // then
    order.verify(locks).acquireExclusive(LockTracer.NONE, ResourceTypes.LABEL, labelId);
    order.verify(storageReader).constraintsGetForSchema(schema);
    order.verify(locks).releaseExclusive(ResourceTypes.LABEL, labelId);
}
Also used : AlreadyConstrainedException(org.neo4j.kernel.api.exceptions.schema.AlreadyConstrainedException) NodeExistenceConstraintDescriptor(org.neo4j.internal.schema.constraints.NodeExistenceConstraintDescriptor) NamedToken(org.neo4j.token.api.NamedToken) Test(org.junit.jupiter.api.Test)

Example 35 with NamedToken

use of org.neo4j.token.api.NamedToken in project neo4j by neo4j.

the class PlainOperationsTest method mustAssignNameToIndexesThatDoNotHaveUserSuppliedName.

@Test
void mustAssignNameToIndexesThatDoNotHaveUserSuppliedName() throws Exception {
    when(creationContext.reserveSchema()).thenReturn(1L, 2L, 3L);
    when(tokenHolders.labelTokens().getTokenById(1)).thenReturn(new NamedToken("LabelA", 1));
    when(tokenHolders.labelTokens().getTokenById(2)).thenReturn(new NamedToken("LabelB", 1));
    when(tokenHolders.labelTokens().getTokenById(3)).thenReturn(new NamedToken("LabelC", 1));
    when(tokenHolders.propertyKeyTokens().getTokenById(1)).thenReturn(new NamedToken("PropA", 1));
    when(tokenHolders.propertyKeyTokens().getTokenById(2)).thenReturn(new NamedToken("PropB", 2));
    storageReaderWithoutConstraints();
    when(storageReader.indexGetForSchema(any())).thenReturn(Collections.emptyIterator());
    operations.indexCreate(SchemaDescriptor.forLabel(1, 1), null);
    operations.indexCreate(IndexPrototype.forSchema(SchemaDescriptor.fulltext(NODE, new int[] { 2, 3 }, new int[] { 1, 2 })).withIndexType(IndexType.FULLTEXT));
    operations.indexCreate(SchemaDescriptor.forLabel(3, 1), "provider-1.0", IndexConfig.empty(), null);
    IndexDescriptor[] indexDescriptors = txState.indexChanges().getAdded().stream().sorted(Comparator.comparing(d -> d.schema().getEntityTokenIds()[0])).toArray(IndexDescriptor[]::new);
    assertThat(indexDescriptors.length).as(Arrays.toString(indexDescriptors)).isEqualTo(3);
    assertThat(indexDescriptors[0].getId()).as(indexDescriptors[0].toString()).isEqualTo(1L);
    assertThat(indexDescriptors[1].getId()).as(indexDescriptors[1].toString()).isEqualTo(2L);
    assertThat(indexDescriptors[2].getId()).as(indexDescriptors[2].toString()).isEqualTo(3L);
    assertThat(indexDescriptors[0].getName()).as(indexDescriptors[0].toString()).isEqualTo("index_5c81a58e");
    assertThat(indexDescriptors[1].getName()).as(indexDescriptors[1].toString()).isEqualTo("index_2813986a");
    assertThat(indexDescriptors[2].getName()).as(indexDescriptors[2].toString()).isEqualTo("index_edb2dfd3");
}
Also used : NamedToken(org.neo4j.token.api.NamedToken) IndexDescriptor(org.neo4j.internal.schema.IndexDescriptor) Test(org.junit.jupiter.api.Test)

Aggregations

NamedToken (org.neo4j.token.api.NamedToken)63 Test (org.junit.jupiter.api.Test)41 ArrayList (java.util.ArrayList)6 TokenNotFoundException (org.neo4j.token.api.TokenNotFoundException)6 IndexDescriptor (org.neo4j.internal.schema.IndexDescriptor)5 SchemaRule (org.neo4j.internal.schema.SchemaRule)5 NonUniqueTokenException (org.neo4j.token.api.NonUniqueTokenException)5 TokenHolder (org.neo4j.token.api.TokenHolder)5 AlreadyConstrainedException (org.neo4j.kernel.api.exceptions.schema.AlreadyConstrainedException)4 HashMap (java.util.HashMap)3 Iterator (java.util.Iterator)3 IntSupplier (java.util.function.IntSupplier)3 KernelException (org.neo4j.exceptions.KernelException)3 Iterators (org.neo4j.internal.helpers.collection.Iterators)3 IdCapacityExceededException (org.neo4j.internal.id.IdCapacityExceededException)3 Token (org.neo4j.internal.kernel.api.Token)3 TokenWrite.checkValidTokenName (org.neo4j.internal.kernel.api.TokenWrite.checkValidTokenName)3 LabelNotFoundKernelException (org.neo4j.internal.kernel.api.exceptions.LabelNotFoundKernelException)3 PropertyKeyIdNotFoundKernelException (org.neo4j.internal.kernel.api.exceptions.PropertyKeyIdNotFoundKernelException)3 RelationshipTypeIdNotFoundKernelException (org.neo4j.internal.kernel.api.exceptions.RelationshipTypeIdNotFoundKernelException)3