[ https://issues.apache.org/jira/browse/FLEX-33252?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13497254#comment-13497254 ]
Michael Schmalle commented on FLEX-33252: ----------------------------------------- I have had time to look at this and was just trying to figure out "why" putting the initialization in the constructor worked since it was initialized before the super call. It seems that there is recursion going on and multiple flex fxg transcoder instances. As it loops, it gets to an instance where the public transcode() method is not called and you get the resulting NPE. I'll change this to the constructor. > Falcon Compiler Error - NPE when TextGraphic element is used > ------------------------------------------------------------ > > Key: FLEX-33252 > URL: https://issues.apache.org/jira/browse/FLEX-33252 > Project: Apache Flex > Issue Type: Bug > Components: MXML Compiler > Reporter: Cyrill Zadra > Labels: Falcon > Fix For: Apache Flex Next > > Attachments: DefinitionTextGraphic.fxg, FLEX-33252.patch, > FxgNPETest.mxml > > > Compiling the attached example throws a NullPointerException. > java.lang.NullPointerException > at > org.apache.flex.compiler.fxg.flex.FlexFXG2SWFTranscoder.getDefinition(FlexFXG2SWFTranscoder.java:198) > at > org.apache.flex.compiler.fxg.flex.FlexFXG2SWFTranscoder.addDependency(FlexFXG2SWFTranscoder.java:184) > at > org.apache.flex.compiler.fxg.flex.FlexFXG2SWFTranscoder.flexText(FlexFXG2SWFTranscoder.java:562) > at > org.apache.flex.compiler.fxg.flex.FlexFXG2SWFTranscoder.text(FlexFXG2SWFTranscoder.java:527) > at > org.apache.flex.compiler.fxg.swf.FXG2SWFTranscoder.graphicContentNode(FXG2SWFTranscoder.java:424) > at > org.apache.flex.compiler.fxg.flex.FlexFXG2SWFTranscoder.graphicContentNode(FlexFXG2SWFTranscoder.java:342) > at > org.apache.flex.compiler.fxg.swf.FXG2SWFTranscoder.graphicContentNodes(FXG2SWFTranscoder.java:355) > at > org.apache.flex.compiler.fxg.swf.FXG2SWFTranscoder.definition(FXG2SWFTranscoder.java:819) > at > org.apache.flex.compiler.fxg.swf.FXG2SWFTranscoder.PlaceObject3TagInstance(FXG2SWFTranscoder.java:790) > at > org.apache.flex.compiler.fxg.swf.FXG2SWFTranscoder.graphicContentNode(FXG2SWFTranscoder.java:420) > at > org.apache.flex.compiler.fxg.flex.FlexFXG2SWFTranscoder.graphicContentNode(FlexFXG2SWFTranscoder.java:342) > at > org.apache.flex.compiler.fxg.swf.FXG2SWFTranscoder.graphicContentNodes(FXG2SWFTranscoder.java:355) > at > org.apache.flex.compiler.fxg.swf.FXG2SWFTranscoder.transcode(FXG2SWFTranscoder.java:208) > at > org.apache.flex.compiler.fxg.flex.FlexFXG2SWFTranscoder.transcode(FlexFXG2SWFTranscoder.java:134) > at > org.apache.flex.compiler.internal.units.FXGCompilationUnit.handleOutgoingDependenciesRequest(FXGCompilationUnit.java:235) > at > org.apache.flex.compiler.internal.units.CompilationUnitBase.processOutgoingDependenciesRequest(CompilationUnitBase.java:882) > at > org.apache.flex.compiler.internal.units.CompilationUnitBase.access$5(CompilationUnitBase.java:880) > at > org.apache.flex.compiler.internal.units.CompilationUnitBase$5$1.call(CompilationUnitBase.java:378) > at > org.apache.flex.compiler.internal.units.CompilationUnitBase$5$1.call(CompilationUnitBase.java:1) > at > org.apache.flex.compiler.internal.units.requests.RequestMaker$1.call(RequestMaker.java:228) > at > org.apache.flex.compiler.internal.units.requests.RequestMaker$1.call(RequestMaker.java:1) > at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) > at java.util.concurrent.FutureTask.run(Unknown Source) > at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown > Source) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) > at java.lang.Thread.run(Unknown Source) > Internal error: java.lang.NullPointerException > at > org.apache.flex.compiler.internal.units.FXGCompilationUnit$1.addToFrame(FXGCompilationUnit.java:355) > at > org.apache.flex.compiler.internal.targets.SWFTarget.addCompilationUnitsAndDependenciesToFrame(SWFTarget.java:398) > at > org.apache.flex.compiler.internal.targets.SWFTarget$FramesInformation.createFrame(SWFTarget.java:831) > at > org.apache.flex.compiler.internal.targets.FlexAppSWFTarget$FlexApplicationFramesInformation.createFrames(FlexAppSWFTarget.java:754) > at > org.apache.flex.compiler.internal.targets.SWFTarget.build(SWFTarget.java:243) > at org.apache.flex.compiler.clients.MXMLC.buildSWFModel(MXMLC.java:658) > at org.apache.flex.compiler.clients.MXMLC.buildArtifact(MXMLC.java:644) > at org.apache.flex.compiler.clients.MXMLC.compile(MXMLC.java:525) > at org.apache.flex.compiler.clients.MXMLC.mainNoExit(MXMLC.java:214) > at org.apache.flex.compiler.clients.MXMLC.mainNoExit(MXMLC.java:182) > at f.MXMLTests.compileMXML(MXMLTests.java:47) > at f.MXMLTests.testFxgNPETest(MXMLTests.java:95) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) > at java.lang.reflect.Method.invoke(Unknown Source) > at > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) > at > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) > at > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) > at > org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) > at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) > at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) > at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) > at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) > at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) > at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) > at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) > at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) > at org.junit.runners.ParentRunner.run(ParentRunner.java:300) > at > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) > at > org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira