[ https://issues.apache.org/jira/browse/THRIFT-2326?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Roger Meier resolved THRIFT-2326. --------------------------------- Resolution: Duplicate > Enums generated for Java doesn't work for types in maps > ------------------------------------------------------- > > Key: THRIFT-2326 > URL: https://issues.apache.org/jira/browse/THRIFT-2326 > Project: Thrift > Issue Type: Bug > Components: Java - Compiler > Affects Versions: 0.9.1 > Environment: Mac OSX > Reporter: Hans Sjunnesson > > I use the following thrift file to illustrate the bug: > {code:title=test.thrift} > enum TestEnum { > ONE, > TWO, > THREE, > FOUR, > } > const map<TestEnum,string> TestMap = { > TestEnum.ONE: "one", > TestEnum.TWO: "two", > Testenum.THREE: "three", > TestEnum.FOUR: "four", > } > {code} > I then run {{thift --gen java test.thrift}} and when I compile the classes I > get the following errors: > {noformat} > testConstants.java:37: illegal start of expression > TestMap.put(.TestEnum.ONE, "one"); > ^ > testConstants.java:37: ';' expected > TestMap.put(.TestEnum.ONE, "one"); > ^ > testConstants.java:37: illegal start of expression > TestMap.put(.TestEnum.ONE, "one"); > ^ > testConstants.java:37: <identifier> expected > TestMap.put(.TestEnum.ONE, "one"); > ^ > testConstants.java:37: illegal start of expression > TestMap.put(.TestEnum.ONE, "one"); > ^ > testConstants.java:38: illegal start of expression > TestMap.put(.TestEnum.TWO, "two"); > ^ > testConstants.java:38: ';' expected > TestMap.put(.TestEnum.TWO, "two"); > ^ > testConstants.java:38: illegal start of expression > TestMap.put(.TestEnum.TWO, "two"); > ^ > testConstants.java:38: <identifier> expected > TestMap.put(.TestEnum.TWO, "two"); > ^ > testConstants.java:38: illegal start of expression > TestMap.put(.TestEnum.TWO, "two"); > ^ > testConstants.java:39: illegal start of expression > TestMap.put(.Testenum.THREE, "three"); > ^ > testConstants.java:39: ';' expected > TestMap.put(.Testenum.THREE, "three"); > ^ > testConstants.java:39: illegal start of expression > TestMap.put(.Testenum.THREE, "three"); > ^ > testConstants.java:39: <identifier> expected > TestMap.put(.Testenum.THREE, "three"); > ^ > testConstants.java:39: illegal start of expression > TestMap.put(.Testenum.THREE, "three"); > ^ > testConstants.java:40: illegal start of expression > TestMap.put(.TestEnum.FOUR, "four"); > ^ > testConstants.java:40: ';' expected > TestMap.put(.TestEnum.FOUR, "four"); > ^ > testConstants.java:40: illegal start of expression > TestMap.put(.TestEnum.FOUR, "four"); > ^ > testConstants.java:40: <identifier> expected > TestMap.put(.TestEnum.FOUR, "four"); > ^ > testConstants.java:40: illegal start of expression > TestMap.put(.TestEnum.FOUR, "four"); > ^ > {noformat} > The offending piece of code is {{testConstants.java}} which looks like this: > {code:title=testConstants.java|borderStyle=solid} > /** > * Autogenerated by Thrift Compiler (0.9.1) > * > * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING > * @generated > */ > import org.apache.thrift.scheme.IScheme; > import org.apache.thrift.scheme.SchemeFactory; > import org.apache.thrift.scheme.StandardScheme; > import org.apache.thrift.scheme.TupleScheme; > import org.apache.thrift.protocol.TTupleProtocol; > import org.apache.thrift.protocol.TProtocolException; > import org.apache.thrift.EncodingUtils; > import org.apache.thrift.TException; > import org.apache.thrift.async.AsyncMethodCallback; > import org.apache.thrift.server.AbstractNonblockingServer.*; > import java.util.List; > import java.util.ArrayList; > import java.util.Map; > import java.util.HashMap; > import java.util.EnumMap; > import java.util.Set; > import java.util.HashSet; > import java.util.EnumSet; > import java.util.Collections; > import java.util.BitSet; > import java.nio.ByteBuffer; > import java.util.Arrays; > import org.slf4j.Logger; > import org.slf4j.LoggerFactory; > public class testConstants { > public static final Map<TestEnum,String> TestMap = new > HashMap<TestEnum,String>(); > static { > TestMap.put(.TestEnum.ONE, "one"); > TestMap.put(.TestEnum.TWO, "two"); > TestMap.put(.Testenum.THREE, "three"); > TestMap.put(.TestEnum.FOUR, "four"); > } > } > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)