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