mule-intellij-plugins icon indicating copy to clipboard operation
mule-intellij-plugins copied to clipboard

Error in IntelliJ opening RAML: Boolean cannot be cast to String

Open rmorrise opened this issue 7 years ago • 5 comments

When I open a RAML file in the IDE with the RAML Plugin for IntelliJ installed, I see an error dialog from the IDE.

IntelliJ IDEA 2017.1.4 Build #IU-171.4694.23, built on June 6, 2017 ... JRE: 1.8.0_112-release-736-b21 amd64 JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o Windows 7 6.1

RAML plugin version: 0.10

The following Details are provided.

java.lang.Boolean cannot be cast to java.lang.String
java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
	at org.raml.yagi.framework.util.NodeSelector.selectStringValue(NodeSelector.java:99)
	at org.raml.v2.internal.impl.v10.type.ObjectResolvedType.overwriteFacets(ObjectResolvedType.java:132)
	at org.raml.v2.internal.impl.commons.nodes.TypeDeclarationNode.resolveTypeDefinition(TypeDeclarationNode.java:99)
	at org.raml.v2.internal.impl.commons.nodes.TypeDeclarationNode.getResolvedType(TypeDeclarationNode.java:85)
	at org.raml.v2.internal.impl.v10.type.ObjectResolvedType.validateCanOverwriteWith(ObjectResolvedType.java:208)
	at org.raml.v2.internal.impl.commons.nodes.TypeDeclarationNode.validateCanOverwrite(TypeDeclarationNode.java:143)
	at org.raml.v2.internal.impl.commons.phase.TypeValidationPhase.apply(TypeValidationPhase.java:39)
	at org.raml.v2.internal.impl.v10.Raml10Builder.runPhases(Raml10Builder.java:114)
	at org.raml.v2.internal.impl.v10.Raml10Builder.build(Raml10Builder.java:93)
	at org.raml.v2.internal.impl.RamlBuilder.build(RamlBuilder.java:116)
	at org.raml.v2.internal.impl.RamlBuilder.build(RamlBuilder.java:100)
	at org.raml.v2.internal.impl.RamlBuilder.build(RamlBuilder.java:95)
	at org.mule.tooling.lang.raml.annotator.RamlAnnotator.doAnnotate(RamlAnnotator.java:37)
	at org.mule.tooling.lang.raml.annotator.RamlAnnotator.doAnnotate(RamlAnnotator.java:18)
	at com.intellij.codeInsight.daemon.impl.ExternalToolPass.d(ExternalToolPass.java:224)
	at com.intellij.codeInsight.daemon.impl.ExternalToolPass.access$500(ExternalToolPass.java:48)
	at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.run(ExternalToolPass.java:172)
	at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:337)
	at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:327)
	at com.intellij.util.ui.update.MergingUpdateQueue.lambda$flush$1(MergingUpdateQueue.java:277)
	at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:291)
	at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:246)
	at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:223)
	at com.intellij.util.Alarm$Request.runSafely(Alarm.java:418)
	at com.intellij.util.Alarm$Request.access$700(Alarm.java:343)
	at com.intellij.util.Alarm$Request$1.run(Alarm.java:385)
	at com.intellij.util.Alarm$Request.run(Alarm.java:396)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at com.intellij.util.concurrency.SchedulingWrapper$MyScheduledFutureTask.run(SchedulingWrapper.java:237)
	at com.intellij.util.concurrency.BoundedTaskExecutor$2.run(BoundedTaskExecutor.java:212)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

rmorrise avatar Jun 15 '17 20:06 rmorrise

Can you please post your RAML file? Or is it happening with any RAML file you are trying to open?

javaduke avatar Jun 17 '17 14:06 javaduke

The attached RAML file is sufficient to reproduce the issue. The error popup only seems to appear the first time the editor is opened for that file, after starting up the IDE.

(File renamed with .TXT extension for purposes of passing GitHub upload filter) test.raml.txt

rmorrise avatar Jun 19 '17 14:06 rmorrise

OK, so the problem is that the parser doesn't like the fact that your discriminator value is boolean. I'm not sure yet if this is a bug in parser or is it that discriminator can only be string by design. I'm trying to get some answers from the RAML Parser team.

javaduke avatar Jun 21 '17 14:06 javaduke

I don't know if it's any help, but the API Workbench plugin for the Atom text editor seems able to handle this file correctly. Not sure if it's using a different parser?

https://atom.io/packages/api-workbench

rmorrise avatar Jun 21 '17 14:06 rmorrise

Looks like a Java parser bug after all: https://github.com/raml-org/raml-java-parser/issues/404 I'll keep this issue open till the new version of the parser released and then I'll update the plugin.

javaduke avatar Jul 18 '17 14:07 javaduke