public void propertySet() { // tag::propertyset[] final StringProperty NAME = StringProperty.create("name"); final StringProperty SURNAME = StringProperty.create("surname"); final NumericProperty<Integer> SEQUENCE = NumericProperty.integerType("surname"); PropertySet<Property<?>> set = PropertySet.of(NAME, SURNAME); // <1> set = PropertySet.builder().add(NAME).add(SURNAME).build(); // <2> PropertySet<Property<?>> set2 = PropertySet.builder().add(set).add(SEQUENCE).build(); // <3> // end::propertyset[] }
public void serializationConfig() { // tag::sconfig[] StringProperty NAME = StringProperty.create("name"); // <1> VirtualProperty<String> VRT = VirtualProperty.create(String.class, pb -> "(" + pb.getValue(NAME) + ")") .name("vrt"); // <2> final PropertySet<?> PROPERTY_SET = PropertySet.builderOf(NAME, VRT).withConfiguration( JsonConfigProperties.PROPERTYBOX_SERIALIZATION_MODE, PropertyBoxSerializationMode.ALL).build(); // <3> PropertyBox propertyBox = PropertyBox.builder(PROPERTY_SET).set(NAME, "test").build(); // <4> // end::sconfig[] }
public void serializeh1() { // tag::serializeh1[] final NumericProperty<Long> KEY = NumericProperty.longType("key"); final StringProperty NAME = StringProperty.create("name"); final StringProperty SURNAME = StringProperty.create("surname"); final PropertyBoxProperty NESTED = PropertyBoxProperty.create("nested", NAME, SURNAME); // <1> final PropertySet<?> PROPERTY_SET = PropertySet.of(KEY, NESTED); // <2> PropertyBox value = PropertyBox.builder(PROPERTY_SET).set(KEY, 1L) .set(NESTED, PropertyBox.builder(NAME, SURNAME).set(NAME, "John").set(SURNAME, "Doe").build()).build(); // <3> // end::serializeh1[] }
public void propertyBox2() { // tag::propertybox2[] final PathProperty<Long> ID = PathProperty.create("id", Long.class).withValidator(Validator.notNull()); // <1> final StringProperty NAME = StringProperty.create("name").withValidator(Validator.notBlank()); // <2> final PropertySet<?> PROPERTIES = PropertySet.of(ID, NAME); PropertyBox propertyBox = PropertyBox.create(PROPERTIES); propertyBox.setValue(ID, null); // <3> propertyBox = PropertyBox.builder(PROPERTIES).invalidAllowed(true).build(); // <4> propertyBox.validate(); // <5> // end::propertybox2[] }
public void pathPropertyBoxAdapter() { // tag::ppba[] final StringProperty STR = StringProperty.create("str"); final NumericProperty<Integer> ITG = NumericProperty.integerType("itg"); final PropertySet<?> SET = PropertySet.of(STR, ITG); final Path<String> PATH = Path.of("str", String.class); PropertyBox box = PropertyBox.builder(SET).set(STR, "test1").set(ITG, 1).build(); PathPropertyBoxAdapter adapter = PathPropertyBoxAdapter.create(box); // <1> boolean contains = adapter.containsValue(PATH); // <2> Optional<String> value = adapter.getValue(PATH); // <3> adapter.setValue(PATH, "value"); // <4> // end::ppba[] }
public void propertyBox4() { // tag::propertybox4[] final NumericProperty<Long> ID = NumericProperty.longType("id"); final StringProperty NAME = StringProperty.create("name"); final PropertySet<?> PROPERTIES = PropertySet.builderOf(ID, NAME).identifier(ID).build(); // <1> PropertyBox propertyBox1 = PropertyBox.builder(PROPERTIES).set(ID, 1L).set(NAME, "name1").build(); PropertyBox propertyBox2 = PropertyBox.builder(PROPERTIES).set(ID, 1L).set(NAME, "name2").build(); boolean isTrue = propertyBox1.equals(propertyBox2); // <2> // end::propertybox4[] }
/** * Clone this PropertyBox, i.e. create a new PropertyBox with same property set of this box and copy all the * property values from this box to the newly created box. * @return A new, cloned, PropertyBox instance */ default PropertyBox cloneBox() { return builder(this).invalidAllowed(this.isInvalidAllowed()).copyValues(this).build(); }
public void pathPropertySetAdapter2() { // tag::ppsa3[] final StringProperty STR = StringProperty.create("str"); final NumericProperty<Integer> ITG = NumericProperty.integerType("itg"); final PropertySet<?> SET = PropertySet.of(STR, ITG); PathPropertySetAdapter adapter = PathPropertySetAdapter.create(SET); // <1> boolean contains = adapter.contains("str"); // <2> Optional<Property<?>> property = adapter.getProperty("str"); // <3> Optional<Property<String>> typedProperty = adapter.getProperty("str", String.class); // <4> Stream<String> paths = adapter.names(); // <5> // end::ppsa3[] }
public void propertyBox3() { // tag::propertybox3[] final StringProperty NAME = StringProperty.create("name"); final StringProperty SURNAME = StringProperty.create("surname"); final VirtualProperty<String> FULL_NAME = VirtualProperty.create(String.class, propertyBox -> { // <1> return propertyBox.getValue(NAME) + " " + propertyBox.getValue(SURNAME); }); PropertyBox propertyBox = PropertyBox.create(NAME, SURNAME, FULL_NAME); // <2> propertyBox.setValue(NAME, "John"); propertyBox.setValue(SURNAME, "Doe"); String fullName = propertyBox.getValue(FULL_NAME); // <3> // end::propertybox3[] }
public void render() { PropertyRenderer<MyRenderingType, Object> myRenderer = PropertyRenderer.create(MyRenderingType.class, p -> new MyRenderingType(p.getType())); // <2> PropertyRendererRegistry.get().register(p -> true, myRenderer); // <3> final PathProperty<Long> ID = PathProperty.create("id", Long.class); MyRenderingType rendered = ID.render(MyRenderingType.class); // <4> } // end::renderer[]
public void collectionProperties() { // tag::collprops[] final ListPathProperty<String> STR = ListPathProperty.create("str", String.class); // <1> final SetPathProperty<Integer> ITG = SetPathProperty.create("str", Integer.class); // <2> Class<?> elementType = STR.getElementType(); // <3> PropertyBox box = PropertyBox.create(STR, ITG); box.setValue(STR, Collections.singletonList("a")); // <4> List<String> listValue = box.getValue(STR); // <5> box.setValue(ITG, Collections.singleton(1)); // <6> Set<Integer> setValue = box.getValue(ITG); // <7> // end::collprops[] }
public void dataMappable2() { final StringProperty P1 = StringProperty.create("p1"); final StringProperty P2 = StringProperty.create("p2"); // tag::datamappable2[] PropertySet<?> PROPERTIES = PropertySet.builderOf(P1, P2) // .withConfiguration(DataMappable.PATH, "mapping-name") // <1> .build(); Optional<String> mapping = PROPERTIES.getConfiguration().getParameter(DataMappable.PATH); // <2> // end::datamappable2[] }
public void dataMappable1() { // tag::datamappable1[] PathProperty<Integer> property = PathProperty.create("name", Integer.class) // .dataPath("mapping-name"); // <1> Optional<String> mapping = property.getDataPath(); // <2> // end::datamappable1[] }
/** * Create a new {@link PathProperty} with given <code>name</code> and <code>type</code>, setting this * {@link DataTarget} as property parent path. * @param <P> Property type * @param name Property name (not null) * @param type Property value type (not null) * @return Property builder */ default <P> PathPropertyBuilder<P> property(String name, Class<? extends P> type) { return PathProperty.<P>create(name, type).parent(this); }
@Override public String apply(PropertyBox source) { return property.present(property.getValueProvider().getPropertyValue(source)); }
@SuppressWarnings("unchecked") public void vc6() { // tag::vc6[] BooleanProperty PROPERTY = BooleanProperty.create("test") // <1> .message("caption").messageCode("caption.message.code"); // <2> ViewComponent<Boolean> viewComponent = PROPERTY.render(ViewComponent.class); // <3> // end::vc6[] }
public void serializeh2() { // tag::serializeh2[] final NumericProperty<Long> KEY = NumericProperty.longType("key"); final StringProperty NAME = StringProperty.create("nested.name"); // <1> final StringProperty SURNAME = StringProperty.create("nested.surname"); // <2> final PropertySet<?> PROPERTY_SET = PropertySet.of(KEY, NAME, SURNAME); PropertyBox value = PropertyBox.builder(PROPERTY_SET).set(KEY, 1L).set(NAME, "John").set(SURNAME, "Doe") .build(); // <3> // end::serializeh2[] }