/** * Create a new instance for building scalar {@code PropertyState} instances * of the given {@code type}. The builder is initialised with the * given {@code name}. * Equivalent to * <pre> * MemoryPropertyBuilder.create(type).setName(name); * </pre> * @param type type of the {@code PropertyState} instances to be built. * @param name initial name * @return {@code PropertyBuilder} for {@code type} */ public static <T> PropertyBuilder<T> scalar(Type<T> type, String name) { return scalar(type).setName(name); }
/** * Create a new instance for building scalar {@code PropertyState} instances * of the given {@code type}. The builder is initialised with the * given {@code name}. * Equivalent to * <pre> * MemoryPropertyBuilder.create(type).setName(name); * </pre> * @param type type of the {@code PropertyState} instances to be built. * @param name initial name * @return {@code PropertyBuilder} for {@code type} */ public static <T> PropertyBuilder<T> scalar(Type<T> type, String name) { return scalar(type).setName(name); }
private static PropertyBuilder<String> getHiddenPropertyBuilder(@Nullable PropertyState ps) { return PropertyBuilder.copy(Type.STRING, ps).setName(HIDDEN_NESTED_CUGS).setArray(); }
private static PropertyBuilder<String> getHiddenPropertyBuilder(@Nullable PropertyState ps) { return PropertyBuilder.copy(Type.STRING, ps).setName(HIDDEN_NESTED_CUGS).setArray(); }
/** * Create a new instance for building array {@code PropertyState} instances * of the given {@code type}. The builder is initialised with the * given {@code name}. * Equivalent to * <pre> * MemoryPropertyBuilder.create(type).setName(name).setArray(); * </pre> * @param type type of the {@code PropertyState} instances to be built. * @param name initial name * @return {@code PropertyBuilder} for {@code type} */ public static <T> PropertyBuilder<T> array(Type<T> type, String name) { return scalar(type).setName(name).setArray(); }
/** * Create a new instance for building array {@code PropertyState} instances * of the given {@code type}. The builder is initialised with the * given {@code name}. * Equivalent to * <pre> * MemoryPropertyBuilder.create(type).setName(name).setArray(); * </pre> * @param type type of the {@code PropertyState} instances to be built. * @param name initial name * @return {@code PropertyBuilder} for {@code type} */ public static <T> PropertyBuilder<T> array(Type<T> type, String name) { return scalar(type).setName(name).setArray(); }
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()); } }
@SuppressWarnings("unchecked") @NotNull public PropertyBuilder<T> assignFrom(PropertyState property) { if (property != null) { setName(property.getName()); if (property.isArray()) { isArray = true; setValues((Iterable<T>) property.getValue(type.getArrayType())); } else { isArray = false; setValue(property.getValue(type)); } } return this; }
@SuppressWarnings("unchecked") @Nonnull public PropertyBuilder<T> assignFrom(PropertyState property) { if (property != null) { setName(property.getName()); if (property.isArray()) { isArray = true; setValues((Iterable<T>) property.getValue(type.getArrayType())); } else { isArray = false; setValue(property.getValue(type)); } } return this; }
@Test public void testStringProperty() { PropertyBuilder builder = PropertyBuilder.scalar(Type.STRING); builder.setName("foo").setValue("bar"); Assert.assertEquals(StringPropertyState.stringProperty("foo", "bar"), builder.getPropertyState()); builder.setArray(); Assert.assertEquals(MultiStringPropertyState.stringProperty("foo", Arrays.asList("bar")), builder.getPropertyState()); }
@Test public void testLongProperty() { PropertyBuilder builder = PropertyBuilder.scalar(Type.LONG); builder.setName("foo").setValue(42L); Assert.assertEquals(LongPropertyState.createLongProperty("foo", 42L), builder.getPropertyState()); builder.setArray(); Assert.assertEquals(MultiLongPropertyState.createLongProperty("foo", Arrays.asList(42L)), builder.getPropertyState()); }
@Test public void testCreateHiddenProperty3() { Tree a = root.getTree("/a"); try { PropertyState propertyState = PropertyBuilder.scalar(STRING) .setName(":hiddenProperty") .setValue("val") .getPropertyState(); a.setProperty(propertyState); root.commit(); fail(); } catch (Exception e) { // success } } }
pb.setName(JCR_PREDECESSORS).setValues(successor.getProperty(JCR_PREDECESSORS).getValue(Type.REFERENCES)); NodeBuilder predecessor = getVersionById(vh, predId); 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()); }
@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()); }