Browse Source

FieldGroup.commit throws NPE if not bound to an item (#14732).

Added null check and corresponding test.

Change-Id: I197dad14d6b5f7bf9bedcdf083d4b1f0f20efdcd
tags/7.4.0.beta1
Sergey Budkin 9 years ago
parent
commit
29b57f24f7

+ 8
- 2
server/src/com/vaadin/data/fieldgroup/FieldGroup.java View 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();

+ 33
- 0
server/tests/src/com/vaadin/data/fieldgroup/FieldGroupExceptionTest.java View File

@@ -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();
}

}

Loading…
Cancel
Save