Search in sources :

Example 1 with IndexValueProcessor

use of com.enonic.xp.index.IndexValueProcessor in project xp by enonic.

the class XmlNodeSerializer method serialize.

private void serialize(final IndexConfig value) {
    serializeValueElement("decideByType", value.isDecideByType());
    serializeValueElement("enabled", value.isEnabled());
    serializeValueElement("nGram", value.isnGram());
    serializeValueElement("fulltext", value.isFulltext());
    serializeValueElement("includeInAllText", value.isIncludeInAllText());
    if (!value.getIndexValueProcessors().isEmpty()) {
        this.builder.start("indexValueProcessors");
        for (IndexValueProcessor indexValueProcessor : value.getIndexValueProcessors()) {
            serializeValueElement("indexValueProcessor", indexValueProcessor.getName());
        }
        this.builder.end();
    }
    if (!value.getLanguages().isEmpty()) {
        this.builder.start("languages");
        for (String language : value.getLanguages()) {
            serializeValueElement("language", language);
        }
        this.builder.end();
    }
}
Also used : IndexValueProcessor(com.enonic.xp.index.IndexValueProcessor)

Example 2 with IndexValueProcessor

use of com.enonic.xp.index.IndexValueProcessor in project xp by enonic.

the class NodeVersionJsonDumpSerializerTest method serialize_deserialize.

@Test
public void serialize_deserialize() throws Exception {
    PropertyTree nodeData = new PropertyTree();
    nodeData.setDouble("a.b.c", 2.0);
    nodeData.setLocalDate("b", LocalDate.of(2013, 1, 2));
    nodeData.setString("c", "runar");
    nodeData.setLocalDateTime("d", LocalDateTime.of(2013, 1, 2, 3, 4, 5, 0));
    nodeData.setBinaryReference("e", BinaryReference.from("myImage1"));
    nodeData.setBinaryReference("f", BinaryReference.from("myImage2"));
    final AccessControlEntry entry1 = AccessControlEntry.create().principal(PrincipalKey.ofAnonymous()).allow(Permission.READ).deny(Permission.DELETE).build();
    final AccessControlEntry entry2 = AccessControlEntry.create().principal(PrincipalKey.ofUser(IdProviderKey.system(), "user1")).allow(Permission.MODIFY).deny(Permission.PUBLISH).build();
    AccessControlList acl = AccessControlList.create().add(entry1).add(entry2).build();
    IndexValueProcessor indexValueProcessor = new IndexValueProcessor() {

        @Override
        public Value process(final Value value) {
            return value;
        }

        @Override
        public String getName() {
            return "indexValueProcessor";
        }
    };
    IndexConfig indexConfig = IndexConfig.create().enabled(true).fulltext(true).nGram(true).decideByType(false).includeInAllText(true).path(true).addIndexValueProcessor(indexValueProcessor).addIndexValueProcessor(indexValueProcessor).build();
    NodeVersion nodeVersion = NodeVersion.create().id(NodeId.from("myId")).indexConfigDocument(PatternIndexConfigDocument.create().analyzer("myAnalyzer").defaultConfig(IndexConfig.MINIMAL).add("myPath", indexConfig).build()).data(nodeData).childOrder(ChildOrder.create().add(FieldOrderExpr.create(IndexPath.from("modifiedTime"), OrderExpr.Direction.ASC)).add(FieldOrderExpr.create(IndexPath.from("displayName"), OrderExpr.Direction.DESC)).build()).permissions(acl).nodeType(NodeType.from("myNodeType")).attachedBinaries(AttachedBinaries.create().add(new AttachedBinary(BinaryReference.from("myImage1"), "a")).add(new AttachedBinary(BinaryReference.from("myImage2"), "b")).build()).build();
    final String expectedNodeStr = readJson("serialized-node.json");
    final String expectedIndexConfigStr = readJson("serialized-index.json");
    final String expectedAccessControlStr = readJson("serialized-access.json");
    final String serializedNode = new String(this.serializer.toNodeString(nodeVersion), StandardCharsets.UTF_8);
    final String serializedIndexConfig = new String(this.serializer.toIndexConfigDocumentString(nodeVersion), StandardCharsets.UTF_8);
    final String serializedAccessControl = new String(this.serializer.toAccessControlString(nodeVersion), StandardCharsets.UTF_8);
    assertEquals(expectedNodeStr, serializedNode);
    assertEquals(expectedIndexConfigStr, serializedIndexConfig);
    assertEquals(expectedAccessControlStr, serializedAccessControl);
    final NodeVersion deSerializedNode = this.serializer.toNodeVersion(expectedNodeStr.getBytes(StandardCharsets.UTF_8), expectedIndexConfigStr.getBytes(StandardCharsets.UTF_8), expectedAccessControlStr.getBytes(StandardCharsets.UTF_8));
    assertEquals(nodeVersion, deSerializedNode);
}
Also used : AccessControlList(com.enonic.xp.security.acl.AccessControlList) NodeVersion(com.enonic.xp.node.NodeVersion) IndexConfig(com.enonic.xp.index.IndexConfig) PropertyTree(com.enonic.xp.data.PropertyTree) Value(com.enonic.xp.data.Value) AccessControlEntry(com.enonic.xp.security.acl.AccessControlEntry) IndexValueProcessor(com.enonic.xp.index.IndexValueProcessor) AttachedBinary(com.enonic.xp.node.AttachedBinary) Test(org.junit.jupiter.api.Test)

Example 3 with IndexValueProcessor

use of com.enonic.xp.index.IndexValueProcessor in project xp by enonic.

the class IndexConfigFactory method create.

private IndexConfig create(final PropertySet settings) {
    final Boolean decideByType = settings.getBoolean("decideByType");
    final Boolean enabled = settings.getBoolean("enabled");
    final Boolean nGram = settings.getBoolean("nGram");
    final Boolean fulltext = settings.getBoolean("fulltext");
    final Boolean includeInAllText = settings.getBoolean("includeInAllText");
    final Boolean path = settings.getBoolean("path");
    final Iterable<String> indexValueProcessors = settings.getStrings("indexValueProcessors");
    final Iterable<String> languages = settings.getStrings("languages");
    final IndexConfig.Builder builder = IndexConfig.create().decideByType(decideByType != null ? decideByType : false).enabled(enabled != null ? enabled : true).nGram(nGram != null ? nGram : false).fulltext(fulltext != null ? fulltext : false).includeInAllText(includeInAllText != null ? includeInAllText : false).path(path != null ? path : false);
    for (final String indexValueProcessorName : indexValueProcessors) {
        final IndexValueProcessor indexValueProcessor = IndexValueProcessors.get(indexValueProcessorName);
        if (indexValueProcessor != null) {
            builder.addIndexValueProcessor(indexValueProcessor);
        }
    }
    for (final String language : languages) {
        builder.addLanguage(language);
    }
    return builder.build();
}
Also used : IndexConfig(com.enonic.xp.index.IndexConfig) IndexValueProcessor(com.enonic.xp.index.IndexValueProcessor)

Aggregations

IndexValueProcessor (com.enonic.xp.index.IndexValueProcessor)3 IndexConfig (com.enonic.xp.index.IndexConfig)2 PropertyTree (com.enonic.xp.data.PropertyTree)1 Value (com.enonic.xp.data.Value)1 AttachedBinary (com.enonic.xp.node.AttachedBinary)1 NodeVersion (com.enonic.xp.node.NodeVersion)1 AccessControlEntry (com.enonic.xp.security.acl.AccessControlEntry)1 AccessControlList (com.enonic.xp.security.acl.AccessControlList)1 Test (org.junit.jupiter.api.Test)1