Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 365468 - IR has a different default value for an annotation in a Clean build vs an Incremental build
Summary: IR has a different default value for an annotation in a Clean build vs an Inc...
Status: RESOLVED FIXED
Alias: None
Product: z_Archived
Classification: Eclipse Foundation
Component: EDT (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-12-02 13:53 EST by Brian Svihovec CLA
Modified: 2017-02-23 14:15 EST (History)
2 users (show)

See Also:


Attachments
Add missing initial value (1.84 KB, patch)
2012-04-25 14:00 EDT, Justin Spadea CLA
lasher: iplog+
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Brian Svihovec CLA 2011-12-02 13:53:49 EST
Create a Handler with the following content:

handler H4 type RUIhandler{initialUI =[var1_ui
            ], onConstructionFunction = start, cssFile = "css/P1.css", title = "H4"}

    var1 Rec1;
	
	var1_ui GridLayout { rows = 1, columns = 2, cellPadding = 4, children = [ var1_item1_nameLabel,var1_item1_field ] };

	var1_item1_nameLabel TextLabel { text="item1" , layoutData = new GridLayoutData { row = 1, column = 1} };
	var1_item1_field DojoTextField { readOnly = true , layoutData = new GridLayoutData { row = 1, column = 2} };
	var1_item1_controller Controller { @MVC {model = var1.item1, view = var1_item1_field} };
	
    function start()
    end
end

Record Rec1
	item1 String {@InputRequired};
end

If you run an incremental build, it will compile cleanly.  If you run a clean build, you will get the following NPE:

org.eclipse.edt.mof.codegen.api.TemplateException: java.lang.NullPointerException
	at org.eclipse.edt.mof.codegen.api.TemplateContext.doInvoke(TemplateContext.java:420)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.invoke(TemplateContext.java:273)
	at org.eclipse.edt.gen.javascript.templates.FieldTemplate.preGen(FieldTemplate.java:48)
	at sun.reflect.GeneratedMethodAccessor709.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.doInvoke(TemplateContext.java:360)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.invoke(TemplateContext.java:261)
	at org.eclipse.edt.gen.javascript.templates.EGLClassTemplate.preGenField(EGLClassTemplate.java:92)
	at sun.reflect.GeneratedMethodAccessor708.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.doInvoke(TemplateContext.java:362)
	at org.eclipse.edt.gen.EglContext.invoke(EglContext.java:397)
	at org.eclipse.edt.gen.javascript.templates.EGLClassTemplate.preGenFields(EGLClassTemplate.java:87)
	at sun.reflect.GeneratedMethodAccessor831.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.doInvoke(TemplateContext.java:360)
	at org.eclipse.edt.gen.EglContext.invoke(EglContext.java:397)
	at org.eclipse.edt.gen.javascript.templates.EGLClassTemplate.preGenClassBody(EGLClassTemplate.java:41)
	at sun.reflect.GeneratedMethodAccessor829.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.doInvoke(TemplateContext.java:360)
	at org.eclipse.edt.gen.EglContext.invoke(EglContext.java:397)
	at org.eclipse.edt.gen.javascript.templates.PartTemplate.preGenPart(PartTemplate.java:37)
	at sun.reflect.GeneratedMethodAccessor828.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.edt.mof.codegen.api.TemplateContext.doInvoke(TemplateContext.java:360)
	at org.eclipse.edt.gen.EglContext.invoke(EglContext.java:397)
	at org.eclipse.edt.gen.javascript.JavaScriptGenerator.generate(JavaScriptGenerator.java:77)
	at org.eclipse.edt.gen.AbstractGeneratorCommand.generate(AbstractGeneratorCommand.java:106)
	at org.eclipse.edt.gen.javascriptdev.ide.JavaScriptDevGenerator.generate(JavaScriptDevGenerator.java:37)
	at org.eclipse.edt.ide.core.internal.generation.GenerationQueue.invokeGenerators(GenerationQueue.java:264)
	at org.eclipse.edt.ide.core.internal.generation.GenerationQueue.generate(GenerationQueue.java:192)
	at org.eclipse.edt.ide.core.internal.generation.GenerationQueue.generate(GenerationQueue.java:145)
	at org.eclipse.edt.ide.core.internal.generation.AbstractGenerator.build(AbstractGenerator.java:49)
	at org.eclipse.edt.ide.core.internal.generation.GenerationBuilder.cleanBuild(GenerationBuilder.java:100)
	at org.eclipse.edt.ide.core.internal.generation.GenerationBuilder.build(GenerationBuilder.java:50)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343)
	at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144)
	at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.NullPointerException
	at org.eclipse.edt.gen.javascript.annotation.templates.MVCTemplate.setValidators(MVCTemplate.java:608)
	at org.eclipse.edt.gen.javascript.annotation.templates.MVCTemplate.getImplicitReferencedParts(MVCTemplate.java:1123)
	at org.eclipse.edt.gen.javascript.annotation.templates.MVCTemplate.preGen(MVCTemplate.java:109)

After looking at the code, it looks like the MVCTemplate is throwing an NPE because the IR has no default value for the annotation during a clean build, but it has a default value of 'YES' during an incremental build.
Comment 1 Justin Spadea CLA 2012-04-25 14:00:05 EDT
Created attachment 214553 [details]
Add missing initial value

I've attached a patch that fixes this, but Paul should review it first. The problem has to do with converting an IR to a binding, the IR's initial value was not being copied.
Comment 2 Paul Harmon CLA 2012-05-01 08:17:56 EDT
This has been fixed with a change to Mof2BindingMember. The default value for the annotion fields were not being set in the FlexibleRecordBinding
Comment 3 Paul Harmon CLA 2012-05-01 08:18:32 EDT
fixed