Bug 561002 - View Template NPE when using DomainModelReferenceSelector
See also Bug 560703 - View Template NPE when using
ViewModelElementSelector with Attribute
Change-Id: Ie0b4324bff219e9a82b61aba3106d0b8b37287d3
Signed-off-by: Eugen Neufeld <eneufeld@eclipsesource.com>
diff --git a/bundles/org.eclipse.emf.ecp.common/src/org/eclipse/emf/ecp/common/spi/cachetree/AbstractCachedTree.java b/bundles/org.eclipse.emf.ecp.common/src/org/eclipse/emf/ecp/common/spi/cachetree/AbstractCachedTree.java
index c3d58f2..8a6f3f8 100644
--- a/bundles/org.eclipse.emf.ecp.common/src/org/eclipse/emf/ecp/common/spi/cachetree/AbstractCachedTree.java
+++ b/bundles/org.eclipse.emf.ecp.common/src/org/eclipse/emf/ecp/common/spi/cachetree/AbstractCachedTree.java
@@ -114,6 +114,9 @@
// parent.getClass())
updateParentNode(parent, eObject, nodes.get(eObject).getDisplayValue());
eObject = parent;
+ if (nodes.get(eObject) == null) {
+ break;
+ }
parent = parent.eContainer();
affectedElements.add(eObject);
}
diff --git a/bundles/org.eclipse.emf.ecp.view.template.tooling/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.ecp.view.template.tooling/META-INF/MANIFEST.MF
index 554d2e5..9984271 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.tooling/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.ecp.view.template.tooling/META-INF/MANIFEST.MF
@@ -42,6 +42,7 @@
org.eclipse.emfforms.spi.common.report;version="[1.24.0,1.24.1)",
org.eclipse.emfforms.spi.core.services.databinding.emf;version="[1.24.0,1.24.1)",
org.eclipse.jface.databinding.swt;version="0.0.0",
+ org.eclipse.jface.databinding.swt.typed;version="0.0.0",
org.osgi.service.component.annotations;version="1.2.0"
Automatic-Module-Name: org.eclipse.emf.ecp.view.template.tooling
Service-Component: OSGI-INF/DmrSelectorSegmentDmrControlSWTRendererService.xml
diff --git a/bundles/org.eclipse.emf.ecp.view.template.tooling/src/org/eclipse/emf/ecp/view/template/internal/tooling/controls/AttributeValueControlSWTRenderer.java b/bundles/org.eclipse.emf.ecp.view.template.tooling/src/org/eclipse/emf/ecp/view/template/internal/tooling/controls/AttributeValueControlSWTRenderer.java
index f98e691..62608ee 100644
--- a/bundles/org.eclipse.emf.ecp.view.template.tooling/src/org/eclipse/emf/ecp/view/template/internal/tooling/controls/AttributeValueControlSWTRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.view.template.tooling/src/org/eclipse/emf/ecp/view/template/internal/tooling/controls/AttributeValueControlSWTRenderer.java
@@ -34,7 +34,7 @@
import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedReport;
import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
-import org.eclipse.jface.databinding.swt.WidgetProperties;
+import org.eclipse.jface.databinding.swt.typed.WidgetProperties;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.swt.SWT;
@@ -89,38 +89,24 @@
VT_VIEW_TEMPLATEPROVIDER);
}
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.emf.ecp.view.spi.core.swt.SimpleControlSWTControlSWTRenderer#createBindings(org.eclipse.swt.widgets.Control,
- * org.eclipse.emf.ecore.EStructuralFeature.Setting)
- */
+ @SuppressWarnings("unchecked")
@Override
protected Binding[] createBindings(Control control) throws DatabindingFailedException {
final Label label = (Label) Composite.class.cast(control).getChildren()[0];
final Binding binding = getDataBindingContext().bindValue(WidgetProperties.text().observe(label),
- getModelValue(), withPreSetValidation(new UpdateValueStrategy()), new UpdateValueStrategy() {
+ getModelValue(),
+ withPreSetValidation(new UpdateValueStrategy<String, String>(UpdateValueStrategy.POLICY_NEVER)),
+ new UpdateValueStrategy<String, String>() {
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.core.databinding.UpdateValueStrategy#convert(java.lang.Object)
- */
@Override
- public Object convert(Object value) {
- return super.convert(value).toString();
+ public String convert(String value) {
+ return value;
}
});
return new Binding[] { binding };
}
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.emf.ecp.view.spi.core.swt.SimpleControlSWTControlSWTRenderer#createSWTControl(org.eclipse.swt.widgets.Composite,
- * org.eclipse.emf.ecore.EStructuralFeature.Setting)
- */
@Override
protected Control createSWTControl(final Composite parent) {
final Composite composite = new Composite(parent, SWT.NONE);
@@ -134,11 +120,6 @@
GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.BEGINNING).grab(false, false).applyTo(button);
button.addSelectionListener(new SelectionAdapter() {
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
- */
@Override
public void widgetSelected(SelectionEvent e) {
super.widgetSelected(e);
@@ -166,11 +147,6 @@
return composite;
}
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.emf.ecp.view.spi.core.swt.SimpleControlSWTRenderer#getUnsetText()
- */
@Override
protected String getUnsetText() {
return Messages.AttributeValueControlSWTRenderer_UnsetAttributeMessage;