Class Cast Exception while running requestfactory-apt

416 views
Skip to first unread message

Romain BIARD

unread,
Sep 27, 2011, 4:45:45 AM9/27/11
to Google Web Toolkit
Hi all,

I'm updating my project to GWT 2.4.0 but i'm facing an issue not
really documented while running requestfactory-apt.

[INFO] javac option: -proc:only
[INFO] javac option: -d
[INFO] javac option: /Users/romainbiard/Soft/workspace-foo/bar/target/
foobar-1.0.8-SNAPSHOT/WEB-INF/classes
[INFO] javac option: -s
[INFO] javac option: /Users/romainbiard/Soft/workspace-foo/bar/target/
generated-sources/apt
[INFO] diagnostic /Users/romainbiard/Soft/workspace-foo/bar/src/main/
java/com/foo/cis/foobar/client/requestfactory/Persistable.java:9:
java.lang.ClassCastException: com.sun.tools.javac.code.Symbol
$TypeSymbol cannot be cast to javax.lang.model.element.TypeElement
at
com.google.web.bindery.requestfactory.apt.RequestContextScanner.visitExecutable(RequestContextScanner.java:
62)
at
com.google.web.bindery.requestfactory.apt.RequestContextScanner.visitExecutable(RequestContextScanner.java:
35)
at com.sun.tools.javac.code.Symbol$MethodSymbol.accept(Symbol.java:
1227)
at javax.lang.model.util.ElementScanner6.scan(ElementScanner6.java:
122)
at
com.google.web.bindery.requestfactory.apt.ScannerBase.scan(ScannerBase.java:
63)
at
com.google.web.bindery.requestfactory.apt.ScannerBase.scanAllInheritedMethods(ScannerBase.java:
126)
at
com.google.web.bindery.requestfactory.apt.RequestContextScanner.visitType(RequestContextScanner.java:
104)
at
com.google.web.bindery.requestfactory.apt.RequestContextScanner.visitType(RequestContextScanner.java:
35)
at com.sun.tools.javac.code.Symbol$ClassSymbol.accept(Symbol.java:
832)
at javax.lang.model.util.ElementScanner6.scan(ElementScanner6.java:
122)
at
com.google.web.bindery.requestfactory.apt.ScannerBase.scan(ScannerBase.java:
63)
at
com.google.web.bindery.requestfactory.apt.State.executeJobs(State.java:
248)
at
com.google.web.bindery.requestfactory.apt.RfValidator.process(RfValidator.java:
83)
at
com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:
625)
at
com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:
554)
at
com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:
699)
at
com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:
981)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:
727)
at com.sun.tools.javac.main.Main.compile(Main.java:353)
at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:115)
at
org.bsc.maven.plugin.processor.AbstractAnnotationProcessorMojo.executeWithExceptionsHandled(AbstractAnnotationProcessorMojo.java:
350)
at
org.bsc.maven.plugin.processor.AbstractAnnotationProcessorMojo.execute(AbstractAnnotationProcessorMojo.java:
197)
at
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:
101)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:
209)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:
153)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:
145)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:
84)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:
59)
at
org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:
183)
at
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:
161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:
290)
at
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:
230)
at
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:
409)
at
org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:
352)

and here's the interface previously mentionned :

package com.foo.cis.foobar.client.requestfactory;

import com.google.web.bindery.requestfactory.shared.EntityProxy;
import com.google.web.bindery.requestfactory.shared.InstanceRequest;
import com.google.web.bindery.requestfactory.shared.RequestContext;

public interface Persistable<P extends EntityProxy> extends
RequestContext {

InstanceRequest<P, Void> persist();

}

In fact, I,m using this interface multiple times for UI reuse
(RequestContext abstraction).
I'm a bit lost :(

Thanks for your help

Thomas Broyer

unread,
Sep 27, 2011, 5:32:21 AM9/27/11
to google-we...@googlegroups.com
A TypeSymbol instance represents a type variable. The RequestFactory annotation processor looks at the type parameters of the Request or InstanceRequest to find the return type of the domain method, and it assumes it's a "class".

Here, the problem is your "P" in InstanceRequest<P, Void>.

Romain BIARD

unread,
Sep 27, 2011, 6:07:49 AM9/27/11
to google-we...@googlegroups.com
Thank you Thomas, I found the issue just after i started this thread.
Reply all
Reply to author
Forward
0 new messages