You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2014/10/13 21:19:26 UTC
svn commit: r1631512 - in
/maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml:
Xpp3Dom.java Xpp3DomUtils.java
Author: krosenvold
Date: Mon Oct 13 19:19:26 2014
New Revision: 1631512
URL: http://svn.apache.org/r1631512
Log:
[MSHARED-257] Extracted Xpp3DomUtils
Added:
maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml/Xpp3DomUtils.java
Modified:
maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml/Xpp3Dom.java
Modified: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml/Xpp3Dom.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml/Xpp3Dom.java?rev=1631512&r1=1631511&r2=1631512&view=diff
==============================================================================
--- maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml/Xpp3Dom.java (original)
+++ maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml/Xpp3Dom.java Mon Oct 13 19:19:26 2014
@@ -46,9 +46,9 @@ public class Xpp3Dom
private Map<String, String> attributes; // plexus: protected
- private final List<Xpp3Dom> childList; // plexus: protected
+ final List<Xpp3Dom> childList; // plexus: protected
- private final Map<String, Xpp3Dom> childMap; // plexus: protected
+ final Map<String, Xpp3Dom> childMap; // plexus: protected
private Xpp3Dom parent; // plexus: protected
@@ -188,7 +188,7 @@ public class Xpp3Dom
return children.toArray( new Xpp3Dom[children.size()] );
}
- private List<Xpp3Dom> getChildrenList( String name )
+ List<Xpp3Dom> getChildrenList( String name )
{
if ( childList == null )
{
@@ -241,102 +241,17 @@ public class Xpp3Dom
private static Xpp3Dom merge( Xpp3Dom dominant, Xpp3Dom recessive, Boolean childMergeOverride )
{
- if ( recessive == null || isCombineSelfOverride( dominant ) )
- {
- return dominant;
- }
-
- if ( isEmpty( dominant.getValue() ) )
- {
- dominant.setValue( recessive.getValue() );
- }
-
- for ( String attr : recessive.getAttributeNames() )
- {
- if ( isEmpty( dominant.getAttribute( attr ) ) )
- {
- dominant.setAttribute( attr, recessive.getAttribute( attr ) );
- }
- }
-
- if ( recessive.getChildCount() > 0 )
- {
- boolean mergeChildren = isMergeChildren( dominant, childMergeOverride );
-
- if ( mergeChildren )
- {
- Map<String, Iterator<Xpp3Dom>> commonChildren = getCommonChildren( dominant, recessive );
- for ( Xpp3Dom recessiveChild : recessive )
- {
- Iterator<Xpp3Dom> it = commonChildren.get( recessiveChild.getName() );
- if ( it == null )
- {
- dominant.addChild( new Xpp3Dom( recessiveChild ) );
- }
- else if ( it.hasNext() )
- {
- Xpp3Dom dominantChild = it.next();
- merge( dominantChild, recessiveChild, childMergeOverride );
- }
- }
- }
- else
- {
- Xpp3Dom[] dominantChildren = dominant.getChildren();
- dominant.childList.clear();
- for ( Xpp3Dom child : recessive )
- {
- dominant.addChild( new Xpp3Dom( child ) );
- }
-
- for ( Xpp3Dom aDominantChildren : dominantChildren )
- {
- dominant.addChild( aDominantChildren );
- }
- }
- }
- return dominant;
- }
-
- private static Map<String, Iterator<Xpp3Dom>> getCommonChildren( Xpp3Dom dominant, Xpp3Dom recessive )
- {
- Map<String, Iterator<Xpp3Dom>> commonChildren = new HashMap<String, Iterator<Xpp3Dom>>();
-
- for ( String childName : recessive.childMap.keySet() )
- {
- List<Xpp3Dom> dominantChildren = dominant.getChildrenList( childName );
- if ( dominantChildren.size() > 0 )
- {
- commonChildren.put( childName, dominantChildren.iterator() );
- }
- }
- return commonChildren;
- }
-
- private static boolean isMergeChildren( Xpp3Dom dominant, Boolean override )
- {
- return override != null ? override : !isMergeChildren( dominant );
- }
-
- private static boolean isMergeChildren( Xpp3Dom dominant )
- {
- return CHILDREN_COMBINATION_APPEND.equals( dominant.getAttribute( CHILDREN_COMBINATION_MODE_ATTRIBUTE ) );
- }
-
- private static boolean isCombineSelfOverride( Xpp3Dom xpp3Dom )
- {
- String selfMergeMode = xpp3Dom.getAttribute( SELF_COMBINATION_MODE_ATTRIBUTE );
- return SELF_COMBINATION_OVERRIDE.equals( selfMergeMode );
+ return Xpp3DomUtils.merge( dominant, recessive, childMergeOverride );
}
public static Xpp3Dom mergeXpp3Dom( Xpp3Dom dominant, Xpp3Dom recessive, Boolean childMergeOverride )
{
- return dominant != null ? merge( dominant, recessive, childMergeOverride ) : recessive;
+ return Xpp3DomUtils.mergeXpp3Dom( dominant, recessive, childMergeOverride );
}
public static Xpp3Dom mergeXpp3Dom( Xpp3Dom dominant, Xpp3Dom recessive )
{
- return dominant != null ? merge( dominant, recessive, null ) : recessive;
+ return Xpp3DomUtils.mergeXpp3Dom( dominant, recessive );
}
public boolean equals( Object obj )
Added: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml/Xpp3DomUtils.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml/Xpp3DomUtils.java?rev=1631512&view=auto
==============================================================================
--- maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml/Xpp3DomUtils.java (added)
+++ maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/xml/Xpp3DomUtils.java Mon Oct 13 19:19:26 2014
@@ -0,0 +1,138 @@
+package org.apache.maven.shared.utils.xml;
+
+/*
+ * 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.
+ */
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+public class Xpp3DomUtils
+{
+ public static Xpp3Dom mergeXpp3Dom( Xpp3Dom dominant, Xpp3Dom recessive, Boolean childMergeOverride )
+ {
+ return dominant != null ? merge( dominant, recessive, childMergeOverride ) : recessive;
+ }
+
+ public static Xpp3Dom mergeXpp3Dom( Xpp3Dom dominant, Xpp3Dom recessive )
+ {
+ return dominant != null ? merge( dominant, recessive, null ) : recessive;
+ }
+
+ public static Xpp3Dom merge( Xpp3Dom dominant, Xpp3Dom recessive, Boolean childMergeOverride )
+ {
+ if ( recessive == null || isCombineSelfOverride( dominant ) )
+ {
+ return dominant;
+ }
+
+ if ( isEmpty( dominant.getValue() ) )
+ {
+ dominant.setValue( recessive.getValue() );
+ }
+
+ for ( String attr : recessive.getAttributeNames() )
+ {
+ if ( isEmpty( dominant.getAttribute( attr ) ) )
+ {
+ dominant.setAttribute( attr, recessive.getAttribute( attr ) );
+ }
+ }
+
+ if ( recessive.getChildCount() > 0 )
+ {
+ boolean mergeChildren = isMergeChildren( dominant, childMergeOverride );
+
+ if ( mergeChildren )
+ {
+ Map<String, Iterator<Xpp3Dom>> commonChildren = getCommonChildren( dominant, recessive );
+ for ( Xpp3Dom recessiveChild : recessive )
+ {
+ Iterator<Xpp3Dom> it = commonChildren.get( recessiveChild.getName() );
+ if ( it == null )
+ {
+ dominant.addChild( new Xpp3Dom( recessiveChild ) );
+ }
+ else if ( it.hasNext() )
+ {
+ Xpp3Dom dominantChild = it.next();
+ merge( dominantChild, recessiveChild, childMergeOverride );
+ }
+ }
+ }
+ else
+ {
+ Xpp3Dom[] dominantChildren = dominant.getChildren();
+ dominant.childList.clear();
+ for ( Xpp3Dom child : recessive )
+ {
+ dominant.addChild( new Xpp3Dom( child ) );
+ }
+
+ for ( Xpp3Dom aDominantChildren : dominantChildren )
+ {
+ dominant.addChild( aDominantChildren );
+ }
+ }
+ }
+ return dominant;
+ }
+
+ private static Map<String, Iterator<Xpp3Dom>> getCommonChildren( Xpp3Dom dominant, Xpp3Dom recessive )
+ {
+ Map<String, Iterator<Xpp3Dom>> commonChildren = new HashMap<String, Iterator<Xpp3Dom>>();
+
+ for ( String childName : recessive.childMap.keySet() )
+ {
+ List<Xpp3Dom> dominantChildren = dominant.getChildrenList( childName );
+ if ( dominantChildren.size() > 0 )
+ {
+ commonChildren.put( childName, dominantChildren.iterator() );
+ }
+ }
+ return commonChildren;
+ }
+
+ private static boolean isCombineSelfOverride( Xpp3Dom xpp3Dom )
+ {
+ String selfMergeMode = xpp3Dom.getAttribute( Xpp3Dom.SELF_COMBINATION_MODE_ATTRIBUTE );
+ return Xpp3Dom.SELF_COMBINATION_OVERRIDE.equals( selfMergeMode );
+ }
+
+ private static boolean isMergeChildren( Xpp3Dom dominant, Boolean override )
+ {
+ return override != null ? override : !isMergeChildren( dominant );
+ }
+
+ private static boolean isMergeChildren( Xpp3Dom dominant )
+ {
+ return Xpp3Dom.CHILDREN_COMBINATION_APPEND.equals(
+ dominant.getAttribute( Xpp3Dom.CHILDREN_COMBINATION_MODE_ATTRIBUTE ) );
+ }
+
+ public static boolean isEmpty( String str )
+ {
+ return str == null || str.trim().length() == 0;
+ }
+
+
+
+
+}