Skip to content

Commit 1769b58

Browse files
committed
Don't modify Collection while iterating over it
Removing list element using Collection.remove() invalidates Iterator and results in incorrect behaviour.
1 parent 3581dc1 commit 1769b58

2 files changed

Lines changed: 4 additions & 5 deletions

File tree

xmvn-api/src/main/java/org/fedoraproject/xmvn/deployer/DeploymentRequest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,9 @@ public void removeDependency( Artifact dependencyArtifact )
7777
Iterator<DependencyDescriptor> ddl = dependencies.iterator();
7878
while ( ddl.hasNext() )
7979
{
80-
DependencyDescriptor dd = ddl.next();
81-
if ( dd.getDependencyArtifact().equals( dependencyArtifact ) )
80+
if ( ddl.next().getDependencyArtifact().equals( dependencyArtifact ) )
8281
{
83-
dependencies.remove( dd );
82+
ddl.remove();
8483
}
8584
}
8685
}

xmvn-api/src/test/java/org/fedoraproject/xmvn/deployer/DeploymentRequestTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,13 +138,13 @@ public void addAndGetDependenciesTest()
138138

139139
deployRq.addDependency( dependencyB, dependencyC, dependencyD );
140140
listedDependencies = deployRq.getDependencies();
141-
Assert.assertTrue( listedDependencies.get( 1 ).getExclusions().equals( depExcl ) );
141+
Assert.assertTrue( listedDependencies.get( 0 ).getExclusions().equals( depExcl ) );
142142
deployRq.removeDependency( dependencyB );
143143

144144
// tests adding optional dependency without exclusions
145145
deployRq.addDependency( dependencyB, true, new ArrayList<>() );
146146
listedDependencies = deployRq.getDependencies();
147-
dsc = listedDependencies.get( 1 );
147+
dsc = listedDependencies.get( 0 );
148148
Assert.assertTrue( dsc.isOptional() );
149149
Assert.assertTrue( dsc.getExclusions().isEmpty() );
150150

0 commit comments

Comments
 (0)