@Override public Property createProperty(T value) { return new ObjectProperty(false, Boolean.class, false); } });
/** * Creates a new instance of ObjectProperty with the given value and type. * * Since Vaadin 7, only values of the correct type are accepted, and no * automatic conversions are performed. * * @param value * the Initial value of the Property. * @param type * the type of the value. The value must be assignable to given * type. */ public ObjectProperty(T value, Class<T> type) { // Set the values this.type = type; setValue(value); }
/** * Sets the value of the property. * * Note that since Vaadin 7, no conversions are performed and the value must * be of the correct type. * * @param newValue * the New value of the property. * @throws <code>Property.ReadOnlyException</code> * if the object is in read-only mode */ @Override public void setValue(T newValue) throws Property.ReadOnlyException { // Checks the mode if (isReadOnly()) { throw new Property.ReadOnlyException(); } this.value = newValue; fireValueChange(); } }
@Test public void supportsEnumPropertyAndDefaultValue() throws Exception { // GIVEN baseItem = new PropertysetItem(); ObjectProperty<Breakfast> preTypedProperty = new ObjectProperty<>(Breakfast.EGGS_AND_BACON); preTypedProperty.setValue(null); // resetting actual value, so that defaultValue mechanism kicks in baseItem.addItemProperty("breakfast", preTypedProperty); ConfiguredFieldDefinition def = createConfiguredFieldDefinition(new ConfiguredFieldDefinition(), "breakfast"); def.setType("info.magnolia.ui.form.field.factory.AbstractFieldFactoryTest$Breakfast"); def.setDefaultValue(Breakfast.BAKED_BEANS.name()); fieldFactory = new TestTextFieldFactory(def, baseItem, null, i18NAuthoringSupport); fieldFactory.setComponentProvider(this.componentProvider); // WHEN Field field = fieldFactory.createField(); // THEN Property<?> p = field.getPropertyDataSource(); assertEquals(Breakfast.BAKED_BEANS, p.getValue()); }
/** * Creates a new instance of ObjectProperty with the given value, type and * read-only mode status. * * Since Vaadin 7, only the correct type of values is accepted, see * {@link #ObjectProperty(Object, Class)}. * * @param value * the Initial value of the property. * @param type * the type of the value. <code>value</code> must be assignable * to this type. * @param readOnly * Sets the read-only mode. */ public ObjectProperty(T value, Class<T> type, boolean readOnly) { this(value, type); setReadOnly(readOnly); }
protected PropertysetItem createDataSource() throws RepositoryException { PropertysetItem item = new PropertysetItem(); item.addItemProperty(KEY_LENGTH, new ObjectProperty<String>(String.valueOf(keyLength))); item.addItemProperty(CURRENT_PUBLIC_KEY, new ObjectProperty<String>(getCurrentPublicKey())); return item; }
@Override public PropertysetItem readFromItem() { PropertysetItem newValue = new PropertysetItem(); fieldNames.forEach((compositeKeyName, fields) -> { PropertysetItem compositeFieldNewValues = new PropertysetItem(); fields.forEach(propertyName -> { if (relatedFormItem.getItemProperty(propertyName) != null) { compositeFieldNewValues.addItemProperty(propertyName, relatedFormItem.getItemProperty(propertyName)); } }); newValue.addItemProperty(compositeKeyName, new ObjectProperty<>(compositeFieldNewValues, PropertysetItem.class)); }); newValue.addItemProperty(AUTHENTICATION, relatedFormItem.getItemProperty("class") == null ? new ObjectProperty<>(StringUtils.EMPTY) : relatedFormItem.getItemProperty("class")); return newValue; }
@Override public JcrNewNodeAdapter answer(InvocationOnMock invocation) throws Throwable { Object[] args = invocation.getArguments(); JcrNewNodeAdapter newFavorite = new JcrNewNodeAdapter(session.getRootNode(), NAME); newFavorite.addItemProperty(TITLE, new ObjectProperty<String>((String) args[1])); newFavorite.addItemProperty(URL, new ObjectProperty<String>((String) args[0])); newFavorite.addItemProperty(ICON, new ObjectProperty<String>(StringUtils.defaultIfEmpty((String) args[2], "icon-app"))); return newFavorite; } }).when(favoritesManager).createFavoriteSuggestion(anyString(), anyString(), anyString());
@Override public Property<?> answer(InvocationOnMock invocation) throws Throwable { FooItem foo = invocation.getArgumentAt(0, FooItem.class); Object value = foo.getPropertyValue(); return value != null ? new ObjectProperty<>(value) : null; } }).when(table).getContainerProperty(any(FooItem.class), any());
@Before public void setUp() throws Exception { when(context.getLocale()).thenReturn(Locale.ENGLISH); when(context.getUser()).thenReturn(user); Item item = mock(Item.class); Date date = new Date(); date.setTime(0); Property<Date> property = new ObjectProperty<>(date); when(item.getItemProperty(anyString())).thenReturn(property); when(source.getItem(anyObject())).thenReturn(item); UI ui = mock(UI.class); Page page = mock(Page.class); WebBrowser browser = mock(WebBrowser.class); when(ui.getPage()).thenReturn(page); when(page.getWebBrowser()).thenReturn(browser); CurrentInstance.set(UI.class, ui); }
@Test public void setMultiValueProperty() throws Exception { // GIVEN String[] values = { "Art", "Dan", "Jen" }; JcrNodeAdapter adapter = new JcrNodeAdapter(node); Property<HashSet> property = new ObjectProperty<>(new HashSet<>(Arrays.asList(values))); adapter.addItemProperty("multiple", property); // WHEN Node res = adapter.applyChanges(); // THEN assertTrue(res.getProperty("multiple").isMultiple()); }
@Test public void executeCreatesProperty() throws RepositoryException, ActionExecutionException { // GIVEN Node node = session.getRootNode().addNode("underlying"); Item item = new JcrNodeAdapter(node); item.addItemProperty("property", new ObjectProperty<>("changed")); SaveDialogAction<SaveDialogActionDefinition> action = new SaveDialogAction<>(definition, item, validator, callback); // WHEN action.execute(); // THEN node = session.getRootNode().getNode("underlying"); assertEquals(true, node.hasProperty("property")); assertEquals("changed", node.getProperty("property").getString()); }
@Test(expected = UnsupportedOperationException.class) public void testCannotAddItemProperty() throws RepositoryException { // GIVEN Node node = session.getRootNode(); node.setProperty(propertyName, propertyValue); JcrPropertyAdapter adapter = new JcrPropertyAdapter(node.getProperty(propertyName)); // WHEN adapter.addItemProperty("foobar", new ObjectProperty<String>("value")); }
@Test public void executeCreatesProperty() throws RepositoryException, ActionExecutionException { // GIVEN Node node = session.getRootNode().addNode("underlying"); JcrNodeAdapter item = new JcrNodeAdapter(node); item.addItemProperty("property", new ObjectProperty<>("changed")); SaveFormAction action = new SaveFormAction(definition, item, callback, validator); // WHEN action.execute(); // THEN node = session.getRootNode().getNode("underlying"); assertEquals(true, node.hasProperty("property")); assertEquals("changed", node.getProperty("property").getString()); }
@Test public void testUpdateProperties() throws Exception { // GIVEN final Node underlyingNode = session.getRootNode().addNode("underlying"); final String propertyName = "TEST"; final String propertyValue = "value"; final DummyJcrNodeAdapter item = new DummyJcrNodeAdapter(underlyingNode); Property<String> property = new ObjectProperty<>(propertyValue, String.class); item.getChangedProperties().put(propertyName, property); // WHEN item.applyChanges(); // THEN assertEquals(propertyValue, underlyingNode.getProperty(propertyName).getString()); }
@Test public void testUpdateMultiProperty() throws RepositoryException { // GIVEN String[] newValues = { "Pig", "Ph", "Po" }; PropertysetItem input = new PropertysetItem(); input.addItemProperty(0, new ObjectProperty<String>("Pig")); input.addItemProperty(1, new ObjectProperty<String>("Ph")); input.addItemProperty(2, new ObjectProperty<String>("Po")); JcrNodeAdapter parent = new JcrNodeAdapter(rootNode); MultiValueChildrenNodeTransformer delegate = new MultiValueChildrenNodeTransformer(parent, definition, PropertysetItem.class, mock(I18NAuthoringSupport.class)); // WHEN delegate.writeToItem(input); parent.applyChanges(); // THEN NodeIterator iterator = parent.getJcrItem().getNodes(); assertTrue(iterator.hasNext()); assertEquals("Pig", iterator.nextNode().getProperty(propertyName).getString()); assertEquals("Ph", iterator.nextNode().getProperty(propertyName).getString()); assertEquals("Po", iterator.nextNode().getProperty(propertyName).getString()); } }
@Test public void testUpdateNewProperties() throws Exception { // GIVEN final Node underlyingNode = session.getRootNode().addNode("underlying"); final String propertyNameNotEmpty = "NOT_EMPTY"; final String propertyValueNotEmpty = "value"; final String propertyNameEmpty = "EMPTY"; final String propertyNameBlank = "BLANK"; final String propertyNameAlreadyStored = "EXISTING"; final String propertyValueAlreadyStored = "existing"; final String propertyNameAlreadyStoredEmpty = "EXISTING_EMPTY"; underlyingNode.setProperty(propertyNameAlreadyStored, propertyValueAlreadyStored); underlyingNode.setProperty(propertyNameAlreadyStoredEmpty, ""); underlyingNode.getSession().save(); final DummyJcrNodeAdapter item = new DummyJcrNodeAdapter(underlyingNode); Property<String> propertyNotEmpty = new ObjectProperty<>(propertyValueNotEmpty, String.class); item.getChangedProperties().put(propertyNameNotEmpty, propertyNotEmpty); Property<String> propertyEmpty = new ObjectProperty<>("", String.class); item.getChangedProperties().put(propertyNameEmpty, propertyEmpty); Property<String> propertyBlank = new ObjectProperty<>(" ", String.class); item.getChangedProperties().put(propertyNameBlank, propertyBlank); // WHEN item.applyChanges(); // THEN assertEquals(propertyValueNotEmpty, underlyingNode.getProperty(propertyNameNotEmpty).getString()); assertEquals(propertyValueAlreadyStored, underlyingNode.getProperty(propertyNameAlreadyStored).getString()); assertEquals(" ", underlyingNode.getProperty(propertyNameBlank).getString()); assertEquals("", underlyingNode.getProperty(propertyNameEmpty).getString()); assertTrue(underlyingNode.hasProperty(propertyNameAlreadyStoredEmpty)); }
@Test public void testWriteMultiProperty() throws RepositoryException { // GIVEN PropertysetItem itemSet = new PropertysetItem(); itemSet.addItemProperty("field1", new ObjectProperty<>("hello1")); // WHEN delegate.writeToItem(itemSet); parent.applyChanges(); // THEN assertTrue(rootNode.hasProperty("fieldNamefield1")); assertEquals("hello1", rootNode.getProperty("fieldNamefield1").getString()); assertTrue(rootNode.hasProperty("fieldNamefield2")); assertEquals("hello2", rootNode.getProperty("fieldNamefield2").getString()); }
@Before public void setUp() throws Exception { // Mock session. MockContext context = new MockContext(); session = new MockSession("dam"); context.addSession("dam", session); MgnlContext.setInstance(context); ComponentsTestUtil.setInstance(MagnoliaConfigurationProperties.class, mock(MagnoliaConfigurationProperties.class)); commandsManager = mock(CommandsManager.class); callback = mock(EditorCallback.class); EditorValidator validator = mock(EditorValidator.class); doReturn(true).when(validator).isValid(); // GIVEN JcrNewNodeAdapter importedZip = new JcrNewNodeAdapter(session.getRootNode(), NodeTypes.Folder.NAME); importedZip.addItemProperty(ImportZipCommand.ENCODING_PROPERTY, new ObjectProperty<>("UTF-8")); JcrNewNodeAdapter importHolder = new JcrNewNodeAdapter(importedZip.getJcrItem(), ContentNode.NAME, "import"); importHolder.addItemProperty(PROPERTY_FILENAME, new ObjectProperty<>("foo.zip")); importHolder.addItemProperty(JCR_DATA, new ObjectProperty<>(mock(BinaryImpl.class))); importHolder.addItemProperty(EXTENSION, new ObjectProperty<>("zip")); importedZip.addChild(importHolder); nodeNameHelper = new NodeNameHelper(mock(MagnoliaConfigurationProperties.class)); action = new ZipUploadDialogAction<>(definition, commandsManager, validator, callback, importedZip, nodeNameHelper, null); }
values1.addItemProperty("property1", new ObjectProperty<String>("value11Modified")); values1.addItemProperty("property2", new ObjectProperty<String>("")); values2.addItemProperty("subproperty1", new ObjectProperty<String>("value21Modified")); values2.addItemProperty("subproperty2", new ObjectProperty<String>("value22Modified")); values1.addItemProperty("foo", new ObjectProperty<PropertysetItem>(values2)); mainProperties.addItemProperty("00", new ObjectProperty<PropertysetItem>(values1));