You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by bi...@apache.org on 2011/06/12 21:57:41 UTC
svn commit: r1134972 - in /maven/sandbox/trunk/plexus-utils-commons-bridge:
plexus-utils-commons-bridge/pom.xml
plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
plexus-utils-tck/pom.xml
Author: bimargulies
Date: Sun Jun 12 19:57:40 2011
New Revision: 1134972
URL: http://svn.apache.org/viewvc?rev=1134972&view=rev
Log:
Take existing CollectionUtils as new implementation.
Added:
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java (with props)
Modified:
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml
Modified: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml?rev=1134972&r1=1134971&r2=1134972&view=diff
==============================================================================
--- maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml (original)
+++ maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml Sun Jun 12 19:57:40 2011
@@ -1,63 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <artifactId>plexus-utils-commons-bridge-parent</artifactId>
- <groupId>org.apache.maven.sandbox</groupId>
- <version>0.1-SNAPSHOT</version>
- </parent>
-
- <artifactId>plexus-utils-commons-bridge</artifactId>
-
- <name>Plexus Utils to Apache Commons bridge</name>
- <description>A bridge/shim that implements Plexus Utils using Apache Commons</description>
-
- <dependencies>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.sandbox</groupId>
- <artifactId>plexus-utils-tck</artifactId>
- <version>${project.parent.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <phase>generate-test-resources</phase>
- <goals>
- <goal>unpack-dependencies</goal>
- </goals>
- <configuration>
- <includeTypes>test-jar</includeTypes>
- <excludeTransitive>true</excludeTransitive>
- <outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <artifactId>plexus-utils-commons-bridge-parent</artifactId>
+ <groupId>org.apache.maven.sandbox</groupId>
+ <version>0.1-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>plexus-utils-commons-bridge</artifactId>
+
+ <name>Plexus Utils to Apache Commons bridge</name>
+ <description>A bridge/shim that implements Plexus Utils using Apache Commons</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.sandbox</groupId>
+ <artifactId>plexus-utils-tck</artifactId>
+ <version>${project.parent.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <version>r09</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>generate-test-resources</phase>
+ <goals>
+ <goal>unpack-dependencies</goal>
+ </goals>
+ <configuration>
+ <includeTypes>test-jar</includeTypes>
+ <excludeTransitive>true</excludeTransitive>
+ <outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</project>
Added: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java?rev=1134972&view=auto
==============================================================================
--- maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java (added)
+++ maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java Sun Jun 12 19:57:40 2011
@@ -0,0 +1,253 @@
+package org.codehaus.plexus.util;
+
+/*
+ * Copyright The Codehaus Foundation.
+ *
+ * Licensed 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.
+ */
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.NoSuchElementException;
+import java.util.Set;
+
+/**
+ * @author <a href="mailto:olamy@codehaus.org">olamy</a>
+ * @version $Id: CollectionUtils.java 8055 2009-01-16 12:45:08Z vsiveton $
+ */
+@SuppressWarnings( { "rawtypes", "unchecked" } )
+public class CollectionUtils
+{
+ // ----------------------------------------------------------------------
+ // Static methods that can probably be moved to a real util class.
+ // ----------------------------------------------------------------------
+
+ /**
+ * Take a dominant and recessive Map and merge the key:value
+ * pairs where the recessive Map may add key:value pairs to the dominant
+ * Map but may not override any existing key:value pairs.
+ *
+ * If we have two Maps, a dominant and recessive, and
+ * their respective keys are as follows:
+ *
+ * dominantMapKeys = { a, b, c, d, e, f }
+ * recessiveMapKeys = { a, b, c, x, y, z }
+ *
+ * Then the result should be the following:
+ *
+ * resultantKeys = { a, b, c, d, e, f, x, y, z }
+ *
+ * @param dominantMap Dominant Map.
+ * @param recessiveMap Recessive Map.
+ * @return The result map with combined dominant and recessive values.
+ */
+ public static Map mergeMaps( Map dominantMap, Map recessiveMap )
+ {
+
+ if ( dominantMap == null && recessiveMap == null )
+ {
+ return null;
+ }
+
+ if ( dominantMap != null && recessiveMap == null )
+ {
+ return dominantMap;
+ }
+
+ if ( dominantMap == null && recessiveMap != null )
+ {
+ return recessiveMap;
+ }
+
+ Map result = new HashMap();
+
+ // Grab the keys from the dominant and recessive maps.
+ Set dominantMapKeys = dominantMap.keySet();
+ Set recessiveMapKeys = recessiveMap.keySet();
+
+ // Create the set of keys that will be contributed by the
+ // recessive Map by subtracting the intersection of keys
+ // from the recessive Map's keys.
+ Collection contributingRecessiveKeys =
+ CollectionUtils.subtract( recessiveMapKeys,
+ CollectionUtils.intersection( dominantMapKeys, recessiveMapKeys ) );
+
+ result.putAll( dominantMap );
+
+ // Now take the keys we just found and extract the values from
+ // the recessiveMap and put the key:value pairs into the dominantMap.
+ for ( Iterator i = contributingRecessiveKeys.iterator(); i.hasNext(); )
+ {
+ Object key = i.next();
+ result.put( key, recessiveMap.get( key ) );
+ }
+
+ return result;
+ }
+
+ /**
+ * Take a series of <code>Map</code>s and merge
+ * them where the ordering of the array from 0..n
+ * is the dominant order.
+ *
+ * @param maps An array of Maps to merge.
+ * @return Map The result Map produced after the merging process.
+ */
+ public static Map mergeMaps( Map[] maps )
+ {
+ Map result = null;
+
+ if ( maps.length == 0 )
+ {
+ result = null;
+ }
+ else if ( maps.length == 1 )
+ {
+ result = maps[0];
+ }
+ else
+ {
+ result = mergeMaps( maps[0], maps[1] );
+
+ for ( int i = 2; i < maps.length; i++ )
+ {
+ result = mergeMaps( result, maps[i] );
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns a {@link Collection} containing the intersection
+ * of the given {@link Collection}s.
+ * <p>
+ * The cardinality of each element in the returned {@link Collection}
+ * will be equal to the minimum of the cardinality of that element
+ * in the two given {@link Collection}s.
+ *
+ * @see Collection#retainAll
+ */
+ public static Collection intersection( final Collection a, final Collection b )
+ {
+ ArrayList list = new ArrayList();
+ Map mapa = getCardinalityMap( a );
+ Map mapb = getCardinalityMap( b );
+ Set elts = new HashSet( a );
+ elts.addAll( b );
+ Iterator it = elts.iterator();
+ while ( it.hasNext() )
+ {
+ Object obj = it.next();
+ for ( int i = 0,m = Math.min( getFreq( obj, mapa ), getFreq( obj, mapb ) ); i < m; i++ )
+ {
+ list.add( obj );
+ }
+ }
+ return list;
+ }
+
+ /**
+ * Returns a {@link Collection} containing <tt><i>a</i> - <i>b</i></tt>.
+ * The cardinality of each element <i>e</i> in the returned {@link Collection}
+ * will be the cardinality of <i>e</i> in <i>a</i> minus the cardinality
+ * of <i>e</i> in <i>b</i>, or zero, whichever is greater.
+ *
+ * @see Collection#removeAll
+ */
+ public static Collection subtract( final Collection a, final Collection b )
+ {
+ ArrayList list = new ArrayList( a );
+ Iterator it = b.iterator();
+ while ( it.hasNext() )
+ {
+ list.remove( it.next() );
+ }
+ return list;
+ }
+
+ /**
+ * Returns a {@link Map} mapping each unique element in
+ * the given {@link Collection} to an {@link Integer}
+ * representing the number of occurances of that element
+ * in the {@link Collection}.
+ * An entry that maps to <tt>null</tt> indicates that the
+ * element does not appear in the given {@link Collection}.
+ */
+ public static Map getCardinalityMap( final Collection col )
+ {
+ HashMap count = new HashMap();
+ Iterator it = col.iterator();
+ while ( it.hasNext() )
+ {
+ Object obj = it.next();
+ Integer c = (Integer) ( count.get( obj ) );
+ if ( null == c )
+ {
+ count.put( obj, new Integer( 1 ) );
+ }
+ else
+ {
+ count.put( obj, new Integer( c.intValue() + 1 ) );
+ }
+ }
+ return count;
+ }
+
+ public static List iteratorToList( Iterator it )
+ {
+ if ( it == null )
+ {
+ throw new NullPointerException( "it cannot be null." );
+ }
+
+ List list = new ArrayList();
+
+ while ( it.hasNext() )
+ {
+ list.add( it.next() );
+ }
+
+ return list;
+ }
+
+ // ----------------------------------------------------------------------
+ //
+ // ----------------------------------------------------------------------
+
+ private static final int getFreq( final Object obj, final Map freqMap )
+ {
+ try
+ {
+ Object o = freqMap.get( obj );
+ if ( o != null ) // minimize NullPointerExceptions
+ {
+ return ( (Integer) o ).intValue();
+ }
+ }
+ catch ( NullPointerException e )
+ {
+ // ignored
+ }
+ catch ( NoSuchElementException e )
+ {
+ // ignored
+ }
+ return 0;
+ }
+}
Propchange: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml?rev=1134972&r1=1134971&r2=1134972&view=diff
==============================================================================
--- maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml (original)
+++ maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml Sun Jun 12 19:57:40 2011
@@ -1,56 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <artifactId>plexus-utils-commons-bridge-parent</artifactId>
- <groupId>org.apache.maven.sandbox</groupId>
- <version>0.1-SNAPSHOT</version>
- </parent>
-
- <artifactId>plexus-utils-tck</artifactId>
-
- <name>Plexus Utils Test Compatibility Kit</name>
- <description>A set of test cases that verify compatibility with the Plexus Utils API</description>
-
- <dependencies>
- <dependency>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-utils</artifactId>
- <version>2.0.7</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.8.2</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- <version>r09</version>
- <scope>test</scope>
-</dependency>
-
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-jar-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>test-jar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <artifactId>plexus-utils-commons-bridge-parent</artifactId>
+ <groupId>org.apache.maven.sandbox</groupId>
+ <version>0.1-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>plexus-utils-tck</artifactId>
+
+ <name>Plexus Utils Test Compatibility Kit</name>
+ <description>A set of test cases that verify compatibility with the Plexus Utils API</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ <version>2.0.7</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.2</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <version>r09</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>test-jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</project>
Re: svn commit: r1134972 - in /maven/sandbox/trunk/plexus-utils-commons-bridge:
plexus-utils-commons-bridge/pom.xml plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
plexus-utils-tck/pom.xml
Posted by Stephen Connolly <st...@gmail.com>.
I'll run in through the intellij rules again, see if there is a difference
- Stephen
---
Sent from my Android phone, so random spelling mistakes, random nonsense
words and other nonsense are a direct result of using swype to type on the
screen
On 12 Jun 2011 21:14, "Benson Margulies" <bi...@gmail.com> wrote:
> I assumed that the incoming POM had been formatted with the eclipse
> format from the standard maven rules, so that I could run
> source/format safely. Apparently I made a bad assumption.
>
> Shall I put it back?
>
> On Sun, Jun 12, 2011 at 4:08 PM, Stephen Connolly
> <st...@gmail.com> wrote:
>> pom formatting got changed there
>>
>> On 12 June 2011 20:57, <bi...@apache.org> wrote:
>>> Author: bimargulies
>>> Date: Sun Jun 12 19:57:40 2011
>>> New Revision: 1134972
>>>
>>> URL: http://svn.apache.org/viewvc?rev=1134972&view=rev
>>> Log:
>>> Take existing CollectionUtils as new implementation.
>>>
>>> Added:
>>>
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
(with props)
>>> Modified:
>>>
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml
>>>
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml
>>>
>>> Modified:
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml
>>> URL:
http://svn.apache.org/viewvc/maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml?rev=1134972&r1=1134971&r2=1134972&view=diff
>>>
==============================================================================
>>> ---
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml
(original)
>>> +++
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml
Sun Jun 12 19:57:40 2011
>>> @@ -1,63 +1,68 @@
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> -<project xmlns="http://maven.apache.org/POM/4.0.0"
>>> - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>> - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>> - <modelVersion>4.0.0</modelVersion>
>>> -
>>> - <parent>
>>> - <artifactId>plexus-utils-commons-bridge-parent</artifactId>
>>> - <groupId>org.apache.maven.sandbox</groupId>
>>> - <version>0.1-SNAPSHOT</version>
>>> - </parent>
>>> -
>>> - <artifactId>plexus-utils-commons-bridge</artifactId>
>>> -
>>> - <name>Plexus Utils to Apache Commons bridge</name>
>>> - <description>A bridge/shim that implements Plexus Utils using Apache
Commons</description>
>>> -
>>> - <dependencies>
>>> - <dependency>
>>> - <groupId>commons-io</groupId>
>>> - <artifactId>commons-io</artifactId>
>>> - </dependency>
>>> - <dependency>
>>> - <groupId>commons-codec</groupId>
>>> - <artifactId>commons-codec</artifactId>
>>> - </dependency>
>>> - <dependency>
>>> - <groupId>junit</groupId>
>>> - <artifactId>junit</artifactId>
>>> - <scope>test</scope>
>>> - </dependency>
>>> - <dependency>
>>> - <groupId>org.apache.maven.sandbox</groupId>
>>> - <artifactId>plexus-utils-tck</artifactId>
>>> - <version>${project.parent.version}</version>
>>> - <type>test-jar</type>
>>> - <scope>test</scope>
>>> - </dependency>
>>> - </dependencies>
>>> -
>>> - <build>
>>> - <plugins>
>>> - <plugin>
>>> - <artifactId>maven-dependency-plugin</artifactId>
>>> - <executions>
>>> - <execution>
>>> - <phase>generate-test-resources</phase>
>>> - <goals>
>>> - <goal>unpack-dependencies</goal>
>>> - </goals>
>>> - <configuration>
>>> - <includeTypes>test-jar</includeTypes>
>>> - <excludeTransitive>true</excludeTransitive>
>>> -
<outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
>>> - </configuration>
>>> - </execution>
>>> - </executions>
>>> - </plugin>
>>> - </plugins>
>>> - </build>
>>> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
>>> + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>> + <modelVersion>4.0.0</modelVersion>
>>> +
>>> + <parent>
>>> +
<artifactId>plexus-utils-commons-bridge-parent</artifactId>
>>> + <groupId>org.apache.maven.sandbox</groupId>
>>> + <version>0.1-SNAPSHOT</version>
>>> + </parent>
>>> +
>>> + <artifactId>plexus-utils-commons-bridge</artifactId>
>>> +
>>> + <name>Plexus Utils to Apache Commons bridge</name>
>>> + <description>A bridge/shim that implements Plexus Utils using
Apache Commons</description>
>>> +
>>> + <dependencies>
>>> + <dependency>
>>> + <groupId>commons-io</groupId>
>>> + <artifactId>commons-io</artifactId>
>>> + </dependency>
>>> + <dependency>
>>> + <groupId>commons-codec</groupId>
>>> + <artifactId>commons-codec</artifactId>
>>> + </dependency>
>>> + <dependency>
>>> + <groupId>junit</groupId>
>>> + <artifactId>junit</artifactId>
>>> + <scope>test</scope>
>>> + </dependency>
>>> + <dependency>
>>> + <groupId>org.apache.maven.sandbox</groupId>
>>> + <artifactId>plexus-utils-tck</artifactId>
>>> + <version>${project.parent.version}</version>
>>> + <type>test-jar</type>
>>> + <scope>test</scope>
>>> + </dependency>
>>> + <dependency>
>>> + <groupId>com.google.guava</groupId>
>>> + <artifactId>guava</artifactId>
>>> + <version>r09</version>
>>> + <scope>test</scope>
>>> + </dependency>
>>> + </dependencies>
>>> +
>>> + <build>
>>> + <plugins>
>>> + <plugin>
>>> +
<artifactId>maven-dependency-plugin</artifactId>
>>> + <executions>
>>> + <execution>
>>> +
<phase>generate-test-resources</phase>
>>> + <goals>
>>> +
<goal>unpack-dependencies</goal>
>>> + </goals>
>>> + <configuration>
>>> +
<includeTypes>test-jar</includeTypes>
>>> +
<excludeTransitive>true</excludeTransitive>
>>> +
<outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
>>> + </configuration>
>>> + </execution>
>>> + </executions>
>>> + </plugin>
>>> + </plugins>
>>> + </build>
>>>
>>>
>>> </project>
>>>
>>> Added:
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
>>> URL:
http://svn.apache.org/viewvc/maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java?rev=1134972&view=auto
>>>
==============================================================================
>>> ---
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
(added)
>>> +++
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
Sun Jun 12 19:57:40 2011
>>> @@ -0,0 +1,253 @@
>>> +package org.codehaus.plexus.util;
>>> +
>>> +/*
>>> + * Copyright The Codehaus Foundation.
>>> + *
>>> + * Licensed 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.
>>> + */
>>> +
>>> +import java.util.ArrayList;
>>> +import java.util.Collection;
>>> +import java.util.HashMap;
>>> +import java.util.HashSet;
>>> +import java.util.Iterator;
>>> +import java.util.List;
>>> +import java.util.Map;
>>> +import java.util.NoSuchElementException;
>>> +import java.util.Set;
>>> +
>>> +/**
>>> + * @author <a href="mailto:olamy@codehaus.org">olamy</a>
>>> + * @version $Id: CollectionUtils.java 8055 2009-01-16 12:45:08Z
vsiveton $
>>> + */
>>> +@SuppressWarnings( { "rawtypes", "unchecked" } )
>>> +public class CollectionUtils
>>> +{
>>> + //
----------------------------------------------------------------------
>>> + // Static methods that can probably be moved to a real util class.
>>> + //
----------------------------------------------------------------------
>>> +
>>> + /**
>>> + * Take a dominant and recessive Map and merge the key:value
>>> + * pairs where the recessive Map may add key:value pairs to the
dominant
>>> + * Map but may not override any existing key:value pairs.
>>> + *
>>> + * If we have two Maps, a dominant and recessive, and
>>> + * their respective keys are as follows:
>>> + *
>>> + * dominantMapKeys = { a, b, c, d, e, f }
>>> + * recessiveMapKeys = { a, b, c, x, y, z }
>>> + *
>>> + * Then the result should be the following:
>>> + *
>>> + * resultantKeys = { a, b, c, d, e, f, x, y, z }
>>> + *
>>> + * @param dominantMap Dominant Map.
>>> + * @param recessiveMap Recessive Map.
>>> + * @return The result map with combined dominant and recessive
values.
>>> + */
>>> + public static Map mergeMaps( Map dominantMap, Map recessiveMap )
>>> + {
>>> +
>>> + if ( dominantMap == null && recessiveMap == null )
>>> + {
>>> + return null;
>>> + }
>>> +
>>> + if ( dominantMap != null && recessiveMap == null )
>>> + {
>>> + return dominantMap;
>>> + }
>>> +
>>> + if ( dominantMap == null && recessiveMap != null )
>>> + {
>>> + return recessiveMap;
>>> + }
>>> +
>>> + Map result = new HashMap();
>>> +
>>> + // Grab the keys from the dominant and recessive maps.
>>> + Set dominantMapKeys = dominantMap.keySet();
>>> + Set recessiveMapKeys = recessiveMap.keySet();
>>> +
>>> + // Create the set of keys that will be contributed by the
>>> + // recessive Map by subtracting the intersection of keys
>>> + // from the recessive Map's keys.
>>> + Collection contributingRecessiveKeys =
>>> + CollectionUtils.subtract( recessiveMapKeys,
>>> + CollectionUtils.intersection(
dominantMapKeys, recessiveMapKeys ) );
>>> +
>>> + result.putAll( dominantMap );
>>> +
>>> + // Now take the keys we just found and extract the values from
>>> + // the recessiveMap and put the key:value pairs into the
dominantMap.
>>> + for ( Iterator i = contributingRecessiveKeys.iterator();
i.hasNext(); )
>>> + {
>>> + Object key = i.next();
>>> + result.put( key, recessiveMap.get( key ) );
>>> + }
>>> +
>>> + return result;
>>> + }
>>> +
>>> + /**
>>> + * Take a series of <code>Map</code>s and merge
>>> + * them where the ordering of the array from 0..n
>>> + * is the dominant order.
>>> + *
>>> + * @param maps An array of Maps to merge.
>>> + * @return Map The result Map produced after the merging process.
>>> + */
>>> + public static Map mergeMaps( Map[] maps )
>>> + {
>>> + Map result = null;
>>> +
>>> + if ( maps.length == 0 )
>>> + {
>>> + result = null;
>>> + }
>>> + else if ( maps.length == 1 )
>>> + {
>>> + result = maps[0];
>>> + }
>>> + else
>>> + {
>>> + result = mergeMaps( maps[0], maps[1] );
>>> +
>>> + for ( int i = 2; i < maps.length; i++ )
>>> + {
>>> + result = mergeMaps( result, maps[i] );
>>> + }
>>> + }
>>> +
>>> + return result;
>>> + }
>>> +
>>> + /**
>>> + * Returns a {@link Collection} containing the intersection
>>> + * of the given {@link Collection}s.
>>> + * <p>
>>> + * The cardinality of each element in the returned {@link
Collection}
>>> + * will be equal to the minimum of the cardinality of that element
>>> + * in the two given {@link Collection}s.
>>> + *
>>> + * @see Collection#retainAll
>>> + */
>>> + public static Collection intersection( final Collection a, final
Collection b )
>>> + {
>>> + ArrayList list = new ArrayList();
>>> + Map mapa = getCardinalityMap( a );
>>> + Map mapb = getCardinalityMap( b );
>>> + Set elts = new HashSet( a );
>>> + elts.addAll( b );
>>> + Iterator it = elts.iterator();
>>> + while ( it.hasNext() )
>>> + {
>>> + Object obj = it.next();
>>> + for ( int i = 0,m = Math.min( getFreq( obj, mapa ),
getFreq( obj, mapb ) ); i < m; i++ )
>>> + {
>>> + list.add( obj );
>>> + }
>>> + }
>>> + return list;
>>> + }
>>> +
>>> + /**
>>> + * Returns a {@link Collection} containing <tt><i>a</i> -
<i>b</i></tt>.
>>> + * The cardinality of each element <i>e</i> in the returned {@link
Collection}
>>> + * will be the cardinality of <i>e</i> in <i>a</i> minus the
cardinality
>>> + * of <i>e</i> in <i>b</i>, or zero, whichever is greater.
>>> + *
>>> + * @see Collection#removeAll
>>> + */
>>> + public static Collection subtract( final Collection a, final
Collection b )
>>> + {
>>> + ArrayList list = new ArrayList( a );
>>> + Iterator it = b.iterator();
>>> + while ( it.hasNext() )
>>> + {
>>> + list.remove( it.next() );
>>> + }
>>> + return list;
>>> + }
>>> +
>>> + /**
>>> + * Returns a {@link Map} mapping each unique element in
>>> + * the given {@link Collection} to an {@link Integer}
>>> + * representing the number of occurances of that element
>>> + * in the {@link Collection}.
>>> + * An entry that maps to <tt>null</tt> indicates that the
>>> + * element does not appear in the given {@link Collection}.
>>> + */
>>> + public static Map getCardinalityMap( final Collection col )
>>> + {
>>> + HashMap count = new HashMap();
>>> + Iterator it = col.iterator();
>>> + while ( it.hasNext() )
>>> + {
>>> + Object obj = it.next();
>>> + Integer c = (Integer) ( count.get( obj ) );
>>> + if ( null == c )
>>> + {
>>> + count.put( obj, new Integer( 1 ) );
>>> + }
>>> + else
>>> + {
>>> + count.put( obj, new Integer( c.intValue() + 1 ) );
>>> + }
>>> + }
>>> + return count;
>>> + }
>>> +
>>> + public static List iteratorToList( Iterator it )
>>> + {
>>> + if ( it == null )
>>> + {
>>> + throw new NullPointerException( "it cannot be null." );
>>> + }
>>> +
>>> + List list = new ArrayList();
>>> +
>>> + while ( it.hasNext() )
>>> + {
>>> + list.add( it.next() );
>>> + }
>>> +
>>> + return list;
>>> + }
>>> +
>>> + //
----------------------------------------------------------------------
>>> + //
>>> + //
----------------------------------------------------------------------
>>> +
>>> + private static final int getFreq( final Object obj, final Map
freqMap )
>>> + {
>>> + try
>>> + {
>>> + Object o = freqMap.get( obj );
>>> + if ( o != null ) // minimize NullPointerExceptions
>>> + {
>>> + return ( (Integer) o ).intValue();
>>> + }
>>> + }
>>> + catch ( NullPointerException e )
>>> + {
>>> + // ignored
>>> + }
>>> + catch ( NoSuchElementException e )
>>> + {
>>> + // ignored
>>> + }
>>> + return 0;
>>> + }
>>> +}
>>>
>>> Propchange:
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
>>>
------------------------------------------------------------------------------
>>> svn:eol-style = native
>>>
>>> Propchange:
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
>>>
------------------------------------------------------------------------------
>>> svn:mime-type = text/plain
>>>
>>> Modified:
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml
>>> URL:
http://svn.apache.org/viewvc/maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml?rev=1134972&r1=1134971&r2=1134972&view=diff
>>>
==============================================================================
>>> ---
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml
(original)
>>> +++
maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml Sun
Jun 12 19:57:40 2011
>>> @@ -1,56 +1,55 @@
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> -<project xmlns="http://maven.apache.org/POM/4.0.0"
>>> - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>> - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>> - <modelVersion>4.0.0</modelVersion>
>>> -
>>> - <parent>
>>> - <artifactId>plexus-utils-commons-bridge-parent</artifactId>
>>> - <groupId>org.apache.maven.sandbox</groupId>
>>> - <version>0.1-SNAPSHOT</version>
>>> - </parent>
>>> -
>>> - <artifactId>plexus-utils-tck</artifactId>
>>> -
>>> - <name>Plexus Utils Test Compatibility Kit</name>
>>> - <description>A set of test cases that verify compatibility with the
Plexus Utils API</description>
>>> -
>>> - <dependencies>
>>> - <dependency>
>>> - <groupId>org.codehaus.plexus</groupId>
>>> - <artifactId>plexus-utils</artifactId>
>>> - <version>2.0.7</version>
>>> - <scope>provided</scope>
>>> - </dependency>
>>> - <dependency>
>>> - <groupId>junit</groupId>
>>> - <artifactId>junit</artifactId>
>>> - <version>4.8.2</version>
>>> - <scope>test</scope>
>>> - </dependency>
>>> - <dependency>
>>> - <groupId>com.google.guava</groupId>
>>> - <artifactId>guava</artifactId>
>>> - <version>r09</version>
>>> - <scope>test</scope>
>>> -</dependency>
>>> -
>>> - </dependencies>
>>> -
>>> - <build>
>>> - <plugins>
>>> - <plugin>
>>> - <artifactId>maven-jar-plugin</artifactId>
>>> - <executions>
>>> - <execution>
>>> - <goals>
>>> - <goal>test-jar</goal>
>>> - </goals>
>>> - </execution>
>>> - </executions>
>>> - </plugin>
>>> - </plugins>
>>> - </build>
>>> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
>>> + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>> + <modelVersion>4.0.0</modelVersion>
>>> +
>>> + <parent>
>>> +
<artifactId>plexus-utils-commons-bridge-parent</artifactId>
>>> + <groupId>org.apache.maven.sandbox</groupId>
>>> + <version>0.1-SNAPSHOT</version>
>>> + </parent>
>>> +
>>> + <artifactId>plexus-utils-tck</artifactId>
>>> +
>>> + <name>Plexus Utils Test Compatibility Kit</name>
>>> + <description>A set of test cases that verify compatibility with
the Plexus Utils API</description>
>>> +
>>> + <dependencies>
>>> + <dependency>
>>> + <groupId>org.codehaus.plexus</groupId>
>>> + <artifactId>plexus-utils</artifactId>
>>> + <version>2.0.7</version>
>>> + <scope>provided</scope>
>>> + </dependency>
>>> + <dependency>
>>> + <groupId>junit</groupId>
>>> + <artifactId>junit</artifactId>
>>> + <version>4.8.2</version>
>>> + <scope>test</scope>
>>> + </dependency>
>>> + <dependency>
>>> + <groupId>com.google.guava</groupId>
>>> + <artifactId>guava</artifactId>
>>> + <version>r09</version>
>>> + <scope>test</scope>
>>> + </dependency>
>>> +
>>> + </dependencies>
>>> +
>>> + <build>
>>> + <plugins>
>>> + <plugin>
>>> +
<artifactId>maven-jar-plugin</artifactId>
>>> + <executions>
>>> + <execution>
>>> + <goals>
>>> +
<goal>test-jar</goal>
>>> + </goals>
>>> + </execution>
>>> + </executions>
>>> + </plugin>
>>> + </plugins>
>>> + </build>
>>>
>>>
>>> </project>
>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
>> For additional commands, e-mail: dev-help@maven.apache.org
>>
>>
Re: svn commit: r1134972 - in /maven/sandbox/trunk/plexus-utils-commons-bridge:
plexus-utils-commons-bridge/pom.xml plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
plexus-utils-tck/pom.xml
Posted by Benson Margulies <bi...@gmail.com>.
I assumed that the incoming POM had been formatted with the eclipse
format from the standard maven rules, so that I could run
source/format safely. Apparently I made a bad assumption.
Shall I put it back?
On Sun, Jun 12, 2011 at 4:08 PM, Stephen Connolly
<st...@gmail.com> wrote:
> pom formatting got changed there
>
> On 12 June 2011 20:57, <bi...@apache.org> wrote:
>> Author: bimargulies
>> Date: Sun Jun 12 19:57:40 2011
>> New Revision: 1134972
>>
>> URL: http://svn.apache.org/viewvc?rev=1134972&view=rev
>> Log:
>> Take existing CollectionUtils as new implementation.
>>
>> Added:
>> maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java (with props)
>> Modified:
>> maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml
>> maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml
>>
>> Modified: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml
>> URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml?rev=1134972&r1=1134971&r2=1134972&view=diff
>> ==============================================================================
>> --- maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml (original)
>> +++ maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml Sun Jun 12 19:57:40 2011
>> @@ -1,63 +1,68 @@
>> <?xml version="1.0" encoding="UTF-8"?>
>> -<project xmlns="http://maven.apache.org/POM/4.0.0"
>> - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
>> - <modelVersion>4.0.0</modelVersion>
>> -
>> - <parent>
>> - <artifactId>plexus-utils-commons-bridge-parent</artifactId>
>> - <groupId>org.apache.maven.sandbox</groupId>
>> - <version>0.1-SNAPSHOT</version>
>> - </parent>
>> -
>> - <artifactId>plexus-utils-commons-bridge</artifactId>
>> -
>> - <name>Plexus Utils to Apache Commons bridge</name>
>> - <description>A bridge/shim that implements Plexus Utils using Apache Commons</description>
>> -
>> - <dependencies>
>> - <dependency>
>> - <groupId>commons-io</groupId>
>> - <artifactId>commons-io</artifactId>
>> - </dependency>
>> - <dependency>
>> - <groupId>commons-codec</groupId>
>> - <artifactId>commons-codec</artifactId>
>> - </dependency>
>> - <dependency>
>> - <groupId>junit</groupId>
>> - <artifactId>junit</artifactId>
>> - <scope>test</scope>
>> - </dependency>
>> - <dependency>
>> - <groupId>org.apache.maven.sandbox</groupId>
>> - <artifactId>plexus-utils-tck</artifactId>
>> - <version>${project.parent.version}</version>
>> - <type>test-jar</type>
>> - <scope>test</scope>
>> - </dependency>
>> - </dependencies>
>> -
>> - <build>
>> - <plugins>
>> - <plugin>
>> - <artifactId>maven-dependency-plugin</artifactId>
>> - <executions>
>> - <execution>
>> - <phase>generate-test-resources</phase>
>> - <goals>
>> - <goal>unpack-dependencies</goal>
>> - </goals>
>> - <configuration>
>> - <includeTypes>test-jar</includeTypes>
>> - <excludeTransitive>true</excludeTransitive>
>> - <outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
>> - </configuration>
>> - </execution>
>> - </executions>
>> - </plugin>
>> - </plugins>
>> - </build>
>> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
>> + <modelVersion>4.0.0</modelVersion>
>> +
>> + <parent>
>> + <artifactId>plexus-utils-commons-bridge-parent</artifactId>
>> + <groupId>org.apache.maven.sandbox</groupId>
>> + <version>0.1-SNAPSHOT</version>
>> + </parent>
>> +
>> + <artifactId>plexus-utils-commons-bridge</artifactId>
>> +
>> + <name>Plexus Utils to Apache Commons bridge</name>
>> + <description>A bridge/shim that implements Plexus Utils using Apache Commons</description>
>> +
>> + <dependencies>
>> + <dependency>
>> + <groupId>commons-io</groupId>
>> + <artifactId>commons-io</artifactId>
>> + </dependency>
>> + <dependency>
>> + <groupId>commons-codec</groupId>
>> + <artifactId>commons-codec</artifactId>
>> + </dependency>
>> + <dependency>
>> + <groupId>junit</groupId>
>> + <artifactId>junit</artifactId>
>> + <scope>test</scope>
>> + </dependency>
>> + <dependency>
>> + <groupId>org.apache.maven.sandbox</groupId>
>> + <artifactId>plexus-utils-tck</artifactId>
>> + <version>${project.parent.version}</version>
>> + <type>test-jar</type>
>> + <scope>test</scope>
>> + </dependency>
>> + <dependency>
>> + <groupId>com.google.guava</groupId>
>> + <artifactId>guava</artifactId>
>> + <version>r09</version>
>> + <scope>test</scope>
>> + </dependency>
>> + </dependencies>
>> +
>> + <build>
>> + <plugins>
>> + <plugin>
>> + <artifactId>maven-dependency-plugin</artifactId>
>> + <executions>
>> + <execution>
>> + <phase>generate-test-resources</phase>
>> + <goals>
>> + <goal>unpack-dependencies</goal>
>> + </goals>
>> + <configuration>
>> + <includeTypes>test-jar</includeTypes>
>> + <excludeTransitive>true</excludeTransitive>
>> + <outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
>> + </configuration>
>> + </execution>
>> + </executions>
>> + </plugin>
>> + </plugins>
>> + </build>
>>
>>
>> </project>
>>
>> Added: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
>> URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java?rev=1134972&view=auto
>> ==============================================================================
>> --- maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java (added)
>> +++ maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java Sun Jun 12 19:57:40 2011
>> @@ -0,0 +1,253 @@
>> +package org.codehaus.plexus.util;
>> +
>> +/*
>> + * Copyright The Codehaus Foundation.
>> + *
>> + * Licensed 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.
>> + */
>> +
>> +import java.util.ArrayList;
>> +import java.util.Collection;
>> +import java.util.HashMap;
>> +import java.util.HashSet;
>> +import java.util.Iterator;
>> +import java.util.List;
>> +import java.util.Map;
>> +import java.util.NoSuchElementException;
>> +import java.util.Set;
>> +
>> +/**
>> + * @author <a href="mailto:olamy@codehaus.org">olamy</a>
>> + * @version $Id: CollectionUtils.java 8055 2009-01-16 12:45:08Z vsiveton $
>> + */
>> +@SuppressWarnings( { "rawtypes", "unchecked" } )
>> +public class CollectionUtils
>> +{
>> + // ----------------------------------------------------------------------
>> + // Static methods that can probably be moved to a real util class.
>> + // ----------------------------------------------------------------------
>> +
>> + /**
>> + * Take a dominant and recessive Map and merge the key:value
>> + * pairs where the recessive Map may add key:value pairs to the dominant
>> + * Map but may not override any existing key:value pairs.
>> + *
>> + * If we have two Maps, a dominant and recessive, and
>> + * their respective keys are as follows:
>> + *
>> + * dominantMapKeys = { a, b, c, d, e, f }
>> + * recessiveMapKeys = { a, b, c, x, y, z }
>> + *
>> + * Then the result should be the following:
>> + *
>> + * resultantKeys = { a, b, c, d, e, f, x, y, z }
>> + *
>> + * @param dominantMap Dominant Map.
>> + * @param recessiveMap Recessive Map.
>> + * @return The result map with combined dominant and recessive values.
>> + */
>> + public static Map mergeMaps( Map dominantMap, Map recessiveMap )
>> + {
>> +
>> + if ( dominantMap == null && recessiveMap == null )
>> + {
>> + return null;
>> + }
>> +
>> + if ( dominantMap != null && recessiveMap == null )
>> + {
>> + return dominantMap;
>> + }
>> +
>> + if ( dominantMap == null && recessiveMap != null )
>> + {
>> + return recessiveMap;
>> + }
>> +
>> + Map result = new HashMap();
>> +
>> + // Grab the keys from the dominant and recessive maps.
>> + Set dominantMapKeys = dominantMap.keySet();
>> + Set recessiveMapKeys = recessiveMap.keySet();
>> +
>> + // Create the set of keys that will be contributed by the
>> + // recessive Map by subtracting the intersection of keys
>> + // from the recessive Map's keys.
>> + Collection contributingRecessiveKeys =
>> + CollectionUtils.subtract( recessiveMapKeys,
>> + CollectionUtils.intersection( dominantMapKeys, recessiveMapKeys ) );
>> +
>> + result.putAll( dominantMap );
>> +
>> + // Now take the keys we just found and extract the values from
>> + // the recessiveMap and put the key:value pairs into the dominantMap.
>> + for ( Iterator i = contributingRecessiveKeys.iterator(); i.hasNext(); )
>> + {
>> + Object key = i.next();
>> + result.put( key, recessiveMap.get( key ) );
>> + }
>> +
>> + return result;
>> + }
>> +
>> + /**
>> + * Take a series of <code>Map</code>s and merge
>> + * them where the ordering of the array from 0..n
>> + * is the dominant order.
>> + *
>> + * @param maps An array of Maps to merge.
>> + * @return Map The result Map produced after the merging process.
>> + */
>> + public static Map mergeMaps( Map[] maps )
>> + {
>> + Map result = null;
>> +
>> + if ( maps.length == 0 )
>> + {
>> + result = null;
>> + }
>> + else if ( maps.length == 1 )
>> + {
>> + result = maps[0];
>> + }
>> + else
>> + {
>> + result = mergeMaps( maps[0], maps[1] );
>> +
>> + for ( int i = 2; i < maps.length; i++ )
>> + {
>> + result = mergeMaps( result, maps[i] );
>> + }
>> + }
>> +
>> + return result;
>> + }
>> +
>> + /**
>> + * Returns a {@link Collection} containing the intersection
>> + * of the given {@link Collection}s.
>> + * <p>
>> + * The cardinality of each element in the returned {@link Collection}
>> + * will be equal to the minimum of the cardinality of that element
>> + * in the two given {@link Collection}s.
>> + *
>> + * @see Collection#retainAll
>> + */
>> + public static Collection intersection( final Collection a, final Collection b )
>> + {
>> + ArrayList list = new ArrayList();
>> + Map mapa = getCardinalityMap( a );
>> + Map mapb = getCardinalityMap( b );
>> + Set elts = new HashSet( a );
>> + elts.addAll( b );
>> + Iterator it = elts.iterator();
>> + while ( it.hasNext() )
>> + {
>> + Object obj = it.next();
>> + for ( int i = 0,m = Math.min( getFreq( obj, mapa ), getFreq( obj, mapb ) ); i < m; i++ )
>> + {
>> + list.add( obj );
>> + }
>> + }
>> + return list;
>> + }
>> +
>> + /**
>> + * Returns a {@link Collection} containing <tt><i>a</i> - <i>b</i></tt>.
>> + * The cardinality of each element <i>e</i> in the returned {@link Collection}
>> + * will be the cardinality of <i>e</i> in <i>a</i> minus the cardinality
>> + * of <i>e</i> in <i>b</i>, or zero, whichever is greater.
>> + *
>> + * @see Collection#removeAll
>> + */
>> + public static Collection subtract( final Collection a, final Collection b )
>> + {
>> + ArrayList list = new ArrayList( a );
>> + Iterator it = b.iterator();
>> + while ( it.hasNext() )
>> + {
>> + list.remove( it.next() );
>> + }
>> + return list;
>> + }
>> +
>> + /**
>> + * Returns a {@link Map} mapping each unique element in
>> + * the given {@link Collection} to an {@link Integer}
>> + * representing the number of occurances of that element
>> + * in the {@link Collection}.
>> + * An entry that maps to <tt>null</tt> indicates that the
>> + * element does not appear in the given {@link Collection}.
>> + */
>> + public static Map getCardinalityMap( final Collection col )
>> + {
>> + HashMap count = new HashMap();
>> + Iterator it = col.iterator();
>> + while ( it.hasNext() )
>> + {
>> + Object obj = it.next();
>> + Integer c = (Integer) ( count.get( obj ) );
>> + if ( null == c )
>> + {
>> + count.put( obj, new Integer( 1 ) );
>> + }
>> + else
>> + {
>> + count.put( obj, new Integer( c.intValue() + 1 ) );
>> + }
>> + }
>> + return count;
>> + }
>> +
>> + public static List iteratorToList( Iterator it )
>> + {
>> + if ( it == null )
>> + {
>> + throw new NullPointerException( "it cannot be null." );
>> + }
>> +
>> + List list = new ArrayList();
>> +
>> + while ( it.hasNext() )
>> + {
>> + list.add( it.next() );
>> + }
>> +
>> + return list;
>> + }
>> +
>> + // ----------------------------------------------------------------------
>> + //
>> + // ----------------------------------------------------------------------
>> +
>> + private static final int getFreq( final Object obj, final Map freqMap )
>> + {
>> + try
>> + {
>> + Object o = freqMap.get( obj );
>> + if ( o != null ) // minimize NullPointerExceptions
>> + {
>> + return ( (Integer) o ).intValue();
>> + }
>> + }
>> + catch ( NullPointerException e )
>> + {
>> + // ignored
>> + }
>> + catch ( NoSuchElementException e )
>> + {
>> + // ignored
>> + }
>> + return 0;
>> + }
>> +}
>>
>> Propchange: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
>> ------------------------------------------------------------------------------
>> svn:eol-style = native
>>
>> Propchange: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
>> ------------------------------------------------------------------------------
>> svn:mime-type = text/plain
>>
>> Modified: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml
>> URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml?rev=1134972&r1=1134971&r2=1134972&view=diff
>> ==============================================================================
>> --- maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml (original)
>> +++ maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml Sun Jun 12 19:57:40 2011
>> @@ -1,56 +1,55 @@
>> <?xml version="1.0" encoding="UTF-8"?>
>> -<project xmlns="http://maven.apache.org/POM/4.0.0"
>> - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
>> - <modelVersion>4.0.0</modelVersion>
>> -
>> - <parent>
>> - <artifactId>plexus-utils-commons-bridge-parent</artifactId>
>> - <groupId>org.apache.maven.sandbox</groupId>
>> - <version>0.1-SNAPSHOT</version>
>> - </parent>
>> -
>> - <artifactId>plexus-utils-tck</artifactId>
>> -
>> - <name>Plexus Utils Test Compatibility Kit</name>
>> - <description>A set of test cases that verify compatibility with the Plexus Utils API</description>
>> -
>> - <dependencies>
>> - <dependency>
>> - <groupId>org.codehaus.plexus</groupId>
>> - <artifactId>plexus-utils</artifactId>
>> - <version>2.0.7</version>
>> - <scope>provided</scope>
>> - </dependency>
>> - <dependency>
>> - <groupId>junit</groupId>
>> - <artifactId>junit</artifactId>
>> - <version>4.8.2</version>
>> - <scope>test</scope>
>> - </dependency>
>> - <dependency>
>> - <groupId>com.google.guava</groupId>
>> - <artifactId>guava</artifactId>
>> - <version>r09</version>
>> - <scope>test</scope>
>> -</dependency>
>> -
>> - </dependencies>
>> -
>> - <build>
>> - <plugins>
>> - <plugin>
>> - <artifactId>maven-jar-plugin</artifactId>
>> - <executions>
>> - <execution>
>> - <goals>
>> - <goal>test-jar</goal>
>> - </goals>
>> - </execution>
>> - </executions>
>> - </plugin>
>> - </plugins>
>> - </build>
>> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
>> + <modelVersion>4.0.0</modelVersion>
>> +
>> + <parent>
>> + <artifactId>plexus-utils-commons-bridge-parent</artifactId>
>> + <groupId>org.apache.maven.sandbox</groupId>
>> + <version>0.1-SNAPSHOT</version>
>> + </parent>
>> +
>> + <artifactId>plexus-utils-tck</artifactId>
>> +
>> + <name>Plexus Utils Test Compatibility Kit</name>
>> + <description>A set of test cases that verify compatibility with the Plexus Utils API</description>
>> +
>> + <dependencies>
>> + <dependency>
>> + <groupId>org.codehaus.plexus</groupId>
>> + <artifactId>plexus-utils</artifactId>
>> + <version>2.0.7</version>
>> + <scope>provided</scope>
>> + </dependency>
>> + <dependency>
>> + <groupId>junit</groupId>
>> + <artifactId>junit</artifactId>
>> + <version>4.8.2</version>
>> + <scope>test</scope>
>> + </dependency>
>> + <dependency>
>> + <groupId>com.google.guava</groupId>
>> + <artifactId>guava</artifactId>
>> + <version>r09</version>
>> + <scope>test</scope>
>> + </dependency>
>> +
>> + </dependencies>
>> +
>> + <build>
>> + <plugins>
>> + <plugin>
>> + <artifactId>maven-jar-plugin</artifactId>
>> + <executions>
>> + <execution>
>> + <goals>
>> + <goal>test-jar</goal>
>> + </goals>
>> + </execution>
>> + </executions>
>> + </plugin>
>> + </plugins>
>> + </build>
>>
>>
>> </project>
>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>
>
Re: svn commit: r1134972 - in /maven/sandbox/trunk/plexus-utils-commons-bridge:
plexus-utils-commons-bridge/pom.xml plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
plexus-utils-tck/pom.xml
Posted by Stephen Connolly <st...@gmail.com>.
pom formatting got changed there
On 12 June 2011 20:57, <bi...@apache.org> wrote:
> Author: bimargulies
> Date: Sun Jun 12 19:57:40 2011
> New Revision: 1134972
>
> URL: http://svn.apache.org/viewvc?rev=1134972&view=rev
> Log:
> Take existing CollectionUtils as new implementation.
>
> Added:
> maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java (with props)
> Modified:
> maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml
> maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml
>
> Modified: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml
> URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml?rev=1134972&r1=1134971&r2=1134972&view=diff
> ==============================================================================
> --- maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml (original)
> +++ maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/pom.xml Sun Jun 12 19:57:40 2011
> @@ -1,63 +1,68 @@
> <?xml version="1.0" encoding="UTF-8"?>
> -<project xmlns="http://maven.apache.org/POM/4.0.0"
> - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
> - <modelVersion>4.0.0</modelVersion>
> -
> - <parent>
> - <artifactId>plexus-utils-commons-bridge-parent</artifactId>
> - <groupId>org.apache.maven.sandbox</groupId>
> - <version>0.1-SNAPSHOT</version>
> - </parent>
> -
> - <artifactId>plexus-utils-commons-bridge</artifactId>
> -
> - <name>Plexus Utils to Apache Commons bridge</name>
> - <description>A bridge/shim that implements Plexus Utils using Apache Commons</description>
> -
> - <dependencies>
> - <dependency>
> - <groupId>commons-io</groupId>
> - <artifactId>commons-io</artifactId>
> - </dependency>
> - <dependency>
> - <groupId>commons-codec</groupId>
> - <artifactId>commons-codec</artifactId>
> - </dependency>
> - <dependency>
> - <groupId>junit</groupId>
> - <artifactId>junit</artifactId>
> - <scope>test</scope>
> - </dependency>
> - <dependency>
> - <groupId>org.apache.maven.sandbox</groupId>
> - <artifactId>plexus-utils-tck</artifactId>
> - <version>${project.parent.version}</version>
> - <type>test-jar</type>
> - <scope>test</scope>
> - </dependency>
> - </dependencies>
> -
> - <build>
> - <plugins>
> - <plugin>
> - <artifactId>maven-dependency-plugin</artifactId>
> - <executions>
> - <execution>
> - <phase>generate-test-resources</phase>
> - <goals>
> - <goal>unpack-dependencies</goal>
> - </goals>
> - <configuration>
> - <includeTypes>test-jar</includeTypes>
> - <excludeTransitive>true</excludeTransitive>
> - <outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
> - </configuration>
> - </execution>
> - </executions>
> - </plugin>
> - </plugins>
> - </build>
> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
> + <modelVersion>4.0.0</modelVersion>
> +
> + <parent>
> + <artifactId>plexus-utils-commons-bridge-parent</artifactId>
> + <groupId>org.apache.maven.sandbox</groupId>
> + <version>0.1-SNAPSHOT</version>
> + </parent>
> +
> + <artifactId>plexus-utils-commons-bridge</artifactId>
> +
> + <name>Plexus Utils to Apache Commons bridge</name>
> + <description>A bridge/shim that implements Plexus Utils using Apache Commons</description>
> +
> + <dependencies>
> + <dependency>
> + <groupId>commons-io</groupId>
> + <artifactId>commons-io</artifactId>
> + </dependency>
> + <dependency>
> + <groupId>commons-codec</groupId>
> + <artifactId>commons-codec</artifactId>
> + </dependency>
> + <dependency>
> + <groupId>junit</groupId>
> + <artifactId>junit</artifactId>
> + <scope>test</scope>
> + </dependency>
> + <dependency>
> + <groupId>org.apache.maven.sandbox</groupId>
> + <artifactId>plexus-utils-tck</artifactId>
> + <version>${project.parent.version}</version>
> + <type>test-jar</type>
> + <scope>test</scope>
> + </dependency>
> + <dependency>
> + <groupId>com.google.guava</groupId>
> + <artifactId>guava</artifactId>
> + <version>r09</version>
> + <scope>test</scope>
> + </dependency>
> + </dependencies>
> +
> + <build>
> + <plugins>
> + <plugin>
> + <artifactId>maven-dependency-plugin</artifactId>
> + <executions>
> + <execution>
> + <phase>generate-test-resources</phase>
> + <goals>
> + <goal>unpack-dependencies</goal>
> + </goals>
> + <configuration>
> + <includeTypes>test-jar</includeTypes>
> + <excludeTransitive>true</excludeTransitive>
> + <outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
> + </configuration>
> + </execution>
> + </executions>
> + </plugin>
> + </plugins>
> + </build>
>
>
> </project>
>
> Added: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
> URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java?rev=1134972&view=auto
> ==============================================================================
> --- maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java (added)
> +++ maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java Sun Jun 12 19:57:40 2011
> @@ -0,0 +1,253 @@
> +package org.codehaus.plexus.util;
> +
> +/*
> + * Copyright The Codehaus Foundation.
> + *
> + * Licensed 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.
> + */
> +
> +import java.util.ArrayList;
> +import java.util.Collection;
> +import java.util.HashMap;
> +import java.util.HashSet;
> +import java.util.Iterator;
> +import java.util.List;
> +import java.util.Map;
> +import java.util.NoSuchElementException;
> +import java.util.Set;
> +
> +/**
> + * @author <a href="mailto:olamy@codehaus.org">olamy</a>
> + * @version $Id: CollectionUtils.java 8055 2009-01-16 12:45:08Z vsiveton $
> + */
> +@SuppressWarnings( { "rawtypes", "unchecked" } )
> +public class CollectionUtils
> +{
> + // ----------------------------------------------------------------------
> + // Static methods that can probably be moved to a real util class.
> + // ----------------------------------------------------------------------
> +
> + /**
> + * Take a dominant and recessive Map and merge the key:value
> + * pairs where the recessive Map may add key:value pairs to the dominant
> + * Map but may not override any existing key:value pairs.
> + *
> + * If we have two Maps, a dominant and recessive, and
> + * their respective keys are as follows:
> + *
> + * dominantMapKeys = { a, b, c, d, e, f }
> + * recessiveMapKeys = { a, b, c, x, y, z }
> + *
> + * Then the result should be the following:
> + *
> + * resultantKeys = { a, b, c, d, e, f, x, y, z }
> + *
> + * @param dominantMap Dominant Map.
> + * @param recessiveMap Recessive Map.
> + * @return The result map with combined dominant and recessive values.
> + */
> + public static Map mergeMaps( Map dominantMap, Map recessiveMap )
> + {
> +
> + if ( dominantMap == null && recessiveMap == null )
> + {
> + return null;
> + }
> +
> + if ( dominantMap != null && recessiveMap == null )
> + {
> + return dominantMap;
> + }
> +
> + if ( dominantMap == null && recessiveMap != null )
> + {
> + return recessiveMap;
> + }
> +
> + Map result = new HashMap();
> +
> + // Grab the keys from the dominant and recessive maps.
> + Set dominantMapKeys = dominantMap.keySet();
> + Set recessiveMapKeys = recessiveMap.keySet();
> +
> + // Create the set of keys that will be contributed by the
> + // recessive Map by subtracting the intersection of keys
> + // from the recessive Map's keys.
> + Collection contributingRecessiveKeys =
> + CollectionUtils.subtract( recessiveMapKeys,
> + CollectionUtils.intersection( dominantMapKeys, recessiveMapKeys ) );
> +
> + result.putAll( dominantMap );
> +
> + // Now take the keys we just found and extract the values from
> + // the recessiveMap and put the key:value pairs into the dominantMap.
> + for ( Iterator i = contributingRecessiveKeys.iterator(); i.hasNext(); )
> + {
> + Object key = i.next();
> + result.put( key, recessiveMap.get( key ) );
> + }
> +
> + return result;
> + }
> +
> + /**
> + * Take a series of <code>Map</code>s and merge
> + * them where the ordering of the array from 0..n
> + * is the dominant order.
> + *
> + * @param maps An array of Maps to merge.
> + * @return Map The result Map produced after the merging process.
> + */
> + public static Map mergeMaps( Map[] maps )
> + {
> + Map result = null;
> +
> + if ( maps.length == 0 )
> + {
> + result = null;
> + }
> + else if ( maps.length == 1 )
> + {
> + result = maps[0];
> + }
> + else
> + {
> + result = mergeMaps( maps[0], maps[1] );
> +
> + for ( int i = 2; i < maps.length; i++ )
> + {
> + result = mergeMaps( result, maps[i] );
> + }
> + }
> +
> + return result;
> + }
> +
> + /**
> + * Returns a {@link Collection} containing the intersection
> + * of the given {@link Collection}s.
> + * <p>
> + * The cardinality of each element in the returned {@link Collection}
> + * will be equal to the minimum of the cardinality of that element
> + * in the two given {@link Collection}s.
> + *
> + * @see Collection#retainAll
> + */
> + public static Collection intersection( final Collection a, final Collection b )
> + {
> + ArrayList list = new ArrayList();
> + Map mapa = getCardinalityMap( a );
> + Map mapb = getCardinalityMap( b );
> + Set elts = new HashSet( a );
> + elts.addAll( b );
> + Iterator it = elts.iterator();
> + while ( it.hasNext() )
> + {
> + Object obj = it.next();
> + for ( int i = 0,m = Math.min( getFreq( obj, mapa ), getFreq( obj, mapb ) ); i < m; i++ )
> + {
> + list.add( obj );
> + }
> + }
> + return list;
> + }
> +
> + /**
> + * Returns a {@link Collection} containing <tt><i>a</i> - <i>b</i></tt>.
> + * The cardinality of each element <i>e</i> in the returned {@link Collection}
> + * will be the cardinality of <i>e</i> in <i>a</i> minus the cardinality
> + * of <i>e</i> in <i>b</i>, or zero, whichever is greater.
> + *
> + * @see Collection#removeAll
> + */
> + public static Collection subtract( final Collection a, final Collection b )
> + {
> + ArrayList list = new ArrayList( a );
> + Iterator it = b.iterator();
> + while ( it.hasNext() )
> + {
> + list.remove( it.next() );
> + }
> + return list;
> + }
> +
> + /**
> + * Returns a {@link Map} mapping each unique element in
> + * the given {@link Collection} to an {@link Integer}
> + * representing the number of occurances of that element
> + * in the {@link Collection}.
> + * An entry that maps to <tt>null</tt> indicates that the
> + * element does not appear in the given {@link Collection}.
> + */
> + public static Map getCardinalityMap( final Collection col )
> + {
> + HashMap count = new HashMap();
> + Iterator it = col.iterator();
> + while ( it.hasNext() )
> + {
> + Object obj = it.next();
> + Integer c = (Integer) ( count.get( obj ) );
> + if ( null == c )
> + {
> + count.put( obj, new Integer( 1 ) );
> + }
> + else
> + {
> + count.put( obj, new Integer( c.intValue() + 1 ) );
> + }
> + }
> + return count;
> + }
> +
> + public static List iteratorToList( Iterator it )
> + {
> + if ( it == null )
> + {
> + throw new NullPointerException( "it cannot be null." );
> + }
> +
> + List list = new ArrayList();
> +
> + while ( it.hasNext() )
> + {
> + list.add( it.next() );
> + }
> +
> + return list;
> + }
> +
> + // ----------------------------------------------------------------------
> + //
> + // ----------------------------------------------------------------------
> +
> + private static final int getFreq( final Object obj, final Map freqMap )
> + {
> + try
> + {
> + Object o = freqMap.get( obj );
> + if ( o != null ) // minimize NullPointerExceptions
> + {
> + return ( (Integer) o ).intValue();
> + }
> + }
> + catch ( NullPointerException e )
> + {
> + // ignored
> + }
> + catch ( NoSuchElementException e )
> + {
> + // ignored
> + }
> + return 0;
> + }
> +}
>
> Propchange: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
> ------------------------------------------------------------------------------
> svn:eol-style = native
>
> Propchange: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-commons-bridge/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
> ------------------------------------------------------------------------------
> svn:mime-type = text/plain
>
> Modified: maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml
> URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml?rev=1134972&r1=1134971&r2=1134972&view=diff
> ==============================================================================
> --- maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml (original)
> +++ maven/sandbox/trunk/plexus-utils-commons-bridge/plexus-utils-tck/pom.xml Sun Jun 12 19:57:40 2011
> @@ -1,56 +1,55 @@
> <?xml version="1.0" encoding="UTF-8"?>
> -<project xmlns="http://maven.apache.org/POM/4.0.0"
> - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
> - <modelVersion>4.0.0</modelVersion>
> -
> - <parent>
> - <artifactId>plexus-utils-commons-bridge-parent</artifactId>
> - <groupId>org.apache.maven.sandbox</groupId>
> - <version>0.1-SNAPSHOT</version>
> - </parent>
> -
> - <artifactId>plexus-utils-tck</artifactId>
> -
> - <name>Plexus Utils Test Compatibility Kit</name>
> - <description>A set of test cases that verify compatibility with the Plexus Utils API</description>
> -
> - <dependencies>
> - <dependency>
> - <groupId>org.codehaus.plexus</groupId>
> - <artifactId>plexus-utils</artifactId>
> - <version>2.0.7</version>
> - <scope>provided</scope>
> - </dependency>
> - <dependency>
> - <groupId>junit</groupId>
> - <artifactId>junit</artifactId>
> - <version>4.8.2</version>
> - <scope>test</scope>
> - </dependency>
> - <dependency>
> - <groupId>com.google.guava</groupId>
> - <artifactId>guava</artifactId>
> - <version>r09</version>
> - <scope>test</scope>
> -</dependency>
> -
> - </dependencies>
> -
> - <build>
> - <plugins>
> - <plugin>
> - <artifactId>maven-jar-plugin</artifactId>
> - <executions>
> - <execution>
> - <goals>
> - <goal>test-jar</goal>
> - </goals>
> - </execution>
> - </executions>
> - </plugin>
> - </plugins>
> - </build>
> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
> + <modelVersion>4.0.0</modelVersion>
> +
> + <parent>
> + <artifactId>plexus-utils-commons-bridge-parent</artifactId>
> + <groupId>org.apache.maven.sandbox</groupId>
> + <version>0.1-SNAPSHOT</version>
> + </parent>
> +
> + <artifactId>plexus-utils-tck</artifactId>
> +
> + <name>Plexus Utils Test Compatibility Kit</name>
> + <description>A set of test cases that verify compatibility with the Plexus Utils API</description>
> +
> + <dependencies>
> + <dependency>
> + <groupId>org.codehaus.plexus</groupId>
> + <artifactId>plexus-utils</artifactId>
> + <version>2.0.7</version>
> + <scope>provided</scope>
> + </dependency>
> + <dependency>
> + <groupId>junit</groupId>
> + <artifactId>junit</artifactId>
> + <version>4.8.2</version>
> + <scope>test</scope>
> + </dependency>
> + <dependency>
> + <groupId>com.google.guava</groupId>
> + <artifactId>guava</artifactId>
> + <version>r09</version>
> + <scope>test</scope>
> + </dependency>
> +
> + </dependencies>
> +
> + <build>
> + <plugins>
> + <plugin>
> + <artifactId>maven-jar-plugin</artifactId>
> + <executions>
> + <execution>
> + <goals>
> + <goal>test-jar</goal>
> + </goals>
> + </execution>
> + </executions>
> + </plugin>
> + </plugins>
> + </build>
>
>
> </project>
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org