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

ASF GitHub Bot commented on FLINK-5070:
---------------------------------------

Github user StephanEwen commented on a diff in the pull request:

    https://github.com/apache/flink/pull/3318#discussion_r101282565
  
    --- Diff: 
flink-core/src/main/java/org/apache/flink/api/java/typeutils/TypeExtractor.java 
---
    @@ -1723,20 +1720,17 @@ private boolean isValidPojoField(Field f, Class<?> 
clazz, ArrayList<Type> typeHi
                                        // return type is void.
                                        m.getReturnType().equals(Void.TYPE)
                                ) {
    -                                   if(hasSetter) {
    -                                           throw new 
IllegalStateException("Detected more than one setter");
    -                                   }
                                        hasSetter = true;
                                }
                        }
                        if(hasGetter && hasSetter) {
                                return true;
                        } else {
                                if(!hasGetter) {
    -                                   LOG.debug(clazz+" does not contain a 
getter for field "+f.getName() );
    +                                   LOG.info(clazz+" does not contain a 
getter for field "+f.getName() );
    --- End diff --
    
    Does it make sense to log this on `info`? That can be a lot of log output 
for programs with many types...


> Unable to use Scala's BeanProperty with classes
> -----------------------------------------------
>
>                 Key: FLINK-5070
>                 URL: https://issues.apache.org/jira/browse/FLINK-5070
>             Project: Flink
>          Issue Type: Bug
>          Components: Core, Scala API, Type Serialization System
>    Affects Versions: 1.1.3
>            Reporter: Jakub Nowacki
>            Assignee: Timo Walther
>
> When using Scala class with with property (both var and val) annotated as 
> BeanProperty, throws an exception {{java.lang.IllegalStateException: Detected 
> more than one getter}}.
> The simple code which follows throws that exception:
> {code:java}
> class SomeClass(@BeanProperty var prop: Int)
> object SampleBeanProperty {
>     def main(args: Array[String]): Unit = {
>         val env = StreamExecutionEnvironment.createLocalEnvironment()
>         // Create a DataSet from a list of elements
>         env.fromElements(1,2)
>             .map(new SomeClass(_))
>             .print
>         env.execute()
>     }
> }
> {code}
> Full exception:
> {code}
> Exception in thread "main" java.lang.IllegalStateException: Detected more 
> than one setter
>       at 
> org.apache.flink.api.java.typeutils.TypeExtractor.isValidPojoField(TypeExtractor.java:1646)
>       at 
> org.apache.flink.api.java.typeutils.TypeExtractor.analyzePojo(TypeExtractor.java:1692)
>       at 
> org.apache.flink.api.java.typeutils.TypeExtractor.privateGetForClass(TypeExtractor.java:1580)
>       at 
> org.apache.flink.api.java.typeutils.TypeExtractor.privateGetForClass(TypeExtractor.java:1479)
>       at 
> org.apache.flink.api.java.typeutils.TypeExtractor.createTypeInfoWithTypeHierarchy(TypeExtractor.java:737)
>       at 
> org.apache.flink.api.java.typeutils.TypeExtractor.privateCreateTypeInfo(TypeExtractor.java:543)
>       at 
> org.apache.flink.api.java.typeutils.TypeExtractor.createTypeInfo(TypeExtractor.java:497)
>       at 
> org.apache.flink.api.java.typeutils.TypeExtractor.createTypeInfo(TypeExtractor.java:493)
>       at SampleBeanProperty$.main(SampleBeanProperty.scala:18)
>       at SampleBeanProperty.main(SampleBeanProperty.scala)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:498)
>       at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
> {code}
> If the class is changed into case class, code with BeanProperty works fine.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to