[ 
https://issues.apache.org/jira/browse/OLINGO-633?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14505247#comment-14505247
 ] 

Frederic Souchu commented on OLINGO-633:
----------------------------------------

Good to go - unit tests are much more comprehensive than my version!

Minor comment, the constructEnumValue method could 'reuse' the memberValue 
local variable:
{code}
for (final EdmMember member : getMembers()) {
        /* moved outside if blocks */
        final long memberValue = Long.parseLong(member.getValue());
        if (isFlags()) {
                if ((memberValue & remaining) == memberValue) {
                        if (result.length() > 0) {
                                result.append(',');
                        }
                result.append(member.getName());
                remaining ^= memberValue;
                }
        } else {
                if (value == memberValue) {
                        return member.getName();
                }
        }
}
{code}

> enums with isFlags()=false are incorrectly serialized
> -----------------------------------------------------
>
>                 Key: OLINGO-633
>                 URL: https://issues.apache.org/jira/browse/OLINGO-633
>             Project: Olingo
>          Issue Type: Bug
>          Components: odata4-server
>    Affects Versions: (Java) V4 4.0.0-beta-02
>            Reporter: Frederic Souchu
>            Assignee: Michael Bolz
>
> This type:
> {code}
> return new EnumType()
>               .setName("CarType")
>               .setFlags(false)
>               
> .setUnderlyingType(EdmPrimitiveTypeKind.Int32.getFullQualifiedName())
>               .setMembers(
>                      Arrays.asList(
> new EnumMember()
>                      .setName("NotProvided")
>                      .setValue("0"), 
> new EnumMember()
> .setName("SuperCar")
> .setValue("1"),
> new EnumMember()
> .setName("MonsterCar")
> .setValue("2"),
> new EnumMember()
> .setName("SpaceCar")
> .setValue("3"), 
> new EnumMember()
> .setName("SlowCar")
> .setValue("4")));
> {code}
> With values set as:
> {code}
> entitySet.getEntities().add(new Entity()
> .addProperty(createPrimitive("Id", 1))
> …
> .addProperty(new 
> PropertyImpl(CarsEdmProvider.ETN_CARTYPE.getFullQualifiedNameAsString(), 
> "Type", ValueType.ENUM, rnd.nextInt(5))));
> {code}
> Will produce the following incorrect output (using the Cars sample):
> {code}
> {
> Id: 1
> Model: "F1 W03"
> ModelYear: "2012"
> Price: 189189.43
> Currency: "EUR"
> Type: "NotProvided,SlowCar" // it should be a single value… 
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to