You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2009/07/23 00:07:55 UTC

svn commit: r796892 - in /maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/container: ./ ContainerUtils.java

Author: jdcasey
Date: Wed Jul 22 22:07:55 2009
New Revision: 796892

URL: http://svn.apache.org/viewvc?rev=796892&view=rev
Log:
missed a file.

Added:
    maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/container/
    maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/container/ContainerUtils.java

Added: maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/container/ContainerUtils.java
URL: http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/container/ContainerUtils.java?rev=796892&view=auto
==============================================================================
--- maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/container/ContainerUtils.java (added)
+++ maven/maven-2/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/container/ContainerUtils.java Wed Jul 22 22:07:55 2009
@@ -0,0 +1,53 @@
+package org.apache.maven.container;
+
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.component.repository.ComponentDescriptor;
+
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+
+public class ContainerUtils
+{
+    
+    public static Set<String> findChildComponentHints( String role, PlexusContainer parent, PlexusContainer child )
+    {
+        return findChildComponents( role, parent, child ).keySet();
+    }
+    
+    @SuppressWarnings( "unchecked" )
+    public static Map<String, ComponentDescriptor> findChildComponents( String role, PlexusContainer parent, PlexusContainer child )
+    {
+        Map<String, ComponentDescriptor> parentComponents = parent.getComponentDescriptorMap( role );
+        if ( parentComponents != null )
+        {
+            parentComponents = new LinkedHashMap<String, ComponentDescriptor>( parentComponents );
+        }
+        
+        Map<String, ComponentDescriptor> childComponents = child.getComponentDescriptorMap( role );
+        if ( childComponents == null )
+        {
+            return new HashMap<String, ComponentDescriptor>();
+        }
+        else
+        {
+            childComponents = new LinkedHashMap<String, ComponentDescriptor>( childComponents );
+            if ( parentComponents != null && !parentComponents.isEmpty() )
+            {
+                for ( Map.Entry<String, ComponentDescriptor> entry : parentComponents.entrySet() )
+                {
+                    String hint = entry.getKey();
+                    
+                    if ( childComponents.containsKey( hint ) && entry.getValue() == childComponents.get( hint ) )
+                    {
+                        childComponents.remove( hint );
+                    }
+                }
+            }
+        }
+        
+        return childComponents;
+    }
+
+}