From b666fb6f1e0324db46c9382048694a640fac24ea Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Thu, 26 Nov 2015 14:28:54 +0100 Subject: [PATCH] Try to procect builddep MOJO against patological cases --- ...dependencies-to-lib-core-in-assembly.patch | 4 +- ...uilddep-MOJO-against-patological-cas.patch | 54 +++++++++++++++++++ xmvn.spec | 7 ++- 3 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 0002-Try-to-procect-builddep-MOJO-against-patological-cas.patch diff --git a/0001-Copy-core-dependencies-to-lib-core-in-assembly.patch b/0001-Copy-core-dependencies-to-lib-core-in-assembly.patch index 67389a3..d10e4b9 100644 --- a/0001-Copy-core-dependencies-to-lib-core-in-assembly.patch +++ b/0001-Copy-core-dependencies-to-lib-core-in-assembly.patch @@ -1,7 +1,7 @@ From a2f918fe86c91e1a76d198e824118d5ba474808c Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Wed, 28 Oct 2015 22:26:44 +0100 -Subject: [PATCH] Copy core dependencies to lib/core in assembly +Subject: [PATCH 1/2] Copy core dependencies to lib/core in assembly --- xmvn-core/pom.xml | 15 +++++++++++++++ @@ -34,5 +34,5 @@ index e792f6a..b0ef6b5 100644 -- -2.4.3 +2.5.0 diff --git a/0002-Try-to-procect-builddep-MOJO-against-patological-cas.patch b/0002-Try-to-procect-builddep-MOJO-against-patological-cas.patch new file mode 100644 index 0000000..fede765 --- /dev/null +++ b/0002-Try-to-procect-builddep-MOJO-against-patological-cas.patch @@ -0,0 +1,54 @@ +From 3b214255464d5baca5ee26a897cd9afca53e52c3 Mon Sep 17 00:00:00 2001 +From: Mikolaj Izdebski +Date: Thu, 26 Nov 2015 14:18:48 +0100 +Subject: [PATCH 2/2] Try to procect builddep MOJO against patological cases + +- Clone model before processing it to avoid + UnsupportedOperationException (rhbz#1276729). +- Guard against NullPointerException. +- Inject a deep copy of resolutions to avoid + ConcurrentModificationException. +--- + .../xmvn/connector/aether/XMvnMojoExecutionListener.java | 2 +- + .../src/main/java/org/fedoraproject/xmvn/mojo/BuilddepMojo.java | 5 ++++- + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionListener.java b/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionListener.java +index 16f30db..7adfe44 100644 +--- a/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionListener.java ++++ b/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionListener.java +@@ -222,7 +222,7 @@ public class XMvnMojoExecutionListener + for ( BeanProperty property : new BeanProperties( mojo.getClass() ) ) + { + if ( property.getName().equals( "resolutions" ) ) +- property.set( mojo, Collections.unmodifiableList( resolutions ) ); ++ property.set( mojo, Collections.unmodifiableList( new ArrayList<>( resolutions ) ) ); + } + } + } +diff --git a/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/BuilddepMojo.java b/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/BuilddepMojo.java +index 8bbdf5f..dd6a8f5 100644 +--- a/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/BuilddepMojo.java ++++ b/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/BuilddepMojo.java +@@ -139,7 +139,7 @@ public class BuilddepMojo + Set artifacts = new LinkedHashSet<>(); + for ( MavenProject project : reactorProjects ) + { +- Model model = project.getModel(); ++ Model model = project.getModel().clone(); + String modelId = model.getLocation( "" ).getSource().getModelId(); + BuildDependencyVisitor visitor = new BuildDependencyVisitor( modelId ); + modelProcessor.processModel( model, visitor ); +@@ -149,6 +149,9 @@ public class BuilddepMojo + Set deps = new LinkedHashSet<>(); + for ( String[] resolution : resolutions ) + { ++ if ( resolution == null ) ++ continue; ++ + Artifact artifact = new DefaultArtifact( resolution[0] ); + String compatVersion = resolution[1]; + String namespace = resolution[2]; +-- +2.5.0 + diff --git a/xmvn.spec b/xmvn.spec index b5dd1ba..eb285a0 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -8,7 +8,7 @@ Name: xmvn Version: 2.5.0 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Local Extensions for Apache Maven License: ASL 2.0 URL: http://mizdebsk.fedorapeople.org/xmvn @@ -17,6 +17,7 @@ BuildArch: noarch Source0: https://fedorahosted.org/released/%{name}/%{name}-%{version}.tar.xz Patch0: 0001-Copy-core-dependencies-to-lib-core-in-assembly.patch +Patch1: 0002-Try-to-procect-builddep-MOJO-against-patological-cas.patch BuildRequires: maven >= 3.3.9-2 BuildRequires: maven-local @@ -157,6 +158,7 @@ This package provides %{summary}. %prep %setup -q %patch0 -p1 +%patch1 -p1 %mvn_package ":xmvn{,-it}" __noinstall @@ -297,6 +299,9 @@ cp -P %{_datadir}/maven/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ %doc LICENSE NOTICE %changelog +* Thu Nov 26 2015 Mikolaj Izdebski - 2.5.0-5 +- Try to procect builddep MOJO against patological cases + * Mon Nov 23 2015 Mikolaj Izdebski - 2.5.0-4 - Remove temporary Maven 3.3.9 workaround