@Nullable @Override public Component getComponent(int index) { com.vaadin.ui.Component vComponent = getComponentContent().getComponent(index); for (Component ownComponent : ownComponents) { if (ownComponent.unwrapComposition(com.vaadin.ui.Component.class) == vComponent) { return ownComponent; } } return null; }
@Test public void doNotAddEmptyProperties() throws Exception { // GIVEN CompositeFieldDefinition definition = compositeFieldDefinition("composite-"); Node node = session.getRootNode().addNode("node"); node.setProperty("composite-t1", "init1"); node.getSession().save(); JcrNodeAdapter nodeAdapter = new JcrNodeAdapter(node); CompositeFieldFactory<CompositeFieldDefinition> factory = new CompositeFieldFactory<>(definition, nodeAdapter, fieldFactoryFactory, componentProvider, i18nAuthoringSupport); CompositeField field = (CompositeField) factory.createField(); Iterator<Component> componentIterator = field.iterator(); // CustomField#getContent is lazy, we trigger it via ComponentIterator#next() AbstractOrderedLayout layout = (AbstractOrderedLayout) componentIterator.next(); TextField t1 = (TextField) layout.getComponent(0); TextField t2 = (TextField) layout.getComponent(1); // WHEN enterText(t1, ""); enterText(t2, ""); nodeAdapter.applyChanges(); // THEN assertThat(node, not(hasProperty("composite-t1"))); assertThat(node, not(hasProperty("composite-t2"))); }