diff options
author | Adrian Sacchi | 2014-03-13 14:01:28 +0000 |
---|---|---|
committer | Ken Lee | 2014-03-31 09:14:23 +0000 |
commit | 47095735a87f1136b5e4f3cd61e194c3e5de2f04 (patch) | |
tree | 4ff2b63d51241f8d70ed46b7bea67b277c5058f4 | |
parent | 70ee0068be6ce9ce3a0ff28ce3ea5ec717433c6d (diff) | |
download | org.eclipse.scout.rt-47095735a87f1136b5e4f3cd61e194c3e5de2f04.tar.gz org.eclipse.scout.rt-47095735a87f1136b5e4f3cd61e194c3e5de2f04.tar.xz org.eclipse.scout.rt-47095735a87f1136b5e4f3cd61e194c3e5de2f04.zip |
bug 420626: Unique FieldId
https://bugs.eclipse.org/bugs/show_bug.cgi?id=420626
fix order of composed classId for fields in template groupboxes
Change-Id: Ibbb57d41cefb5a12b1f2b46be1cafbf687a10aeb
Signed-off-by: Adrian Sacchi <adrian.sacchi@bsiag.com>
Reviewed-on: https://git.eclipse.org/r/23328
Tested-by: Hudson CI
Reviewed-by: Ken Lee <kle@bsiag.com>
IP-Clean: Ken Lee <kle@bsiag.com>
Reviewed-on: https://git.eclipse.org/r/24018
5 files changed, 86 insertions, 28 deletions
diff --git a/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/ui/form/fields/AbstractFormFieldTest.java b/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/ui/form/fields/AbstractFormFieldTest.java index 5aed7175fa..a6fa0a5185 100644 --- a/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/ui/form/fields/AbstractFormFieldTest.java +++ b/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/ui/form/fields/AbstractFormFieldTest.java @@ -17,13 +17,19 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import org.eclipse.scout.commons.ConfigurationUtility; +import org.eclipse.scout.commons.ITypeWithClassId; import org.eclipse.scout.commons.annotations.ClassId; import org.eclipse.scout.commons.annotations.Order; import org.eclipse.scout.commons.exception.ProcessingException; import org.eclipse.scout.rt.client.ui.form.AbstractForm; import org.eclipse.scout.rt.client.ui.form.fields.AbstractFormFieldTest.TestForm2.MainBox.SimpleGroupBox2; +import org.eclipse.scout.rt.client.ui.form.fields.AbstractFormFieldTest.TestFormWithGroupBoxes.MainBox.GroupBox1; +import org.eclipse.scout.rt.client.ui.form.fields.AbstractFormFieldTest.TestFormWithGroupBoxes.MainBox.GroupBox2; import org.eclipse.scout.rt.client.ui.form.fields.groupbox.AbstractGroupBox; +import org.eclipse.scout.rt.client.ui.form.fixture.AbstractTemplateUsingOtherTemplateGroupBox; import org.eclipse.scout.rt.client.ui.form.fixture.AbstractTestGroupBox; +import org.junit.Assert; import org.junit.Test; /** @@ -81,7 +87,14 @@ public class AbstractFormFieldTest { */ @Test public void testClassIdTemplateGroupBox() throws ProcessingException { - verifyNoDuplicateClassIds(new TestFormWithGroupBoxes().getAllFields()); + TestFormWithGroupBoxes form = new TestFormWithGroupBoxes(); + verifyNoDuplicateClassIds(form.getAllFields()); + String completeClassId = form.getGroupBox1().getUsingOtherTemplateBox().getText1Field().classId(); + String fieldClassId = ConfigurationUtility.getAnnotatedClassIdWithFallback(form.getGroupBox1().getUsingOtherTemplateBox().getText1Field().getClass()); + String parentGroupboxClassId = ConfigurationUtility.getAnnotatedClassIdWithFallback(form.getGroupBox1().getUsingOtherTemplateBox().getClass(), true); + String parentParentGroupboxClassId = ConfigurationUtility.getAnnotatedClassIdWithFallback(form.getGroupBox1().getClass(), true); + String expectedClassId = fieldClassId + ITypeWithClassId.ID_CONCAT_SYMBOL + parentGroupboxClassId + ITypeWithClassId.ID_CONCAT_SYMBOL + parentParentGroupboxClassId; + Assert.assertEquals(expectedClassId, completeClassId); } private void verifyNoDuplicateClassIds(List<IFormField> formFields) { @@ -132,14 +145,22 @@ public class AbstractFormFieldTest { super(); } + public GroupBox1 getGroupBox1() { + return getFieldByClass(GroupBox1.class); + } + + public GroupBox2 getGroupBox2() { + return getFieldByClass(GroupBox2.class); + } + public class MainBox extends AbstractGroupBox { @Order(10.0) - public class SimpleGroupBox extends AbstractTestGroupBox { + public class GroupBox1 extends AbstractTemplateUsingOtherTemplateGroupBox { } @Order(20.0) - public class SimpleGroupBox2 extends AbstractTestGroupBox { + public class GroupBox2 extends AbstractTemplateUsingOtherTemplateGroupBox { } } diff --git a/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/ui/form/fixture/AbstractTemplateUsingOtherTemplateGroupBox.java b/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/ui/form/fixture/AbstractTemplateUsingOtherTemplateGroupBox.java new file mode 100644 index 0000000000..0f57cd514c --- /dev/null +++ b/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/ui/form/fixture/AbstractTemplateUsingOtherTemplateGroupBox.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright (c) 2013 BSI Business Systems Integration AG. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BSI Business Systems Integration AG - initial API and implementation + ******************************************************************************/ +package org.eclipse.scout.rt.client.ui.form.fixture; + +import org.eclipse.scout.commons.annotations.Order; +import org.eclipse.scout.rt.client.ui.form.fields.groupbox.AbstractGroupBox; +import org.eclipse.scout.rt.client.ui.form.fields.stringfield.AbstractStringField; + +/** + * Template GroupBox with a StringField and a nested groupbox using another template + */ +public abstract class AbstractTemplateUsingOtherTemplateGroupBox extends AbstractGroupBox { + + public TextField getTextField() { + return getFieldByClass(TextField.class); + } + + public UsingOtherTemplateBox getUsingOtherTemplateBox() { + return getFieldByClass(UsingOtherTemplateBox.class); + } + + @Order(10.0) + public class TextField extends AbstractStringField { + } + + @Order(20.0) + public class UsingOtherTemplateBox extends AbstractTestGroupBox { + } + +} diff --git a/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/ui/form/fixture/AbstractTestGroupBox.java b/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/ui/form/fixture/AbstractTestGroupBox.java index b755dd9b14..985330ef71 100644 --- a/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/ui/form/fixture/AbstractTestGroupBox.java +++ b/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/client/ui/form/fixture/AbstractTestGroupBox.java @@ -10,6 +10,7 @@ ******************************************************************************/ package org.eclipse.scout.rt.client.ui.form.fixture; +import org.eclipse.scout.commons.annotations.ClassId; import org.eclipse.scout.commons.annotations.FormData; import org.eclipse.scout.commons.annotations.FormData.DefaultSubtypeSdkCommand; import org.eclipse.scout.commons.annotations.FormData.SdkCommand; @@ -41,6 +42,7 @@ public abstract class AbstractTestGroupBox extends AbstractGroupBox { return getFieldByClass(InnerTestGroupBox.class); } + @ClassId("1b67f4c4-1579-4875-a2c9-d62c7cd63508") @Order(10.0) public class Text1Field extends AbstractStringField { } diff --git a/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/shared/data/form/fixture/AbstractTestGroupBoxData.java b/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/shared/data/form/fixture/AbstractTestGroupBoxData.java index f5b8f51b3d..ee57eceeb8 100644 --- a/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/shared/data/form/fixture/AbstractTestGroupBoxData.java +++ b/org.eclipse.scout.rt.client.test/src/org/eclipse/scout/rt/shared/data/form/fixture/AbstractTestGroupBoxData.java @@ -1,29 +1,37 @@ /******************************************************************************* - * Copyright (c) 2013 BSI Business Systems Integration AG. + * Copyright (c) 2010 BSI Business Systems Integration AG. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html - * + * * Contributors: * BSI Business Systems Integration AG - initial API and implementation ******************************************************************************/ package org.eclipse.scout.rt.shared.data.form.fixture; +import java.util.Map; + +import javax.annotation.Generated; + import org.eclipse.scout.rt.shared.data.form.ValidationRule; import org.eclipse.scout.rt.shared.data.form.fields.AbstractFormFieldData; import org.eclipse.scout.rt.shared.data.form.fields.AbstractValueFieldData; +/** + * <b>NOTE:</b><br> + * This class is auto generated by the Scout SDK. No manual modifications recommended. + * + * @generated + */ +@Generated(value = "org.eclipse.scout.sdk.workspace.dto.formdata.FormDataDtoUpdateOperation", comments = "This class is auto generated by the Scout SDK. No manual modifications recommended.") public abstract class AbstractTestGroupBoxData extends AbstractFormFieldData { + private static final long serialVersionUID = 1L; public AbstractTestGroupBoxData() { } - public InnerText1 getInnerText1() { - return getFieldByClass(InnerText1.class); - } - public TestListBox getTestListBox() { return getFieldByClass(TestListBox.class); } @@ -36,23 +44,8 @@ public abstract class AbstractTestGroupBoxData extends AbstractFormFieldData { return getFieldByClass(Text2.class); } - public static class InnerText1 extends AbstractValueFieldData<String> { - private static final long serialVersionUID = 1L; - - public InnerText1() { - } - - /** - * list of derived validation rules. - */ - @Override - protected void initValidationRules(java.util.Map<String, Object> ruleMap) { - super.initValidationRules(ruleMap); - ruleMap.put(ValidationRule.MAX_LENGTH, 4000); - } - } - public static class TestListBox extends AbstractValueFieldData<String[]> { + private static final long serialVersionUID = 1L; public TestListBox() { @@ -60,6 +53,7 @@ public abstract class AbstractTestGroupBoxData extends AbstractFormFieldData { } public static class Text1 extends AbstractValueFieldData<String> { + private static final long serialVersionUID = 1L; public Text1() { @@ -69,13 +63,14 @@ public abstract class AbstractTestGroupBoxData extends AbstractFormFieldData { * list of derived validation rules. */ @Override - protected void initValidationRules(java.util.Map<String, Object> ruleMap) { + protected void initValidationRules(Map<String, Object> ruleMap) { super.initValidationRules(ruleMap); ruleMap.put(ValidationRule.MAX_LENGTH, 4000); } } public static class Text2 extends AbstractValueFieldData<String> { + private static final long serialVersionUID = 1L; public Text2() { @@ -85,7 +80,7 @@ public abstract class AbstractTestGroupBoxData extends AbstractFormFieldData { * list of derived validation rules. */ @Override - protected void initValidationRules(java.util.Map<String, Object> ruleMap) { + protected void initValidationRules(Map<String, Object> ruleMap) { super.initValidationRules(ruleMap); ruleMap.put(ValidationRule.MAX_LENGTH, 4000); } diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/fields/AbstractFormField.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/fields/AbstractFormField.java index c7e7eff177..ac54dfabdb 100644 --- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/fields/AbstractFormField.java +++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/form/fields/AbstractFormField.java @@ -1048,7 +1048,9 @@ public abstract class AbstractFormField extends AbstractPropertyObserver impleme StringBuilder fieldId = new StringBuilder(); String simpleClassId = ConfigurationUtility.getAnnotatedClassIdWithFallback(getClass(), true); fieldId.append(simpleClassId); - for (ICompositeField enclosingField : getEnclosingFieldList()) { + List<ICompositeField> enclosingFieldList = getEnclosingFieldList(); + Collections.reverse(enclosingFieldList); + for (ICompositeField enclosingField : enclosingFieldList) { String enclosingClassId = ConfigurationUtility.getAnnotatedClassIdWithFallback(enclosingField.getClass(), true); fieldId.append(ID_CONCAT_SYMBOL).append(enclosingClassId); } |