Hello Thomas, Here is the diff which I tested with trunk intake.
I an not sure how can I keep the 'null' state. Thanks, Youngho //********************************************* Index: src/java/org/apache/fulcrum/intake/model/Field.java =================================================================== --- src/java/org/apache/fulcrum/intake/model/Field.java (revision 1629357) +++ src/java/org/apache/fulcrum/intake/model/Field.java (working copy) @@ -42,7 +42,7 @@ * Base class for Intake generated input processing classes. * * @author <a href="mailto:[email protected]">John McNally</a> - * @author <a href="mailto:[email protected]>Daniel Rall</a> + * @author <a href="mailto:[email protected]">Daniel Rall</a> * @author <a href="mailto:[email protected]">Henning P. Schmiedehausen</a> * @author <a href="mailto:[email protected]">Quinton McCombs</a> * @author <a href="mailto:[email protected]">Jürgen Hoffmann</a> Index: src/test/intake1.xml =================================================================== --- src/test/intake1.xml (revision 1629357) +++ src/test/intake1.xml (working copy) @@ -56,4 +56,20 @@ <rule name="invalidNumber">Not a number</rule> </field> </group> + +<group name="AttributeValue" key="attv" mapToObject="AttributeValue"> + <field name="Id" key="id" type="long" mapToProperty="ValueId"> + <rule name="mask" value="[0-9]+">intakeBadIdMessage</rule> + <rule name="required" value="false"></rule> + </field> + <field name="AttributeId" key="attid" type="int"> + <rule name="mask" value="[0-9]+"></rule> + <rule name="required" value="true">Required</rule> + </field> + <field name="UserId" key="visid" type="int"> + <rule name="mask" value="[0-9]+">intakeBadIdMessage</rule> + <rule name="required" value="false"></rule> + </field> +</group> + </input-data> Index: src/test/org/apache/fulcrum/intake/IntakeTest.java =================================================================== --- src/test/org/apache/fulcrum/intake/IntakeTest.java (revision 1629357) +++ src/test/org/apache/fulcrum/intake/IntakeTest.java (working copy) @@ -23,6 +23,7 @@ import org.apache.fulcrum.intake.model.Field; import org.apache.fulcrum.intake.model.Group; +import org.apache.fulcrum.intake.test.AttributeValue; import org.apache.fulcrum.intake.test.LoginForm; import org.apache.fulcrum.intake.validator.BooleanValidator; import org.apache.fulcrum.intake.validator.IntegerValidator; @@ -255,4 +256,36 @@ assertEquals("Invalid number message is wrong.", "Not a number", ve.getMessage()); } } + + public void testEmptyNumberField() throws Exception + { + IntakeService is = (IntakeService) this.resolve( IntakeService.class.getName() ); + Group group = is.getGroup("AttributeValue"); + assertNotNull(group); + + ParserService ps = (ParserService) this.resolve( ParserService.class.getName() ); + ValueParser pp = ps.getParser(DefaultParameterParser.class); + + pp.add("attv_0attid", "1"); + group.init(pp); + + Field<?> attributeField = group.get("AttributeId"); + assertNotNull(attributeField); + assertEquals(1, attributeField.getValue()); + + Field<?> valueField = group.get("Id"); + assertNull(valueField.getValue()); + + Field<?> userField = group.get("UserId"); + assertNull(userField.getValue()); + + AttributeValue value = new AttributeValue(); + assertTrue(group.isAllValid()); + // + group.setProperties(value); + + assertEquals(Integer.valueOf(1), value.getAttributeId()); + assertNull(value.toString(), value.getValueId()); + assertNull(value.toString(), value.getUserId()); + } } Index: src/test/org/apache/fulcrum/intake/test/AttributeValue.java =================================================================== --- src/test/org/apache/fulcrum/intake/test/AttributeValue.java (revision 0) +++ src/test/org/apache/fulcrum/intake/test/AttributeValue.java (working copy) @@ -0,0 +1,75 @@ +package org.apache.fulcrum.intake.test; + + +public class AttributeValue { + + private Long valueId; + + private Integer attributeId; + + private Integer userId; + + /** + * @return + */ + public Long getValueId() { + return valueId; + } + + /** + * @param userId + */ + public void setValueId(Long valueId) { + this.valueId = valueId; + } + + /** + * @return + */ + public Integer getAttributeId() { + return attributeId; + } + + /** + * @param attributeId + */ + public void setAttributeId(Integer attributeId) { + this.attributeId = attributeId; + } + + /** + * @return + */ + public Integer getUserId() { + return userId; + } + + /** + * @param userId + */ + public void setUserId(Integer userId) { + this.userId = userId; + } + + //**************************************** + // primitive for intake + public void setValueId(long valueId) { + setValueId(Long.valueOf(valueId)); + } + public void setAttributeId(int attributeId) { + setAttributeId(Integer.valueOf(attributeId)); + } + public void setUserId(int userId) { + setUserId(Integer.valueOf(userId)); + } + public String toString() { + final StringBuilder sb = new StringBuilder(); + sb.append("ValueId "); + sb.append(this.valueId); + sb.append(", AttributeId "); + sb.append(this.attributeId); + sb.append(", UserId "); + sb.append(this.userId); + return sb.toString(); + } +} 2014-11-03 1:35 GMT+09:00 Thomas Vandahl <[email protected]>: > On 31.10.14 04:26, Youngho Cho wrote: >> Hello, >> >> I am migrating very old intake to current trunk version. >> >> I have a question about usage for 'null' number state. >> >> for example, >> >> I would like to keep 'null' state when input parameter doesn't have a >> value for number field. >> >> But >> >> during the group.setProperties(OM) process >> the empty field value set to '0' value of number. >> >> How can I keep 'null' state ? > > Could you please show me the relevant part of your intake.xml? > > Bye, Thomas. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
