@Before public void setUp() throws Exception { NodeState root = EMPTY_NODE; NodeBuilder builder = root.builder(); builder.child("oak:index").child("solr") .setProperty(JCR_PRIMARYTYPE, "oak:QueryIndexDefinition") .setProperty("type", "solr") .child("server").setProperty("solrServerType", "embedded"); nodeState = builder.getNodeState(); }
private static NodeState newNamespaceNode(String valid) { NodeBuilder ns = EMPTY_NODE.builder(); ns.child(REP_NSDATA).setProperty(REP_PREFIXES, Collections.singleton(valid), Type.STRINGS); return ns.getNodeState(); }
@Before public void setup() { NodeBuilder rootBuilder = EmptyNodeState.EMPTY_NODE.builder(); NodeBuilder test = rootBuilder.child("test"); test.setProperty("a", 1); test.setProperty("b", 2); test.setProperty("c", 3); test.child("x"); test.child("y"); test.child("z").child("zz"); root = rootBuilder.getNodeState(); }
private String createIndexDefn() throws CommitFailedException { NodeBuilder builder = EMPTY_NODE.builder(); builder.child("oak:index").child("fooIndex").setProperty("foo", "bar"); builder.child("oak:index").child("fooIndex").setProperty("foo3", "bar3"); builder.child("oak:index").child("fooIndex").child("b").setProperty("foo4", 4); builder.child("oak:index").child("barIndex").setProperty("foo", "bar"); builder.child("oak:index").child("barIndex").child("c").setProperty("foo5", 5); return createIndexDefn(builder.getNodeState(), "/oak:index/fooIndex", "/oak:index/barIndex"); }
@Test public void basicStuff() throws Exception{ NodeBuilder builder = EMPTY_NODE.builder(); builder.child("a").setProperty("foo", "bar"); builder.child("b").setProperty("foo", 1); assertDeserialization(builder); }
@Test public void nodeStateAsMap() throws Exception{ NodeBuilder nb = EMPTY_NODE.builder(); nb.setProperty("a", "a"); nb.setProperty("b", 1); nb.setProperty(JcrConstants.JCR_PRIMARYTYPE, "nt:base"); nb.setProperty(":hiddenProp", "hiddenValue"); Map<String, String> result = factory.convertNodeState(nb.getNodeState()); assertEquals("a", result.get("a")); assertEquals("1", result.get("b")); assertNull(result.get(JcrConstants.JCR_PRIMARYTYPE)); assertNull(result.get(":hiddenProp")); }
@Test public void versionedMixins() throws Exception{ builder.child("mix:foo").setProperty(createProperty(PROP_PATTERN, asList("jcr:content"), STRINGS)); BundledTypesRegistry registry = BundledTypesRegistry.from(builder.getNodeState()); NodeBuilder builder = EMPTY_NODE.builder(); builder.setProperty(JCR_PRIMARYTYPE, JcrConstants.NT_FROZENNODE, Type.NAME); builder.setProperty(JCR_FROZENMIXINTYPES, Collections.singleton("mix:foo"), Type.NAMES); assertNotNull(registry.getBundlor(builder.getNodeState())); }
@Test public void emptyProperty() throws Exception{ NodeBuilder builder = EMPTY_NODE.builder(); builder.child("a").setProperty("foo", Collections.emptyList(), Type.NAMES); assertDeserialization(builder); }
@Test public void versioned() throws Exception{ builder.child("nt:file").setProperty(createProperty(PROP_PATTERN, asList("jcr:content"), STRINGS)); BundledTypesRegistry registry = BundledTypesRegistry.from(builder.getNodeState()); NodeBuilder builder = EMPTY_NODE.builder(); builder.setProperty(JCR_PRIMARYTYPE, JcrConstants.NT_FROZENNODE, Type.NAME); builder.setProperty(JCR_FROZENPRIMARYTYPE, "nt:file", Type.NAME); assertNotNull(registry.getBundlor(builder.getNodeState())); }
@Test public void indexRuleInheritanceOrdering() throws Exception{ NodeBuilder rules = builder.child(INDEX_RULES); rules.setProperty(OAK_CHILD_ORDER, ImmutableList.of("nt:hierarchyNode", "nt:base"),NAMES); rules.child("nt:hierarchyNode").setProperty(FulltextIndexConstants.FIELD_BOOST, 2.0); rules.child("nt:base").setProperty(FulltextIndexConstants.FIELD_BOOST, 3.0); IndexDefinition defn = new IndexDefinition(root, builder.getNodeState(), "/foo"); assertEquals(3.0, getRule(defn, "nt:base").boost, 0); assertEquals(2.0, getRule(defn, "nt:hierarchyNode").boost, 0); assertEquals(3.0, getRule(defn, "nt:query").boost, 0); } @Test
@Test public void indexRuleInheritanceOrdering() throws Exception{ NodeBuilder rules = builder.child(INDEX_RULES); rules.setProperty(OAK_CHILD_ORDER, ImmutableList.of("nt:hierarchyNode", "nt:base"),NAMES); rules.child("nt:hierarchyNode").setProperty(FulltextIndexConstants.FIELD_BOOST, 2.0); rules.child("nt:base").setProperty(FulltextIndexConstants.FIELD_BOOST, 3.0); LuceneIndexDefinition defn = new LuceneIndexDefinition(root, builder.getNodeState(), "/foo"); assertEquals(3.0, getRule(defn, "nt:base").boost, 0); assertEquals(2.0, getRule(defn, "nt:hierarchyNode").boost, 0); assertEquals(3.0, getRule(defn, "nt:query").boost, 0); } @Test
@Test public void customAnalyzer() throws Exception{ NodeBuilder defnb = newLuceneIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "lucene", of(TYPENAME_STRING)); //Set this to -1 to avoid wrapping by LimitAnalyzer defnb.setProperty(FulltextIndexConstants.MAX_FIELD_LENGTH, -1); defnb.child(ANALYZERS).child(ANL_DEFAULT) .child(LuceneIndexConstants.ANL_TOKENIZER) .setProperty(LuceneIndexConstants.ANL_NAME, "whitespace"); LuceneIndexDefinition defn = new LuceneIndexDefinition(root, defnb.getNodeState(), "/foo"); assertEquals(TokenizerChain.class.getName(), defn.getAnalyzer().getClass().getName()); }
@Test public void indexRuleInheritanceOrdering2() throws Exception{ NodeBuilder rules = builder.child(INDEX_RULES); rules.setProperty(OAK_CHILD_ORDER, ImmutableList.of("nt:base", "nt:hierarchyNode"),NAMES); rules.child("nt:hierarchyNode").setProperty(FulltextIndexConstants.FIELD_BOOST, 2.0); rules.child("nt:base").setProperty(FulltextIndexConstants.FIELD_BOOST, 3.0); IndexDefinition defn = new IndexDefinition(root, builder.getNodeState(), "/foo"); //As nt:base is defined earlier it would supercede everything assertEquals(3.0, getRule(defn, "nt:base").boost, 0); assertEquals(3.0, getRule(defn, "nt:hierarchyNode").boost, 0); assertEquals(3.0, getRule(defn, "nt:file").boost, 0); }
@Test public void indexRuleInheritanceOrdering2() throws Exception{ NodeBuilder rules = builder.child(INDEX_RULES); rules.setProperty(OAK_CHILD_ORDER, ImmutableList.of("nt:base", "nt:hierarchyNode"),NAMES); rules.child("nt:hierarchyNode").setProperty(FulltextIndexConstants.FIELD_BOOST, 2.0); rules.child("nt:base").setProperty(FulltextIndexConstants.FIELD_BOOST, 3.0); LuceneIndexDefinition defn = new LuceneIndexDefinition(root, builder.getNodeState(), "/foo"); //As nt:base is defined earlier it would supercede everything assertEquals(3.0, getRule(defn, "nt:base").boost, 0); assertEquals(3.0, getRule(defn, "nt:hierarchyNode").boost, 0); assertEquals(3.0, getRule(defn, "nt:file").boost, 0); }
@Test (expected = IllegalStateException.class) public void updateNonExistingParent() throws Exception{ NodeBuilder builder = store.getRoot().builder(); builder.child("oak:index").child("fooIndex").setProperty("foo", "bar"); store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); NodeBuilder builder2 = EMPTY_NODE.builder(); builder2.child("a").child("oak:index").child("barIndex").setProperty("foo", "bar"); String json = createIndexDefn(builder2.getNodeState(), "/oak:index/fooIndex", "/a/oak:index/barIndex"); applyJson(json); }
private void switchBucket(String propertyName) { NodeBuilder propertyIndex = builder.child(PROPERTY_INDEX); NodeBuilder idx = propertyIndex.child(HybridPropertyIndexUtil.getNodeName(propertyName)); String head = idx.getString(HybridPropertyIndexUtil.PROP_HEAD_BUCKET); assertNotNull(head); int id = Integer.parseInt(head); idx.setProperty(PROP_PREVIOUS_BUCKET, head); idx.setProperty(PROP_HEAD_BUCKET, String.valueOf(id + 1)); builder = builder.getNodeState().builder(); }
@Test public void testSimpleNode() throws IOException { NodeState before = EMPTY_NODE.builder() .setProperty("foo", "abc") .setProperty("bar", 123) .setProperty("baz", Math.PI) .getNodeState(); NodeState after = new SegmentNodeState(store.getReader(), writer, store.getBlobStore(), writer.writeNode(before)); assertEquals(before, after); }
@Test public void analyzerByComposition_CharFilter() throws Exception{ NodeBuilder nb = EMPTY_NODE.builder(); nb.child(ANL_TOKENIZER).setProperty(ANL_NAME, "whitespace"); NodeBuilder filters = nb.child(ANL_CHAR_FILTERS); filters.setProperty(OAK_CHILD_ORDER, ImmutableList.of("htmlStrip", "mapping"),NAMES); filters.child("mapping").setProperty(ANL_NAME, "mapping"); filters.child("htmlStrip"); //name is optional. Derived from nodeName TokenizerChain analyzer = (TokenizerChain) factory.createInstance(nb.getNodeState()); assertEquals(2, analyzer.getCharFilters().length); //check the order assertEquals(HTMLStripCharFilterFactory.class.getName(), analyzer.getCharFilters()[0].getClassArg()); assertEquals(MappingCharFilterFactory.class.getName(), analyzer.getCharFilters()[1].getClassArg()); }
@Test public void asyncName() throws Exception { assertNull(IndexUtils.getAsyncLaneName(EMPTY_NODE, "/fooIndex")); NodeBuilder builder = EMPTY_NODE.builder(); builder.setProperty("async", newArrayList("async2", "sync"), Type.STRINGS); assertEquals("async2", IndexUtils.getAsyncLaneName(builder.getNodeState(), "/fooIndex")); builder.setProperty("async", newArrayList("async3"), Type.STRINGS); assertEquals("async3", IndexUtils.getAsyncLaneName(builder.getNodeState(), "/fooIndex")); }
@Test public void simple() throws Exception{ NodeBuilder builder = EMPTY_NODE.builder(); builder.child("a").child("b"); builder.child("a").setProperty("foo", "bar"); NodeState state = builder.getNodeState(); assertTrue(EqualsDiff.equals(state, NodeStateCloner.cloneVisibleState(state))); }