Exemplo n.º 1
0
        /// <summary>
        /// Serialize the provided IndexRule onto the target buffer
        /// </summary>
        /// <param name="indexDescriptor"> the StoreIndexDescriptor to serialize </param>
        /// <exception cref="IllegalStateException"> if the StoreIndexDescriptor is of type unique, but the owning constrain has not been set </exception>
        public static sbyte[] Serialize(StoreIndexDescriptor indexDescriptor)
        {
            ByteBuffer target = ByteBuffer.allocate(LengthOf(indexDescriptor));

            target.putInt(LEGACY_LABEL_OR_REL_TYPE_ID);
            target.put(INDEX_RULE);

            IndexProviderDescriptor providerDescriptor = indexDescriptor.ProviderDescriptor();

            UTF8.putEncodedStringInto(providerDescriptor.Key, target);
            UTF8.putEncodedStringInto(providerDescriptor.Version, target);

            switch (indexDescriptor.Type())
            {
            case GENERAL:
                target.put(GENERAL_INDEX);
                break;

            case UNIQUE:
                target.put(UNIQUE_INDEX);

                // The owning constraint can be null. See IndexRule.getOwningConstraint()
                long?owningConstraint = indexDescriptor.OwningConstraint;
                target.putLong(owningConstraint == null ? NO_OWNING_CONSTRAINT_YET : owningConstraint);
                break;

            default:
                throw new System.NotSupportedException(format("Got unknown index descriptor type '%s'.", indexDescriptor.Type()));
            }

            indexDescriptor.Schema().processWith(new SchemaDescriptorSerializer(target));
            UTF8.putEncodedStringInto(indexDescriptor.Name, target);
            return(target.array());
        }
        // HELPERS

//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: private void assertSerializeAndDeserializeIndexRule(org.neo4j.storageengine.api.schema.StoreIndexDescriptor indexRule) throws org.neo4j.internal.kernel.api.exceptions.schema.MalformedSchemaRuleException
        private void AssertSerializeAndDeserializeIndexRule(StoreIndexDescriptor indexRule)
        {
            StoreIndexDescriptor deserialized = AssertIndexRule(SerialiseAndDeserialise(indexRule));

            assertThat(deserialized.Id, equalTo(indexRule.Id));
            assertThat(deserialized, equalTo(indexRule));
            assertThat(deserialized.Schema(), equalTo(indexRule.Schema()));
            assertThat(deserialized.ProviderDescriptor(), equalTo(indexRule.ProviderDescriptor()));
        }
Exemplo n.º 3
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldCreateGeneralIndex()
        public virtual void ShouldCreateGeneralIndex()
        {
            // GIVEN
            IndexDescriptor      descriptor = ForLabel(LABEL_ID, PROPERTY_ID_1);
            StoreIndexDescriptor indexRule  = descriptor.WithId(RULE_ID);

            // THEN
            assertThat(indexRule.Id, equalTo(RULE_ID));
            assertFalse(indexRule.CanSupportUniqueConstraint());
            assertThat(indexRule.Schema(), equalTo(descriptor.Schema()));
            assertThat(indexRule, equalTo(descriptor));
            assertThat(indexRule.ProviderDescriptor(), equalTo(ProviderDescriptor));
            assertException(indexRule.getOwningConstraint, typeof(System.InvalidOperationException));
            assertException(() => indexRule.WithOwningConstraint(RULE_ID_2), typeof(System.InvalidOperationException));
        }
Exemplo n.º 4
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldCreateUniqueIndex()
        public virtual void ShouldCreateUniqueIndex()
        {
            // GIVEN
            IndexDescriptor      descriptor = UniqueForLabel(LABEL_ID, PROPERTY_ID_1);
            StoreIndexDescriptor indexRule  = descriptor.WithId(RULE_ID);

            // THEN
            assertThat(indexRule.Id, equalTo(RULE_ID));
            assertTrue(indexRule.CanSupportUniqueConstraint());
            assertThat(indexRule.Schema(), equalTo(descriptor.Schema()));
            assertThat(indexRule, equalTo(descriptor));
            assertThat(indexRule.ProviderDescriptor(), equalTo(ProviderDescriptor));
            assertThat(indexRule.OwningConstraint, equalTo(null));

            StoreIndexDescriptor withConstraint = indexRule.WithOwningConstraint(RULE_ID_2);

            assertThat(withConstraint.OwningConstraint, equalTo(RULE_ID_2));
            assertThat(indexRule.OwningConstraint, equalTo(null));                   // this is unchanged
        }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: private void assertParseIndexRule(String serialized, String name) throws Exception
        private void AssertParseIndexRule(string serialized, string name)
        {
            // GIVEN
            long                    ruleId        = 24;
            IndexDescriptor         index         = ForLabel(512, 4);
            IndexProviderDescriptor indexProvider = new IndexProviderDescriptor("index-provider", "25.0");

            sbyte[] bytes = DecodeBase64(serialized);

            // WHEN
            StoreIndexDescriptor deserialized = AssertIndexRule(SchemaRuleSerialization.Deserialize(ruleId, ByteBuffer.wrap(bytes)));

            // THEN
            assertThat(deserialized.Id, equalTo(ruleId));
            assertThat(deserialized, equalTo(index));
            assertThat(deserialized.Schema(), equalTo(index.Schema()));
            assertThat(deserialized.ProviderDescriptor(), equalTo(indexProvider));
            assertThat(deserialized.Name, @is(name));
            assertException(deserialized.getOwningConstraint, typeof(System.InvalidOperationException));
        }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: private void assertParseUniqueIndexRule(String serialized, String name) throws org.neo4j.internal.kernel.api.exceptions.schema.MalformedSchemaRuleException
        private void AssertParseUniqueIndexRule(string serialized, string name)
        {
            // GIVEN
            long                    ruleId        = 33;
            long                    constraintId  = 11;
            IndexDescriptor         index         = TestIndexDescriptorFactory.uniqueForLabel(61, 988);
            IndexProviderDescriptor indexProvider = new IndexProviderDescriptor("index-provider", "25.0");

            sbyte[] bytes = DecodeBase64(serialized);

            // WHEN
            StoreIndexDescriptor deserialized = AssertIndexRule(SchemaRuleSerialization.Deserialize(ruleId, ByteBuffer.wrap(bytes)));

            // THEN
            assertThat(deserialized.Id, equalTo(ruleId));
            assertThat(deserialized, equalTo(index));
            assertThat(deserialized.Schema(), equalTo(index.Schema()));
            assertThat(deserialized.ProviderDescriptor(), equalTo(indexProvider));
            assertThat(deserialized.OwningConstraint, equalTo(constraintId));
            assertThat(deserialized.Name, @is(name));
        }
Exemplo n.º 7
0
        /// <summary>
        /// Compute the byte size needed to serialize the provided IndexRule using serialize. </summary>
        /// <param name="indexDescriptor"> the StoreIndexDescriptor </param>
        /// <returns> the byte size of StoreIndexDescriptor </returns>
        internal static int LengthOf(StoreIndexDescriptor indexDescriptor)
        {
            int length = 4;            // legacy label or relType id

            length += 1;               // schema rule type

            IndexProviderDescriptor providerDescriptor = indexDescriptor.ProviderDescriptor();

            length += UTF8.computeRequiredByteBufferSize(providerDescriptor.Key);
            length += UTF8.computeRequiredByteBufferSize(providerDescriptor.Version);

            length += 1;               // index type
            if (indexDescriptor.Type() == IndexDescriptor.Type.UNIQUE)
            {
                length += 8;                         // owning constraint id
            }

            length += indexDescriptor.Schema().computeWith(schemaSizeComputer);
            length += UTF8.computeRequiredByteBufferSize(indexDescriptor.Name);
            return(length);
        }
Exemplo n.º 8
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: private org.neo4j.kernel.api.index.IndexAccessor onlineAccessorFromProvider(org.neo4j.storageengine.api.schema.StoreIndexDescriptor descriptor, org.neo4j.kernel.impl.api.index.sampling.IndexSamplingConfig samplingConfig) throws java.io.IOException
        private IndexAccessor OnlineAccessorFromProvider(StoreIndexDescriptor descriptor, IndexSamplingConfig samplingConfig)
        {
            IndexProvider indexProvider = _providerMap.lookup(descriptor.ProviderDescriptor());

            return(indexProvider.GetOnlineAccessor(descriptor, samplingConfig));
        }
Exemplo n.º 9
0
        private IndexPopulator PopulatorFromProvider(StoreIndexDescriptor descriptor, IndexSamplingConfig samplingConfig, ByteBufferFactory bufferFactory)
        {
            IndexProvider indexProvider = _providerMap.lookup(descriptor.ProviderDescriptor());

            return(indexProvider.GetPopulator(descriptor, samplingConfig, bufferFactory));
        }
Exemplo n.º 10
0
//JAVA TO C# CONVERTER WARNING: 'final' parameters are ignored unless the option to convert to C# 7.2 'in' parameters is selected:
//ORIGINAL LINE: private String indexUserDescription(final org.neo4j.storageengine.api.schema.StoreIndexDescriptor descriptor)
        private string IndexUserDescription(StoreIndexDescriptor descriptor)
        {
            return(format("%s [provider: %s]", descriptor.Schema().userDescription(_tokenNameLookup), descriptor.ProviderDescriptor().ToString()));
        }