[antlr-maven-plugin] fix NPE during grammar processing, thanks to Michal Srb

Tom Callaway spot at fedoraproject.org
Fri Oct 18 22:59:44 UTC 2013


commit 70a56b57c824be052fdb8dbb4a152a76353b6f12
Author: Tom Callaway <spot at fedoraproject.org>
Date:   Fri Oct 18 23:59:44 2013 +0100

    fix NPE during grammar processing, thanks to Michal Srb

 0001-MANTLR-34-Fix-NPE-when-building-Jenkins.patch |   72 ++++++++++++++++++++
 antlr-maven-plugin.spec                            |    9 ++-
 2 files changed, 80 insertions(+), 1 deletions(-)
---
diff --git a/0001-MANTLR-34-Fix-NPE-when-building-Jenkins.patch b/0001-MANTLR-34-Fix-NPE-when-building-Jenkins.patch
new file mode 100644
index 0000000..7ac7141
--- /dev/null
+++ b/0001-MANTLR-34-Fix-NPE-when-building-Jenkins.patch
@@ -0,0 +1,72 @@
+From 1305d8d7aa5f9724e28d54a112a524f9a2fb0af7 Mon Sep 17 00:00:00 2001
+From: Michal Srb <msrb at redhat.com>
+Date: Wed, 16 Oct 2013 14:29:21 +0200
+Subject: [PATCH] [MANTLR-34] Fix NPE when building Jenkins
+
+---
+ .../mojo/antlr/metadata/MetadataExtracter.java     | 40 ++++++++++++----------
+ 1 file changed, 21 insertions(+), 19 deletions(-)
+
+diff --git a/src/main/java/org/codehaus/mojo/antlr/metadata/MetadataExtracter.java b/src/main/java/org/codehaus/mojo/antlr/metadata/MetadataExtracter.java
+index c54f301..8637dea 100644
+--- a/src/main/java/org/codehaus/mojo/antlr/metadata/MetadataExtracter.java
++++ b/src/main/java/org/codehaus/mojo/antlr/metadata/MetadataExtracter.java
+@@ -239,34 +239,36 @@ public class MetadataExtracter
+             Method getRHSMethod = helper.getAntlrOptionClass().getMethod( "getRHS", Helper.NO_ARG_SIGNATURE );
+             getRHSMethod.setAccessible( true );
+ 
+-            Object importVocabOption = getElementMethod.invoke( options, new Object[] { "importVocab" } );
+-            if ( importVocabOption != null )
+-            {
+-                String importVocab = (String) getRHSMethod.invoke( importVocabOption, Helper.NO_ARGS );
+-                if ( importVocab != null )
++            if ( options != null ) {
++                Object importVocabOption = getElementMethod.invoke( options, new Object[] { "importVocab" } );
++                if ( importVocabOption != null )
+                 {
+-                    importVocab = importVocab.trim();
+-                    if ( importVocab.endsWith( ";" ) )
++                    String importVocab = (String) getRHSMethod.invoke( importVocabOption, Helper.NO_ARGS );
++                    if ( importVocab != null )
+                     {
+-                        importVocab = importVocab.substring( 0, importVocab.length() - 1 );
++                        importVocab = importVocab.trim();
++                        if ( importVocab.endsWith( ";" ) )
++                        {
++                            importVocab = importVocab.substring( 0, importVocab.length() - 1 );
++                        }
++                        grammar.setImportVocab( importVocab );
+                     }
+-                    grammar.setImportVocab( importVocab );
+                 }
+-            }
+ 
+-            Object exportVocabOption = getElementMethod.invoke( options, new Object[] { "exportVocab" } );
+-            if ( exportVocabOption != null )
+-            {
+-                String exportVocab = (String) getRHSMethod.invoke( exportVocabOption, Helper.NO_ARGS );
+-                if ( exportVocab != null )
++                Object exportVocabOption = getElementMethod.invoke( options, new Object[] { "exportVocab" } );
++                if ( exportVocabOption != null )
+                 {
+-                    exportVocab = exportVocab.trim();
+-                    if ( exportVocab.endsWith( ";" ) )
++                    String exportVocab = (String) getRHSMethod.invoke( exportVocabOption, Helper.NO_ARGS );
++                    if ( exportVocab != null )
+                     {
+-                        exportVocab = exportVocab.substring( 0, exportVocab.length() - 1 );
++                        exportVocab = exportVocab.trim();
++                        if ( exportVocab.endsWith( ";" ) )
++                        {
++                            exportVocab = exportVocab.substring( 0, exportVocab.length() - 1 );
++                        }
+                     }
++                    grammar.setExportVocab( exportVocab );
+                 }
+-                grammar.setExportVocab( exportVocab );
+             }
+         }
+         catch ( Throwable t )
+-- 
+1.8.3.1
+
diff --git a/antlr-maven-plugin.spec b/antlr-maven-plugin.spec
index da5f6a7..83a0d92 100644
--- a/antlr-maven-plugin.spec
+++ b/antlr-maven-plugin.spec
@@ -1,6 +1,6 @@
 Name:			antlr-maven-plugin
 Version:		2.2
-Release:		11%{?dist}
+Release:		12%{?dist}
 Summary:		Maven plugin that generates files based on grammar file(s)
 License:		ASL 2.0
 URL:			http://mojo.codehaus.org/antlr-maven-plugin/
@@ -12,6 +12,8 @@ Source0:		http://repo1.maven.org/maven2/org/codehaus/mojo/%{name}/%{version}/%{n
 Patch0:			maven-antlr-plugin-2.2-modello-issue.patch
 # siteRenderer.createSink doesn't exist anymore
 Patch2:			maven-antlr-plugin-2.1-sinkfix.patch
+# Fix grammar processing bug (bz 1020312)
+Patch3:			0001-MANTLR-34-Fix-NPE-when-building-Jenkins.patch
 
 BuildArch:		noarch
 
@@ -44,6 +46,7 @@ This package contains the API documentation for %{name}.
 %setup -q
 %patch0 -p1 -b .modello
 %patch2 -p1 -b .sink
+%patch3 -p1 -b .fixnpe
 
 # reporting eventually pulls in another antlr and we'd break with weird errors
 %pom_xpath_inject "pom:dependency[pom:artifactId[text()='maven-reporting-impl']]/pom:exclusions" "
@@ -69,6 +72,10 @@ find -name '*.jar' -exec rm -f '{}' \;
 %files javadoc -f .mfiles-javadoc
 
 %changelog
+* Fri Oct 18 2013 Tom Callaway <spot at fedoraproject.org> - 2.2-12
+- Fix grammar processing bug (bz 1020312)
+  Thanks to Michal Srb
+
 * Sat Aug 24 2013 Mat Booth <fedora at matbooth.co.uk> - 2.2-11
 - Remove unneeded BR on maven2-common-poms
 - Update for newer guidelines


More information about the scm-commits mailing list