]> source.dussan.org Git - vaadin-framework.git/commitdiff
FieldGroup.commit throws NPE if not bound to an item (#14732).
authorSergey Budkin <sergey@vaadin.com>
Mon, 6 Oct 2014 11:42:54 +0000 (14:42 +0300)
committerVaadin Code Review <review@vaadin.com>
Thu, 9 Oct 2014 11:09:53 +0000 (11:09 +0000)
Added null check and corresponding test.

Change-Id: I197dad14d6b5f7bf9bedcdf083d4b1f0f20efdcd

server/src/com/vaadin/data/fieldgroup/FieldGroup.java
server/tests/src/com/vaadin/data/fieldgroup/FieldGroupExceptionTest.java [new file with mode: 0644]

index 2873d07c5dd53972c339d2af2dcdea181ce627be..27515d15afaf88dd5994a34c9da21a5cdca23f46 100644 (file)
@@ -436,8 +436,14 @@ public class FieldGroup implements Serializable {
             return;
         }
         for (Field<?> f : fieldToPropertyId.keySet()) {
-            ((Property.Transactional<?>) f.getPropertyDataSource())
-                    .startTransaction();
+            Property.Transactional<?> property = (Property.Transactional<?>) f
+                    .getPropertyDataSource();
+            if (property == null) {
+                throw new CommitException("Property \""
+                        + fieldToPropertyId.get(f)
+                        + "\" not bound to datasource.");
+            }
+            property.startTransaction();
         }
         try {
             firePreCommitEvent();
diff --git a/server/tests/src/com/vaadin/data/fieldgroup/FieldGroupExceptionTest.java b/server/tests/src/com/vaadin/data/fieldgroup/FieldGroupExceptionTest.java
new file mode 100644 (file)
index 0000000..636162d
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.data.fieldgroup;
+
+import org.junit.Test;
+
+import com.vaadin.data.fieldgroup.FieldGroup.CommitException;
+import com.vaadin.ui.PopupDateField;
+
+public class FieldGroupExceptionTest {
+
+    @Test(expected = CommitException.class)
+    public void testUnboundCommitException() throws CommitException {
+        FieldGroup fieldGroup = new FieldGroup();
+        PopupDateField dateField = new PopupDateField();
+        fieldGroup.bind(dateField, "date");
+        fieldGroup.commit();
+    }
+
+}