Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 324609

Summary: replaceAll(...) operation throws and exception when called on an undefined String
Product: [Modeling] Acceleo Reporter: Tom Galluzzo <galluzzo>
Component: CoreAssignee: Project Inbox <acceleo-inbox>
Status: CLOSED DUPLICATE QA Contact:
Severity: normal    
Priority: P3 CC: stephane.begaudeau
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:

Description Tom Galluzzo CLA 2010-09-06 22:34:45 EDT
Build Identifier: 20100617-1415

I found this bug while trying to call the replaceAll operation after a getProperty() call. Ex:

getProperty('MyProp').replaceAll('.', '/')

The properties file wasn't found and I thus got the following exception:

java.lang.NullPointerException
at java.util.regex.Matcher.getTextLength(Matcher.java:1151)
at java.util.regex.Matcher.reset(Matcher.java:308)
at java.util.regex.Matcher.<init>(Matcher.java:228)
at java.util.regex.Pattern.matcher(Pattern.java:905)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityOperationVisitor.visitReplaceOperation(AcceleoTracea bilityOperationVisitor.java:226)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.internalVisitOperationCallExp(AcceleoTraceab ilityVisitor.java:1218)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitOperationCallExp(AcceleoTraceabilityVis itor.java:645)
at org.eclipse.ocl.ecore.impl.OperationCallExpImpl.accept(Opera tionCallExpImpl.java:390)
at org.eclipse.ocl.AbstractEvaluationVisitor.visitExpression(Ab stractEvaluationVisitor.java:247)
at org.eclipse.ocl.EvaluationVisitorDecorator.visitExpression(E valuationVisitorDecorator.java:156)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 517)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitExpression(AcceleoTraceabilityVisitor.j ava:524)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoBlock(AcceleoEvaluationVisitor.java: 250)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoIfBlock(AcceleoEvaluationVisitor.jav a:508)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoIfBlock(AcceleoEvaluationVi sitorDecorator.java:163)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitAcceleoIfBlock(AcceleoTraceabilityVisit or.java:374)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 471)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitExpression(AcceleoTraceabilityVisitor.j ava:524)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoTemplate(AcceleoEvaluationVisitor.ja va:781)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoTemplate(AcceleoEvaluationV isitorDecorator.java:218)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 465)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitExpression(AcceleoTraceabilityVisitor.j ava:524)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoTemplateInvocation(AcceleoEvaluation Visitor.java:832)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoTemplateInvocation(AcceleoE valuationVisitorDecorator.java:229)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitAcceleoTemplateInvocation(AcceleoTracea bilityVisitor.java:432)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 492)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoIfBlock(AcceleoEvaluationVisitor.jav a:473)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoIfBlock(AcceleoEvaluationVi sitorDecorator.java:163)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitAcceleoIfBlock(AcceleoTraceabilityVisit or.java:374)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 471)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitExpression(AcceleoTraceabilityVisitor.j ava:524)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoTemplate(AcceleoEvaluationVisitor.ja va:781)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoTemplate(AcceleoEvaluationV isitorDecorator.java:218)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 465)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitExpression(AcceleoTraceabilityVisitor.j ava:524)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoTemplateInvocation(AcceleoEvaluation Visitor.java:832)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoTemplateInvocation(AcceleoE valuationVisitorDecorator.java:229)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitAcceleoTemplateInvocation(AcceleoTracea bilityVisitor.java:432)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 492)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitExpression(AcceleoTraceabilityVisitor.j ava:524)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoBlock(AcceleoEvaluationVisitor.java: 250)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoIfBlock(AcceleoEvaluationVisitor.jav a:505)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoIfBlock(AcceleoEvaluationVi sitorDecorator.java:163)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitAcceleoIfBlock(AcceleoTraceabilityVisit or.java:374)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 471)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitExpression(AcceleoTraceabilityVisitor.j ava:524)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoTemplate(AcceleoEvaluationVisitor.ja va:781)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoTemplate(AcceleoEvaluationV isitorDecorator.java:218)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 465)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitExpression(AcceleoTraceabilityVisitor.j ava:524)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoTemplateInvocation(AcceleoEvaluation Visitor.java:832)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoTemplateInvocation(AcceleoE valuationVisitorDecorator.java:229)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitAcceleoTemplateInvocation(AcceleoTracea bilityVisitor.java:432)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 492)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoIfBlock(AcceleoEvaluationVisitor.jav a:473)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoIfBlock(AcceleoEvaluationVi sitorDecorator.java:163)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitAcceleoIfBlock(AcceleoTraceabilityVisit or.java:374)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 471)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitExpression(AcceleoTraceabilityVisitor.j ava:524)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoForBlock(AcceleoEvaluationVisitor.ja va:423)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoForBlock(AcceleoEvaluationV isitorDecorator.java:153)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitAcceleoForBlock(AcceleoTraceabilityVisi tor.java:356)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 478)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitExpression(AcceleoTraceabilityVisitor.j ava:524)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoTemplate(AcceleoEvaluationVisitor.ja va:781)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoTemplate(AcceleoEvaluationV isitorDecorator.java:218)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 465)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitExpression(AcceleoTraceabilityVisitor.j ava:524)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoTemplateInvocation(AcceleoEvaluation Visitor.java:832)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoTemplateInvocation(AcceleoE valuationVisitorDecorator.java:229)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitAcceleoTemplateInvocation(AcceleoTracea bilityVisitor.java:432)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 492)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitExpression(AcceleoTraceabilityVisitor.j ava:524)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoFileBlock(AcceleoEvaluationVisitor.j ava:316)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoFileBlock(AcceleoEvaluation VisitorDecorator.java:143)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitAcceleoFileBlock(AcceleoTraceabilityVis itor.java:335)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 485)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitExpression(AcceleoTraceabilityVisitor.j ava:524)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoTemplate(AcceleoEvaluationVisitor.ja va:781)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoTemplate(AcceleoEvaluationV isitorDecorator.java:218)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 465)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitExpression(AcceleoTraceabilityVisitor.j ava:524)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoTemplateInvocation(AcceleoEvaluation Visitor.java:832)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoTemplateInvocation(AcceleoE valuationVisitorDecorator.java:229)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitAcceleoTemplateInvocation(AcceleoTracea bilityVisitor.java:432)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 492)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitExpression(AcceleoTraceabilityVisitor.j ava:524)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitAcceleoTemplate(AcceleoEvaluationVisitor.ja va:781)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitorDecorator.visitAcceleoTemplate(AcceleoEvaluationV isitorDecorator.java:218)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.switchExpression(AcceleoEvaluationVisitor.java:1 465)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvalua tionVisitor.visitExpression(AcceleoEvaluationVisitor.java:91 2)
at org.eclipse.acceleo.internal.traceability.engine.AcceleoTrac eabilityVisitor.visitExpression(AcceleoTraceabilityVisitor.j ava:524)
at org.eclipse.ocl.internal.evaluation.QueryImpl.evaluate(Query Impl.java:152)
at org.eclipse.ocl.ecore.QueryImpl.evaluate(QueryImpl.java:62)
at org.eclipse.acceleo.engine.generation.AcceleoEngine.doEvalua te(AcceleoEngine.java:265)
at org.eclipse.acceleo.engine.generation.AcceleoEngine.evaluate (AcceleoEngine.java:130)
at org.eclipse.acceleo.engine.service.AcceleoService.doGenerate Template(AcceleoService.java:544)
at org.eclipse.acceleo.engine.service.AcceleoService.doGenerate (AcceleoService.java:389)
at org.eclipse.acceleo.engine.service.AbstractAcceleoGenerator. generate(AbstractAcceleoGenerator.java:120)
at org.eclipse.acceleo.engine.service.AbstractAcceleoGenerator. doGenerate(AbstractAcceleoGenerator.java:99)
at org.openjaus.mercury.ecore.gen.cpp.Main.doGenerate(Main.java :148)
at org.openjaus.mercury.ecore.gen.cpp.Main.main(Main.java:126)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.eclipse.acceleo.internal.ide.ui.launching.AcceleoLaunchO peration.run(AcceleoLaunchOperation.java:105)
at org.eclipse.acceleo.ide.ui.launching.strategy.AcceleoPluginL aunchingStrategy.launch(AcceleoPluginLaunchingStrategy.java: 220)
at org.eclipse.acceleo.ide.ui.launching.strategy.AcceleoPluginL aunchingStrategy.launch(AcceleoPluginLaunchingStrategy.java: 123)
at org.eclipse.acceleo.internal.ide.ui.launching.AcceleoLaunchD elegate.launch(AcceleoLaunchDelegate.java:53)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:853)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:702)
at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(D ebugUIPlugin.java:923)
at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlu gin.java:1126)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

Reproducible: Always

Steps to Reproduce:
1.Call replaceAll on any undefined string
2.
3.
Comment 1 Stephane Begaudeau CLA 2010-09-10 10:54:46 EDT
This problem seems to have been corrected by another patch. The patch has been contributed and will be available in Acceleo 3.0.1 RC4 and Acceleo 3.1.0 M2

*** This bug has been marked as a duplicate of bug 290532 ***