]> source.dussan.org Git - vaadin-framework.git/commitdiff
Replace usage of getParent() to prevent client side NPE during onUnregister (#8648)
authorAdam Wagner <wbadam@users.noreply.github.com>
Wed, 22 Feb 2017 07:59:55 +0000 (09:59 +0200)
committerPekka Hyvönen <pekka@vaadin.com>
Wed, 22 Feb 2017 07:59:55 +0000 (09:59 +0200)
* Replace usage of getParent() to prevent client side NPE during onUnregister() (#8646)

client/src/main/java/com/vaadin/client/extensions/DragSourceExtensionConnector.java
client/src/main/java/com/vaadin/client/extensions/DropTargetExtensionConnector.java

index 25e2912b7acb7be2d00ab720a7af0a6ce11e40ee..532b9877fc4874650b3c8d8ea1d343b63de6446c 100644 (file)
@@ -21,6 +21,7 @@ import java.util.Map;
 import com.google.gwt.dom.client.DataTransfer;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.NativeEvent;
+import com.google.gwt.user.client.ui.Widget;
 import com.vaadin.client.ComponentConnector;
 import com.vaadin.client.ServerConnector;
 import com.vaadin.event.dnd.DragSourceExtension;
@@ -45,8 +46,15 @@ public class DragSourceExtensionConnector extends AbstractExtensionConnector {
     private final EventListener dragStartListener = this::onDragStart;
     private final EventListener dragEndListener = this::onDragEnd;
 
+    /**
+     * Widget of the drag source component.
+     */
+    private Widget dragSourceWidget;
+
     @Override
     protected void extend(ServerConnector target) {
+        dragSourceWidget = ((ComponentConnector) target).getWidget();
+
         Element dragSourceElement = getDraggableElement();
 
         dragSourceElement.setDraggable(Element.DRAGGABLE_TRUE);
@@ -124,7 +132,7 @@ public class DragSourceExtensionConnector extends AbstractExtensionConnector {
      * @return the draggable element in the parent widget.
      */
     protected Element getDraggableElement() {
-        return ((ComponentConnector) getParent()).getWidget().getElement();
+        return dragSourceWidget.getElement();
     }
 
     private native void setEffectAllowed(DataTransfer dataTransfer,
index 5d72a766960c57ecf75df619e350629bf58901f0..3a9cbbfe847347f27aea76455d14c07f41f5a84e 100644 (file)
@@ -25,6 +25,7 @@ import com.google.gwt.dom.client.BrowserEvents;
 import com.google.gwt.dom.client.DataTransfer;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.NativeEvent;
+import com.google.gwt.user.client.ui.Widget;
 import com.vaadin.client.ComponentConnector;
 import com.vaadin.client.ServerConnector;
 import com.vaadin.event.dnd.DropTargetExtension;
@@ -51,8 +52,15 @@ public class DropTargetExtensionConnector extends AbstractExtensionConnector {
     private final EventListener dragLeaveListener = this::onDragLeave;
     private final EventListener dropListener = this::onDrop;
 
+    /**
+     * Widget of the drop target component.
+     */
+    private Widget dropTargetWidget;
+
     @Override
     protected void extend(ServerConnector target) {
+        dropTargetWidget = ((ComponentConnector) target).getWidget();
+
         EventTarget dropTarget = getDropTargetElement().cast();
 
         // dragenter event
@@ -91,7 +99,7 @@ public class DropTargetExtensionConnector extends AbstractExtensionConnector {
      * @return the drop target element in the parent widget.
      */
     protected Element getDropTargetElement() {
-        return ((ComponentConnector) getParent()).getWidget().getElement();
+        return dropTargetWidget.getElement();
     }
 
     /**