You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by Robert Scholte <rf...@apache.org> on 2014/07/30 19:29:10 UTC
Re: git commit: MNG-5670 guard against
ConcurrentModificationException iterating over System properties
>> SystemProperties.addSystemProperties( props )
IMHO a bit weird naming: class is called SystemProperties as if it is a
wrapper around the System.properties
At first I read addSystemProperties() as the Map.addAll(Map) equivalent,
but it seems this method does something else.
How about SystemUtils.copySystemProperties?
thanks,
Robert
Op Wed, 30 Jul 2014 06:09:25 +0200 schreef <if...@apache.org>:
> Repository: maven
> Updated Branches:
> refs/heads/master e3000a09c -> 8980f67b9
>
>
> MNG-5670 guard against ConcurrentModificationException iterating over
> System properties
>
> Signed-off-by: Igor Fedorenko <if...@apache.org>
>
>
> Project: http://git-wip-us.apache.org/repos/asf/maven/repo
> Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/8980f67b
> Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/8980f67b
> Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/8980f67b
>
> Branch: refs/heads/master
> Commit: 8980f67b9b1d0dbc06b68f74a88b9f8589c40e23
> Parents: e3000a0
> Author: Igor Fedorenko <if...@apache.org>
> Authored: Wed Jul 30 07:57:53 2014 +0400
> Committer: Igor Fedorenko <if...@apache.org>
> Committed: Wed Jul 30 07:57:53 2014 +0400
>
> ----------------------------------------------------------------------
> .../project/artifact/MavenMetadataSource.java | 3 +-
> .../properties/internal/SystemProperties.java | 51
> ++++++++++++++++++++
> .../settings/DefaultMavenSettingsBuilder.java | 3 +-
> .../java/org/apache/maven/cli/MavenCli.java | 5 +-
> .../DefaultSettingsBuildingRequest.java | 6 ++-
> 5 files changed, 63 insertions(+), 5 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/maven/blob/8980f67b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
> ----------------------------------------------------------------------
> diff --git
> a/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
> b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
> index f2fc322..1750a7b 100644
> ---
> a/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
> +++
> b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
> @@ -68,6 +68,7 @@ import org.apache.maven.project.ProjectBuilder;
> import org.apache.maven.project.ProjectBuildingException;
> import org.apache.maven.project.ProjectBuildingRequest;
> import org.apache.maven.properties.internal.EnvironmentUtils;
> +import org.apache.maven.properties.internal.SystemProperties;
> import
> org.apache.maven.repository.legacy.metadata.DefaultMetadataResolutionRequest;
> import
> org.apache.maven.repository.legacy.metadata.MetadataResolutionRequest;
> import org.codehaus.plexus.PlexusContainer;
> @@ -752,7 +753,7 @@ public class MavenMetadataSource
> EnvironmentUtils.addEnvVars( props );
> - props.putAll( System.getProperties() );
> + SystemProperties.addSystemProperties( props );
> return props;
> }
>
> http://git-wip-us.apache.org/repos/asf/maven/blob/8980f67b/maven-core/src/main/java/org/apache/maven/properties/internal/SystemProperties.java
> ----------------------------------------------------------------------
> diff --git
> a/maven-core/src/main/java/org/apache/maven/properties/internal/SystemProperties.java
> b/maven-core/src/main/java/org/apache/maven/properties/internal/SystemProperties.java
> new file mode 100644
> index 0000000..9cb07c4
> --- /dev/null
> +++
> b/maven-core/src/main/java/org/apache/maven/properties/internal/SystemProperties.java
> @@ -0,0 +1,51 @@
> +package org.apache.maven.properties.internal;
> +
> +import java.util.Properties;
> +
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements. See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership. The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License. You may obtain a copy of the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied. See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +/**
> + * @since 3.2.3
> + */
> +public class SystemProperties
> +{
> + /**
> + * Thread-safe System.properties copy implementation.
> + *
> + * @see http://jira.codehaus.org/browse/MNG-5670
> + */
> + public static void addSystemProperties( Properties props )
> + {
> + for ( String key : System.getProperties().stringPropertyNames()
> )
> + {
> + props.put( key, System.getProperty( key ) );
> + }
> + }
> +
> + /**
> + * Returns System.properties copy.
> + */
> + public static Properties getSystemProperties()
> + {
> + Properties systemProperties = new Properties();
> + addSystemProperties( systemProperties );
> + return systemProperties;
> + }
> +}
>
> http://git-wip-us.apache.org/repos/asf/maven/blob/8980f67b/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
> ----------------------------------------------------------------------
> diff --git
> a/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
> b/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
> index f11c441..820d886 100644
> ---
> a/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
> +++
> b/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
> @@ -23,6 +23,7 @@ import java.io.File;
> import java.io.IOException;
> import org.apache.maven.execution.MavenExecutionRequest;
> +import org.apache.maven.properties.internal.SystemProperties;
> import
> org.apache.maven.settings.building.DefaultSettingsBuildingRequest;
> import org.apache.maven.settings.building.SettingsBuilder;
> import org.apache.maven.settings.building.SettingsBuildingException;
> @@ -71,7 +72,7 @@ public class DefaultMavenSettingsBuilder
> SettingsBuildingRequest request = new
> DefaultSettingsBuildingRequest();
> request.setUserSettingsFile( userSettingsFile );
> request.setGlobalSettingsFile( globalSettingsFile );
> - request.setSystemProperties( System.getProperties() );
> + request.setSystemProperties(
> SystemProperties.getSystemProperties() );
> return build( request );
> }
>
> http://git-wip-us.apache.org/repos/asf/maven/blob/8980f67b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
> ----------------------------------------------------------------------
> diff --git
> a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
> b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
> index 123b01a..9e64dd1 100644
> --- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
> +++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
> @@ -59,6 +59,7 @@ import
> org.apache.maven.lifecycle.LifecycleExecutionException;
> import org.apache.maven.model.building.ModelProcessor;
> import org.apache.maven.project.MavenProject;
> import org.apache.maven.properties.internal.EnvironmentUtils;
> +import org.apache.maven.properties.internal.SystemProperties;
> import
> org.apache.maven.settings.building.DefaultSettingsBuildingRequest;
> import org.apache.maven.settings.building.SettingsBuilder;
> import org.apache.maven.settings.building.SettingsBuildingRequest;
> @@ -1163,8 +1164,8 @@ public class MavenCli
> }
> }
> - systemProperties.putAll( System.getProperties() );
> -
> + SystemProperties.addSystemProperties( systemProperties );
> +
> //
> ----------------------------------------------------------------------
> // Properties containing info about the currently running
> version of Maven
> // These override any corresponding properties set on the
> command line
>
> http://git-wip-us.apache.org/repos/asf/maven/blob/8980f67b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java
> ----------------------------------------------------------------------
> diff --git
> a/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java
> b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java
> index 6b7e2f4..08c93fc 100644
> ---
> a/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java
> +++
> b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java
> @@ -106,7 +106,11 @@ public class DefaultSettingsBuildingRequest
> if ( systemProperties != null )
> {
> this.systemProperties = new Properties();
> - this.systemProperties.putAll( systemProperties );
> + // MNG-5670 guard against ConcurrentModificationException
> + for ( String key :
> System.getProperties().stringPropertyNames() )
> + {
> + this.systemProperties.put( key, System.getProperty( key
> ) );
> + }
> }
> else
> {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org
Re: git commit: MNG-5670 guard against
ConcurrentModificationException iterating over System properties
Posted by Robert Scholte <rf...@apache.org>.
Also a bad choice of naming ;) But at least the classname seems to be
better.
regards,
Robert
Op Wed, 30 Jul 2014 23:30:55 +0200 schreef Igor Fedorenko
<ig...@ifedorenko.com>:
> How is it different from EnvironmentUtils#addEnvVars(Properties)?
>
> --
> Regards,
> Igor
>
> On 2014-07-30, 21:29, Robert Scholte wrote:
>>>> SystemProperties.addSystemProperties( props )
>>
>> IMHO a bit weird naming: class is called SystemProperties as if it is a
>> wrapper around the System.properties
>> At first I read addSystemProperties() as the Map.addAll(Map) equivalent,
>> but it seems this method does something else.
>> How about SystemUtils.copySystemProperties?
>>
>> thanks,
>> Robert
>>
>>
>> Op Wed, 30 Jul 2014 06:09:25 +0200 schreef <if...@apache.org>:
>>
>>> Repository: maven
>>> Updated Branches:
>>> refs/heads/master e3000a09c -> 8980f67b9
>>>
>>>
>>> MNG-5670 guard against ConcurrentModificationException iterating over
>>> System properties
>>>
>>> Signed-off-by: Igor Fedorenko <if...@apache.org>
>>>
>>>
>>> Project: http://git-wip-us.apache.org/repos/asf/maven/repo
>>> Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/8980f67b
>>> Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/8980f67b
>>> Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/8980f67b
>>>
>>> Branch: refs/heads/master
>>> Commit: 8980f67b9b1d0dbc06b68f74a88b9f8589c40e23
>>> Parents: e3000a0
>>> Author: Igor Fedorenko <if...@apache.org>
>>> Authored: Wed Jul 30 07:57:53 2014 +0400
>>> Committer: Igor Fedorenko <if...@apache.org>
>>> Committed: Wed Jul 30 07:57:53 2014 +0400
>>>
>>> ----------------------------------------------------------------------
>>> .../project/artifact/MavenMetadataSource.java | 3 +-
>>> .../properties/internal/SystemProperties.java | 51
>>> ++++++++++++++++++++
>>> .../settings/DefaultMavenSettingsBuilder.java | 3 +-
>>> .../java/org/apache/maven/cli/MavenCli.java | 5 +-
>>> .../DefaultSettingsBuildingRequest.java | 6 ++-
>>> 5 files changed, 63 insertions(+), 5 deletions(-)
>>> ----------------------------------------------------------------------
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/maven/blob/8980f67b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
>>>
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
>>> b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
>>>
>>> index f2fc322..1750a7b 100644
>>> ---
>>> a/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
>>>
>>> +++
>>> b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
>>>
>>> @@ -68,6 +68,7 @@ import org.apache.maven.project.ProjectBuilder;
>>> import org.apache.maven.project.ProjectBuildingException;
>>> import org.apache.maven.project.ProjectBuildingRequest;
>>> import org.apache.maven.properties.internal.EnvironmentUtils;
>>> +import org.apache.maven.properties.internal.SystemProperties;
>>> import
>>> org.apache.maven.repository.legacy.metadata.DefaultMetadataResolutionRequest;
>>>
>>> import
>>> org.apache.maven.repository.legacy.metadata.MetadataResolutionRequest;
>>> import org.codehaus.plexus.PlexusContainer;
>>> @@ -752,7 +753,7 @@ public class MavenMetadataSource
>>> EnvironmentUtils.addEnvVars( props );
>>> - props.putAll( System.getProperties() );
>>> + SystemProperties.addSystemProperties( props );
>>> return props;
>>> }
>>>
>>> http://git-wip-us.apache.org/repos/asf/maven/blob/8980f67b/maven-core/src/main/java/org/apache/maven/properties/internal/SystemProperties.java
>>>
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/maven-core/src/main/java/org/apache/maven/properties/internal/SystemProperties.java
>>> b/maven-core/src/main/java/org/apache/maven/properties/internal/SystemProperties.java
>>>
>>> new file mode 100644
>>> index 0000000..9cb07c4
>>> --- /dev/null
>>> +++
>>> b/maven-core/src/main/java/org/apache/maven/properties/internal/SystemProperties.java
>>>
>>> @@ -0,0 +1,51 @@
>>> +package org.apache.maven.properties.internal;
>>> +
>>> +import java.util.Properties;
>>> +
>>> +/*
>>> + * Licensed to the Apache Software Foundation (ASF) under one
>>> + * or more contributor license agreements. See the NOTICE file
>>> + * distributed with this work for additional information
>>> + * regarding copyright ownership. The ASF licenses this file
>>> + * to you under the Apache License, Version 2.0 (the
>>> + * "License"); you may not use this file except in compliance
>>> + * with the License. You may obtain a copy of the License at
>>> + *
>>> + * http://www.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + * Unless required by applicable law or agreed to in writing,
>>> + * software distributed under the License is distributed on an
>>> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>>> + * KIND, either express or implied. See the License for the
>>> + * specific language governing permissions and limitations
>>> + * under the License.
>>> + */
>>> +
>>> +/**
>>> + * @since 3.2.3
>>> + */
>>> +public class SystemProperties
>>> +{
>>> + /**
>>> + * Thread-safe System.properties copy implementation.
>>> + *
>>> + * @see http://jira.codehaus.org/browse/MNG-5670
>>> + */
>>> + public static void addSystemProperties( Properties props )
>>> + {
>>> + for ( String key :
>>> System.getProperties().stringPropertyNames() )
>>> + {
>>> + props.put( key, System.getProperty( key ) );
>>> + }
>>> + }
>>> +
>>> + /**
>>> + * Returns System.properties copy.
>>> + */
>>> + public static Properties getSystemProperties()
>>> + {
>>> + Properties systemProperties = new Properties();
>>> + addSystemProperties( systemProperties );
>>> + return systemProperties;
>>> + }
>>> +}
>>>
>>> http://git-wip-us.apache.org/repos/asf/maven/blob/8980f67b/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
>>>
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
>>> b/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
>>>
>>> index f11c441..820d886 100644
>>> ---
>>> a/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
>>>
>>> +++
>>> b/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
>>>
>>> @@ -23,6 +23,7 @@ import java.io.File;
>>> import java.io.IOException;
>>> import org.apache.maven.execution.MavenExecutionRequest;
>>> +import org.apache.maven.properties.internal.SystemProperties;
>>> import
>>> org.apache.maven.settings.building.DefaultSettingsBuildingRequest;
>>> import org.apache.maven.settings.building.SettingsBuilder;
>>> import org.apache.maven.settings.building.SettingsBuildingException;
>>> @@ -71,7 +72,7 @@ public class DefaultMavenSettingsBuilder
>>> SettingsBuildingRequest request = new
>>> DefaultSettingsBuildingRequest();
>>> request.setUserSettingsFile( userSettingsFile );
>>> request.setGlobalSettingsFile( globalSettingsFile );
>>> - request.setSystemProperties( System.getProperties() );
>>> + request.setSystemProperties(
>>> SystemProperties.getSystemProperties() );
>>> return build( request );
>>> }
>>>
>>> http://git-wip-us.apache.org/repos/asf/maven/blob/8980f67b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
>>>
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
>>> b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
>>> index 123b01a..9e64dd1 100644
>>> --- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
>>> +++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
>>> @@ -59,6 +59,7 @@ import
>>> org.apache.maven.lifecycle.LifecycleExecutionException;
>>> import org.apache.maven.model.building.ModelProcessor;
>>> import org.apache.maven.project.MavenProject;
>>> import org.apache.maven.properties.internal.EnvironmentUtils;
>>> +import org.apache.maven.properties.internal.SystemProperties;
>>> import
>>> org.apache.maven.settings.building.DefaultSettingsBuildingRequest;
>>> import org.apache.maven.settings.building.SettingsBuilder;
>>> import org.apache.maven.settings.building.SettingsBuildingRequest;
>>> @@ -1163,8 +1164,8 @@ public class MavenCli
>>> }
>>> }
>>> - systemProperties.putAll( System.getProperties() );
>>> -
>>> + SystemProperties.addSystemProperties( systemProperties );
>>> +
>>> //
>>> ----------------------------------------------------------------------
>>> // Properties containing info about the currently running
>>> version of Maven
>>> // These override any corresponding properties set on the
>>> command line
>>>
>>> http://git-wip-us.apache.org/repos/asf/maven/blob/8980f67b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java
>>>
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java
>>> b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java
>>>
>>> index 6b7e2f4..08c93fc 100644
>>> ---
>>> a/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java
>>>
>>> +++
>>> b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java
>>>
>>> @@ -106,7 +106,11 @@ public class DefaultSettingsBuildingRequest
>>> if ( systemProperties != null )
>>> {
>>> this.systemProperties = new Properties();
>>> - this.systemProperties.putAll( systemProperties );
>>> + // MNG-5670 guard against ConcurrentModificationException
>>> + for ( String key :
>>> System.getProperties().stringPropertyNames() )
>>> + {
>>> + this.systemProperties.put( key, System.getProperty(
>>> key ) );
>>> + }
>>> }
>>> else
>>> {
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
>> For additional commands, e-mail: dev-help@maven.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org
Re: git commit: MNG-5670 guard against ConcurrentModificationException
iterating over System properties
Posted by Igor Fedorenko <ig...@ifedorenko.com>.
How is it different from EnvironmentUtils#addEnvVars(Properties)?
--
Regards,
Igor
On 2014-07-30, 21:29, Robert Scholte wrote:
>>> SystemProperties.addSystemProperties( props )
>
> IMHO a bit weird naming: class is called SystemProperties as if it is a
> wrapper around the System.properties
> At first I read addSystemProperties() as the Map.addAll(Map) equivalent,
> but it seems this method does something else.
> How about SystemUtils.copySystemProperties?
>
> thanks,
> Robert
>
>
> Op Wed, 30 Jul 2014 06:09:25 +0200 schreef <if...@apache.org>:
>
>> Repository: maven
>> Updated Branches:
>> refs/heads/master e3000a09c -> 8980f67b9
>>
>>
>> MNG-5670 guard against ConcurrentModificationException iterating over
>> System properties
>>
>> Signed-off-by: Igor Fedorenko <if...@apache.org>
>>
>>
>> Project: http://git-wip-us.apache.org/repos/asf/maven/repo
>> Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/8980f67b
>> Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/8980f67b
>> Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/8980f67b
>>
>> Branch: refs/heads/master
>> Commit: 8980f67b9b1d0dbc06b68f74a88b9f8589c40e23
>> Parents: e3000a0
>> Author: Igor Fedorenko <if...@apache.org>
>> Authored: Wed Jul 30 07:57:53 2014 +0400
>> Committer: Igor Fedorenko <if...@apache.org>
>> Committed: Wed Jul 30 07:57:53 2014 +0400
>>
>> ----------------------------------------------------------------------
>> .../project/artifact/MavenMetadataSource.java | 3 +-
>> .../properties/internal/SystemProperties.java | 51
>> ++++++++++++++++++++
>> .../settings/DefaultMavenSettingsBuilder.java | 3 +-
>> .../java/org/apache/maven/cli/MavenCli.java | 5 +-
>> .../DefaultSettingsBuildingRequest.java | 6 ++-
>> 5 files changed, 63 insertions(+), 5 deletions(-)
>> ----------------------------------------------------------------------
>>
>>
>> http://git-wip-us.apache.org/repos/asf/maven/blob/8980f67b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
>>
>> ----------------------------------------------------------------------
>> diff --git
>> a/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
>> b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
>>
>> index f2fc322..1750a7b 100644
>> ---
>> a/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
>>
>> +++
>> b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
>>
>> @@ -68,6 +68,7 @@ import org.apache.maven.project.ProjectBuilder;
>> import org.apache.maven.project.ProjectBuildingException;
>> import org.apache.maven.project.ProjectBuildingRequest;
>> import org.apache.maven.properties.internal.EnvironmentUtils;
>> +import org.apache.maven.properties.internal.SystemProperties;
>> import
>> org.apache.maven.repository.legacy.metadata.DefaultMetadataResolutionRequest;
>>
>> import
>> org.apache.maven.repository.legacy.metadata.MetadataResolutionRequest;
>> import org.codehaus.plexus.PlexusContainer;
>> @@ -752,7 +753,7 @@ public class MavenMetadataSource
>> EnvironmentUtils.addEnvVars( props );
>> - props.putAll( System.getProperties() );
>> + SystemProperties.addSystemProperties( props );
>> return props;
>> }
>>
>> http://git-wip-us.apache.org/repos/asf/maven/blob/8980f67b/maven-core/src/main/java/org/apache/maven/properties/internal/SystemProperties.java
>>
>> ----------------------------------------------------------------------
>> diff --git
>> a/maven-core/src/main/java/org/apache/maven/properties/internal/SystemProperties.java
>> b/maven-core/src/main/java/org/apache/maven/properties/internal/SystemProperties.java
>>
>> new file mode 100644
>> index 0000000..9cb07c4
>> --- /dev/null
>> +++
>> b/maven-core/src/main/java/org/apache/maven/properties/internal/SystemProperties.java
>>
>> @@ -0,0 +1,51 @@
>> +package org.apache.maven.properties.internal;
>> +
>> +import java.util.Properties;
>> +
>> +/*
>> + * Licensed to the Apache Software Foundation (ASF) under one
>> + * or more contributor license agreements. See the NOTICE file
>> + * distributed with this work for additional information
>> + * regarding copyright ownership. The ASF licenses this file
>> + * to you under the Apache License, Version 2.0 (the
>> + * "License"); you may not use this file except in compliance
>> + * with the License. You may obtain a copy of the License at
>> + *
>> + * http://www.apache.org/licenses/LICENSE-2.0
>> + *
>> + * Unless required by applicable law or agreed to in writing,
>> + * software distributed under the License is distributed on an
>> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> + * KIND, either express or implied. See the License for the
>> + * specific language governing permissions and limitations
>> + * under the License.
>> + */
>> +
>> +/**
>> + * @since 3.2.3
>> + */
>> +public class SystemProperties
>> +{
>> + /**
>> + * Thread-safe System.properties copy implementation.
>> + *
>> + * @see http://jira.codehaus.org/browse/MNG-5670
>> + */
>> + public static void addSystemProperties( Properties props )
>> + {
>> + for ( String key :
>> System.getProperties().stringPropertyNames() )
>> + {
>> + props.put( key, System.getProperty( key ) );
>> + }
>> + }
>> +
>> + /**
>> + * Returns System.properties copy.
>> + */
>> + public static Properties getSystemProperties()
>> + {
>> + Properties systemProperties = new Properties();
>> + addSystemProperties( systemProperties );
>> + return systemProperties;
>> + }
>> +}
>>
>> http://git-wip-us.apache.org/repos/asf/maven/blob/8980f67b/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
>>
>> ----------------------------------------------------------------------
>> diff --git
>> a/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
>> b/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
>>
>> index f11c441..820d886 100644
>> ---
>> a/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
>>
>> +++
>> b/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
>>
>> @@ -23,6 +23,7 @@ import java.io.File;
>> import java.io.IOException;
>> import org.apache.maven.execution.MavenExecutionRequest;
>> +import org.apache.maven.properties.internal.SystemProperties;
>> import
>> org.apache.maven.settings.building.DefaultSettingsBuildingRequest;
>> import org.apache.maven.settings.building.SettingsBuilder;
>> import org.apache.maven.settings.building.SettingsBuildingException;
>> @@ -71,7 +72,7 @@ public class DefaultMavenSettingsBuilder
>> SettingsBuildingRequest request = new
>> DefaultSettingsBuildingRequest();
>> request.setUserSettingsFile( userSettingsFile );
>> request.setGlobalSettingsFile( globalSettingsFile );
>> - request.setSystemProperties( System.getProperties() );
>> + request.setSystemProperties(
>> SystemProperties.getSystemProperties() );
>> return build( request );
>> }
>>
>> http://git-wip-us.apache.org/repos/asf/maven/blob/8980f67b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
>>
>> ----------------------------------------------------------------------
>> diff --git
>> a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
>> b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
>> index 123b01a..9e64dd1 100644
>> --- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
>> +++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
>> @@ -59,6 +59,7 @@ import
>> org.apache.maven.lifecycle.LifecycleExecutionException;
>> import org.apache.maven.model.building.ModelProcessor;
>> import org.apache.maven.project.MavenProject;
>> import org.apache.maven.properties.internal.EnvironmentUtils;
>> +import org.apache.maven.properties.internal.SystemProperties;
>> import
>> org.apache.maven.settings.building.DefaultSettingsBuildingRequest;
>> import org.apache.maven.settings.building.SettingsBuilder;
>> import org.apache.maven.settings.building.SettingsBuildingRequest;
>> @@ -1163,8 +1164,8 @@ public class MavenCli
>> }
>> }
>> - systemProperties.putAll( System.getProperties() );
>> -
>> + SystemProperties.addSystemProperties( systemProperties );
>> +
>> //
>> ----------------------------------------------------------------------
>> // Properties containing info about the currently running
>> version of Maven
>> // These override any corresponding properties set on the
>> command line
>>
>> http://git-wip-us.apache.org/repos/asf/maven/blob/8980f67b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java
>>
>> ----------------------------------------------------------------------
>> diff --git
>> a/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java
>> b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java
>>
>> index 6b7e2f4..08c93fc 100644
>> ---
>> a/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java
>>
>> +++
>> b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java
>>
>> @@ -106,7 +106,11 @@ public class DefaultSettingsBuildingRequest
>> if ( systemProperties != null )
>> {
>> this.systemProperties = new Properties();
>> - this.systemProperties.putAll( systemProperties );
>> + // MNG-5670 guard against ConcurrentModificationException
>> + for ( String key :
>> System.getProperties().stringPropertyNames() )
>> + {
>> + this.systemProperties.put( key, System.getProperty(
>> key ) );
>> + }
>> }
>> else
>> {
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org