private static void mergeChange(NodeBuilder parent, PropertyState ours, PropertyState theirs, Set<String> base) { PropertyBuilder<String> merged = PropertyBuilder.array(Type.STRING); merged.setName(UserConstants.REP_MEMBERS); Set<String> theirMembers = Sets.newHashSet(theirs.getValue(Type.STRINGS)); Set<String> ourMembers = Sets.newHashSet(ours.getValue(Type.STRINGS)); // merge ours and theirs to a de-duplicated set Set<String> combined = Sets.newHashSet(Sets.intersection(ourMembers, theirMembers)); for (String m : Sets.difference(ourMembers, theirMembers)) { if (!base.contains(m)) { combined.add(m); } } for (String m : Sets.difference(theirMembers, ourMembers)) { if (!base.contains(m)) { combined.add(m); } } merged.addValues(combined); parent.setProperty(merged.getPropertyState()); }
private static void mergeChange(NodeBuilder parent, PropertyState ours, PropertyState theirs, Set<String> base) { PropertyBuilder<String> merged = PropertyBuilder.array(Type.STRING); merged.setName(UserConstants.REP_MEMBERS); Set<String> theirMembers = Sets.newHashSet(theirs.getValue(Type.STRINGS)); Set<String> ourMembers = Sets.newHashSet(ours.getValue(Type.STRINGS)); // merge ours and theirs to a de-duplicated set Set<String> combined = Sets.newHashSet(Sets.intersection(ourMembers, theirMembers)); for (String m : Sets.difference(ourMembers, theirMembers)) { if (!base.contains(m)) { combined.add(m); } } for (String m : Sets.difference(theirMembers, ourMembers)) { if (!base.contains(m)) { combined.add(m); } } merged.addValues(combined); parent.setProperty(merged.getPropertyState()); }
private static void mergeChange(NodeBuilder parent, PropertyState ours, PropertyState theirs, Set<String> base) { PropertyBuilder<String> merged = PropertyBuilder.array(Type.STRING); merged.setName(UserConstants.REP_MEMBERS); Set<String> theirMembers = Sets.newHashSet(theirs.getValue(Type.STRINGS)); Set<String> ourMembers = Sets.newHashSet(ours.getValue(Type.STRINGS)); // merge ours and theirs to a de-duplicated set Set<String> combined = Sets.newHashSet(Sets.intersection(ourMembers, theirMembers)); for (String m : Sets.difference(ourMembers, theirMembers)) { if (!base.contains(m)) { combined.add(m); } } for (String m : Sets.difference(theirMembers, ourMembers)) { if (!base.contains(m)) { combined.add(m); } } merged.addValues(combined); parent.setProperty(merged.getPropertyState()); }
@NotNull protected PropertyState createMultiState( String oakName, List<Value> values, Type<?> type) throws RepositoryException { if (values.isEmpty()) { Type<?> base = type.getBaseType(); if (base == UNDEFINED) { base = STRING; } return PropertyBuilder.array(base) .setName(oakName).getPropertyState(); } if (type == UNDEFINEDS) { type = Type.fromTag(values.get(0).getType(), true); } if (type == NAMES || type == PATHS) { Type<?> base = type.getBaseType(); List<String> strings = newArrayListWithCapacity(values.size()); for (Value value : values) { strings.add(getOakValue(value, base)); } return createProperty(oakName, strings, type); } else { return createProperty(oakName, values, type.tag()); } }
@NotNull protected PropertyState createMultiState( String oakName, List<Value> values, Type<?> type) throws RepositoryException { if (values.isEmpty()) { Type<?> base = type.getBaseType(); if (base == UNDEFINED) { base = STRING; } return PropertyBuilder.array(base) .setName(oakName).getPropertyState(); } if (type == UNDEFINEDS) { type = Type.fromTag(values.get(0).getType(), true); } if (type == NAMES || type == PATHS) { Type<?> base = type.getBaseType(); List<String> strings = newArrayListWithCapacity(values.size()); for (Value value : values) { strings.add(getOakValue(value, base)); } return createProperty(oakName, strings, type); } else { return createProperty(oakName, values, type.tag()); } }
@Nonnull protected PropertyState createMultiState( String oakName, List<Value> values, Type<?> type) throws RepositoryException { if (values.isEmpty()) { Type<?> base = type.getBaseType(); if (base == UNDEFINED) { base = STRING; } return PropertyBuilder.array(base) .setName(oakName).getPropertyState(); } if (type == UNDEFINEDS) { type = Type.fromTag(values.get(0).getType(), true); } if (type == NAMES || type == PATHS) { Type<?> base = type.getBaseType(); List<String> strings = newArrayListWithCapacity(values.size()); for (Value value : values) { strings.add(getOakValue(value, base)); } return createProperty(oakName, strings, type); } else { return createProperty(oakName, values, type.tag()); } }
private static void merge(NodeBuilder parent, PropertyState ours, PropertyState theirs) { Set<String> theirOrder = Sets.newHashSet(theirs.getValue(Type.NAMES)); PropertyBuilder<String> merged = PropertyBuilder.array(Type.NAME).assignFrom(theirs); // Append child node names from ours that are not in theirs for (String ourChild : ours.getValue(Type.NAMES)) { if (!theirOrder.contains(ourChild)) { merged.addValue(ourChild); } } // Remove child node names of nodes that have been removed for (String child : merged.getValues()) { if (!parent.hasChildNode(child)) { merged.removeValue(child); } } parent.setProperty(merged.getPropertyState()); }
private static void merge(NodeBuilder parent, PropertyState ours, PropertyState theirs) { Set<String> theirOrder = Sets.newHashSet(theirs.getValue(Type.NAMES)); PropertyBuilder<String> merged = PropertyBuilder.array(Type.NAME).assignFrom(theirs); // Append child node names from ours that are not in theirs for (String ourChild : ours.getValue(Type.NAMES)) { if (!theirOrder.contains(ourChild)) { merged.addValue(ourChild); } } // Remove child node names of nodes that have been removed for (String child : merged.getValues()) { if (!parent.hasChildNode(child)) { merged.removeValue(child); } } parent.setProperty(merged.getPropertyState()); }
private static void merge(NodeBuilder parent, PropertyState ours, PropertyState theirs) { Set<String> theirOrder = Sets.newHashSet(theirs.getValue(Type.NAMES)); PropertyBuilder<String> merged = PropertyBuilder.array(Type.NAME).assignFrom(theirs); // Append child node names from ours that are not in theirs for (String ourChild : ours.getValue(Type.NAMES)) { if (!theirOrder.contains(ourChild)) { merged.addValue(ourChild); } } // Remove child node names of nodes that have been removed for (String child : merged.getValues()) { if (!parent.hasChildNode(child)) { merged.removeValue(child); } } parent.setProperty(merged.getPropertyState()); }
for (String ref : members) { if (prop == null) { prop = PropertyBuilder.array(Type.WEAKREFERENCE, UserConstants.REP_MEMBERS);
for (String ref : members) { if (prop == null) { prop = PropertyBuilder.array(Type.WEAKREFERENCE, UserConstants.REP_MEMBERS);
propertyBuilder = PropertyBuilder.array(Type.NAME, REP_AGGREGATES); } else { propertyBuilder = PropertyBuilder.copy(Type.NAME, aggregates);
propertyBuilder = PropertyBuilder.array(Type.NAME, REP_AGGREGATES); } else { propertyBuilder = PropertyBuilder.copy(Type.NAME, aggregates);
propertyBuilder = PropertyBuilder.array(Type.NAME, REP_AGGREGATES); } else { propertyBuilder = PropertyBuilder.copy(Type.NAME, aggregates);
NodeBuilder successor = getVersionById(vh, succId); PropertyBuilder<String> pb = PropertyBuilder.array(Type.REFERENCE); pb.setName(JCR_PREDECESSORS).setValues(successor.getProperty(JCR_PREDECESSORS).getValue(Type.REFERENCES)); PropertyBuilder<String> pb = PropertyBuilder.array(Type.REFERENCE); pb.setName(JCR_SUCCESSORS).setValues(predecessor.getProperty(JCR_SUCCESSORS).getValue(Type.REFERENCES));
NodeBuilder successor = getVersionById(vh, succId); PropertyBuilder<String> pb = PropertyBuilder.array(Type.REFERENCE); pb.setName(JCR_PREDECESSORS).setValues(successor.getProperty(JCR_PREDECESSORS).getValue(Type.REFERENCES)); PropertyBuilder<String> pb = PropertyBuilder.array(Type.REFERENCE); pb.setName(JCR_SUCCESSORS).setValues(predecessor.getProperty(JCR_SUCCESSORS).getValue(Type.REFERENCES));
@Test public void testStringsProperty() { PropertyBuilder builder = PropertyBuilder.array(Type.STRING); builder.setName("foo") .addValue("one") .addValue("two"); assertEquals(MultiStringPropertyState.stringProperty("foo", Arrays.asList("one", "two")), builder.getPropertyState()); builder.setScalar(); try { builder.getPropertyState(); } catch (IllegalStateException expected) { // success } builder.removeValue("one"); assertEquals(StringPropertyState.stringProperty("foo", "two"), builder.getPropertyState()); }
NodeBuilder successor = getVersionById(vh, succId); PropertyBuilder<String> pb = PropertyBuilder.array(Type.REFERENCE); pb.setName(JCR_PREDECESSORS).setValues(successor.getProperty(JCR_PREDECESSORS).getValue(Type.REFERENCES)); PropertyBuilder<String> pb = PropertyBuilder.array(Type.REFERENCE); pb.setName(JCR_SUCCESSORS).setValues(predecessor.getProperty(JCR_SUCCESSORS).getValue(Type.REFERENCES));
@Test public void testDateProperty() { PropertyBuilder builder = PropertyBuilder.array(Type.DATE); String date1 = "1970-01-01T00:00:00.000Z"; String date2 = "1971-01-01T00:00:00.000Z"; builder.setName("foo") .addValue(date1) .addValue(date2); Assert.assertEquals(MultiGenericPropertyState.dateProperty("foo", Arrays.asList(date1, date2)), builder.getPropertyState()); builder.setScalar(); try { builder.getPropertyState(); } catch (IllegalStateException expected) { } builder.removeValue(date1); Assert.assertEquals(GenericPropertyState.dateProperty("foo", date2), builder.getPropertyState()); }
private static void createContent(NodeStore nodeStore) throws IOException, CommitFailedException { NodeBuilder rootBuilder = nodeStore.getRoot().builder(); rootBuilder.child("node1").setProperty("prop", createBlob(nodeStore)); rootBuilder.child("node2").setProperty("prop", createBlob(nodeStore)); PropertyBuilder<Blob> builder = PropertyBuilder.array(Type.BINARY, "prop"); builder.addValue(createBlob(nodeStore)); builder.addValue(createBlob(nodeStore)); builder.addValue(createBlob(nodeStore)); rootBuilder.child("node3").setProperty(builder.getPropertyState()); nodeStore.merge(rootBuilder, EmptyHook.INSTANCE, CommitInfo.EMPTY); }