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;