Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » TMF (Xtext) » Xbase 2.4.2 - Using new JvmUnknownTypeReference
Xbase 2.4.2 - Using new JvmUnknownTypeReference [message #1066144] Mon, 01 July 2013 09:29 Go to next message
Boris Brodski is currently offline Boris BrodskiFriend
Messages: 112
Registered: July 2009
Senior Member
Hello,


migration to Xtext 2.4.2 I found the new JvmUnknownTypeReference concept very interesting. As I understood,
I don't need those nasty null-checks any more after creating new references with newTypeRef(). So I can write

superTypes += myEntity.findTypeRef(myEntity.fullQualifiedName + "Factory")

if 'myEntity.fullQualifiedName + "Factory"' class exists, it get used
if 'myEntity.fullQualifiedName + "Factory"' class doesn't exist, the full qualified name get generated producing a simple java error. Quickfix can be used then to create missing class.

I expected to get the same nice behavior within body=[]. I tried

1. body = [ it.append(myEntity.findTypeRef(myEntity.fullQualifiedName + "Factory").type) ]
2. body = [ methodDefinition.newTypeRef("java.lang.String").serializeSafely(it) ] (extension ErrorSafeExtensions)

1: NullPointerException, if class doesn't exist (since JvmUnknownTypeReference.type returns null)
2: NullPointerException, if class exists! (see below)

How should I append/serialize a type within body=[] if unsure, that the class is present?
(Import manager should get involved, so just "append string" is not the solution I'm looking for)

Thank you!


Regards,
Boris


Stacktrace:

java.lang.NullPointerException
at org.eclipse.xtext.xbase.compiler.TypeReferenceSerializer.serialize(TypeReferenceSerializer.java:90)
at org.eclipse.xtext.xbase.compiler.TypeReferenceSerializer.serialize(TypeReferenceSerializer.java:84)
at org.eclipse.xtext.xbase.compiler.TypeReferenceSerializer.serialize(TypeReferenceSerializer.java:81)
at org.eclipse.xtext.xbase.compiler.ErrorSafeExtensions.serializeSafely(ErrorSafeExtensions.java:262)
at org.eclipse.xtext.xbase.compiler.ErrorSafeExtensions.serializeSafely(ErrorSafeExtensions.java:201)
at de.finkonsens.pingo.bnoapi.xtext.jvmmodel.BnoApiJvmModelInferrer$4$3$1.apply(BnoApiJvmModelInferrer.java:228)
at de.finkonsens.pingo.bnoapi.xtext.jvmmodel.BnoApiJvmModelInferrer$4$3$1.apply(BnoApiJvmModelInferrer.java:1)
at org.eclipse.xtext.xbase.compiler.JvmModelGenerator.generateExecutableBody(JvmModelGenerator.java:1101)
at org.eclipse.xtext.xbase.compiler.JvmModelGenerator._generateMember(JvmModelGenerator.java:873)
at org.eclipse.xtext.xbase.compiler.JvmModelGenerator.generateMember(JvmModelGenerator.java:1880)
at org.eclipse.xtext.xbase.compiler.JvmModelGenerator$2.apply(JvmModelGenerator.java:288)
at org.eclipse.xtext.xbase.compiler.JvmModelGenerator$2.apply(JvmModelGenerator.java:1)
at org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_doubleArrow(ObjectExtensions.java:139)
at org.eclipse.xtext.xbase.compiler.LoopExtensions.forEach(LoopExtensions.java:34)
at org.eclipse.xtext.xbase.compiler.JvmModelGenerator._generateBody(JvmModelGenerator.java:292)
at org.eclipse.xtext.xbase.compiler.JvmModelGenerator.generateBody(JvmModelGenerator.java:1852)
at org.eclipse.xtext.xbase.compiler.JvmModelGenerator.generateType(JvmModelGenerator.java:211)
at org.eclipse.xtext.xbase.compiler.JvmModelGenerator._internalDoGenerate(JvmModelGenerator.java:202)
at org.eclipse.xtext.xbase.compiler.JvmModelGenerator.internalDoGenerate(JvmModelGenerator.java:1835)
at de.finkonsens.pingo.bnoapi.xtext.outputconfiguration.OutputConfigurationAwaredGenerator.doGenerate(OutputConfigurationAwaredGenerator.java:24)
at org.eclipse.xtext.builder.BuilderParticipant.handleChangedContents(BuilderParticipant.java:299)
at org.eclipse.xtext.builder.BuilderParticipant.build(BuilderParticipant.java:229)
at org.eclipse.xtext.builder.impl.RegistryBuilderParticipant.build(RegistryBuilderParticipant.java:60)
at org.eclipse.xtext.builder.impl.XtextBuilder.doBuild(XtextBuilder.java:186)
at org.eclipse.xtext.builder.impl.XtextBuilder.fullBuild(XtextBuilder.java:210)
at org.eclipse.xtext.builder.impl.XtextBuilder.build(XtextBuilder.java:89)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:726)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Re: Xbase 2.4.2 - Using new JvmUnknownTypeReference [message #1080240 is a reply to message #1066144] Mon, 05 August 2013 17:20 Go to previous message
Boris Brodski is currently offline Boris BrodskiFriend
Messages: 112
Registered: July 2009
Senior Member
See also my new screen cast about JvmUnknownTypeReference: http://xtextcasts.org/episodes/19-xbase-s-new-jvmunknowntypereference
Previous Topic:Undefined highlighting + contentassist behavior
Next Topic:Xtext Dsl Persistency in database
Goto Forum:
  


Current Time: Tue Apr 23 11:43:35 GMT 2024

Powered by FUDForum. Page generated in 0.02661 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top