This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 195983 - java.lang.ClassCastException in ServiceProviderProcessor
Summary: java.lang.ClassCastException in ServiceProviderProcessor
Status: RESOLVED FIXED
Alias: None
Product: platform
Classification: Unclassified
Component: Lookup (show other bugs)
Version: 7.0
Hardware: PC Solaris
: P3 normal (vote)
Assignee: Jesse Glick
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-02-25 08:11 UTC by Vladimir Voskresensky
Modified: 2011-11-23 15:59 UTC (History)
3 users (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vladimir Voskresensky 2011-02-25 08:11:33 UTC
if you are interested, there is an exception during initial scan (fresh userdir)
  Product Version         = NetBeans IDE Dev (Build 110225-d7c33a5f997b) (#d7c33a5f997b)
  Operating System        = SunOS version 5.10 running on x86
  Java; VM; Vendor        = 1.6.0_14; Java HotSpot(TM) Client VM 14.0-b16; Sun Microsystems Inc.
  Runtime                 = Java(TM) SE Runtime Environment 1.6.0_14-b08

java.lang.ClassCastException: com.sun.tools.javac.code.Symbol$MethodSymbol cannot be cast to javax.lang.model.element.TypeElement
        at org.netbeans.modules.openide.util.ServiceProviderProcessor.handleProcess(ServiceProviderProcessor.java:83)
        at org.openide.util.lookup.implspi.AbstractServiceProviderProcessor.process(AbstractServiceProviderProcessor.java:112)
[catch] at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:819)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:735)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:101)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1040)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1104)
        at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1156)
        at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1053)
        at com.sun.tools.javac.api.JavacTaskImpl.enter(JavacTaskImpl.java:383)
        at org.netbeans.modules.java.source.indexing.SuperOnePassCompileWorker.compile(SuperOnePassCompileWorker.java:181)
        at org.netbeans.modules.java.source.indexing.JavaCustomIndexer$1.run(JavaCustomIndexer.java:199)
        at org.netbeans.modules.java.source.indexing.JavaCustomIndexer$1.run(JavaCustomIndexer.java:161)
        at org.netbeans.modules.java.source.usages.ClassIndexManager.prepareWriteLock(ClassIndexManager.java:120)
        at org.netbeans.modules.java.source.indexing.JavaCustomIndexer.index(JavaCustomIndexer.java:161)
        at org.netbeans.modules.parsing.spi.indexing.Indexable$MyAccessor$2.run(Indexable.java:153)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.runIndexer(RepositoryUpdater.java:256)
        at org.netbeans.modules.parsing.spi.indexing.Indexable$MyAccessor.index(Indexable.java:151)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.doIndex(RepositoryUpdater.java:1824)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.access$1400(RepositoryUpdater.java:1563)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work$2.run(RepositoryUpdater.java:1744)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work$2.run(RepositoryUpdater.java:1742)
        at org.netbeans.modules.parsing.impl.indexing.errors.TaskCache.refreshTransaction(TaskCache.java:460)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.index(RepositoryUpdater.java:1742)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$AbstractRootsWork.scanSource(RepositoryUpdater.java:3435)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$AbstractRootsWork.scanSources(RepositoryUpdater.java:3336)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$RootsWork.getDone(RepositoryUpdater.java:3079)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.doTheWork(RepositoryUpdater.java:2159)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task._run(RepositoryUpdater.java:3830)
        at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task.run(RepositoryUpdater.java:3769)
        at org.netbeans.modules.parsing.impl.TaskProcessor$CompilationJob.run(TaskProcessor.java:610)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
Comment 1 Jaroslav Tulach 2011-02-25 19:51:56 UTC
Jesse, something wrong in your code. Reassign back, if I shall investigate the problem.
Comment 2 Jesse Glick 2011-02-28 16:15:56 UTC
@interface ServiceProvider declares @Target(ElementType.TYPE) so the processor naturally assumes that elements of roundEnv.getElementsAnnotatedWith(ServiceProvider.class) will be assignable to TypeElement. If someone tries to put @ServiceProvider on a method declaration, that should have been caught as a syntactic error before invoking any processors.
Comment 3 Jesse Glick 2011-03-16 15:53:22 UTC
See https://svn.java.net/svn/sezpoz~svn/trunk/sezpoz/src/main/java/net/java/sezpoz/impl/Indexer6.java revision 144 for another similar example. It seems that the Java editor sometimes passes invalid inputs to a processor.
Comment 4 Jesse Glick 2011-04-22 12:48:45 UTC
Joe Darcy says that processors will sometimes be called with input which is clearly invalid at a lower level (incl. according to @Target), and must be written defensively. I think the processor need not do anything except skip such input quietly - some other part of javac should have issued an error previously, or perhaps will issue an error later.
Comment 5 Jesse Glick 2011-04-22 13:26:37 UTC
core-main #f44447798710
Comment 6 Quality Engineering 2011-04-23 04:38:07 UTC
Integrated into 'main-golden', will be available in build *201104230000* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main/rev/f44447798710
User: Jesse Glick <jglick@netbeans.org>
Log: #195983: java.lang.ClassCastException in ServiceProviderProcessor
Comment 7 Quality Engineering 2011-10-24 14:08:59 UTC
Integrated into 'main-golden'
Changeset: http://hg.netbeans.org/main-golden/rev/17bf5e8346a9
User: Jesse Glick <jglick@netbeans.org>
Log: Yet another workaround for #195983. When will a general fix in java.source be found?
Comment 8 Quality Engineering 2011-11-12 16:29:02 UTC
Integrated into 'main-golden'
Changeset: http://hg.netbeans.org/main-golden/rev/a994011ae133
User: Jesse Glick <jglick@netbeans.org>
Log: More #195983 workarounds.
java.lang.NullPointerException
	at org.netbeans.modules.openide.awt.ActionProcessor.handleProcess(ActionProcessor.java:190)
	at org.openide.filesystems.annotations.LayerGeneratingProcessor.process(LayerGeneratingProcessor.java:124)
java.lang.NullPointerException
	at org.netbeans.modules.settings.convertors.ConvertorProcessor.handleProcess(ConvertorProcessor.java:153)
	at org.openide.filesystems.annotations.LayerGeneratingProcessor.process(LayerGeneratingProcessor.java:124)
Comment 9 Quality Engineering 2011-11-23 15:59:31 UTC
Integrated into 'main-golden'
Changeset: http://hg.netbeans.org/main-golden/rev/834c56ca0aa2
User: Jesse Glick <jglick@netbeans.org>
Log: More #195983 workarounds.