/******************************************************************************* * Copyright (c) 2010-present Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Stuart McCulloch (Sonatype, Inc.) - initial API and implementation * * Minimal facade required to be binary-compatible with legacy Plexus API *******************************************************************************/ package org.codehaus.plexus.configuration.xml; import org.codehaus.plexus.configuration.DefaultPlexusConfiguration; import org.codehaus.plexus.configuration.PlexusConfiguration; import org.codehaus.plexus.util.xml.Xpp3Dom; public final class XmlPlexusConfiguration extends DefaultPlexusConfiguration { // ---------------------------------------------------------------------- // Constructors // ---------------------------------------------------------------------- public XmlPlexusConfiguration( final String name ) { super( name ); } public XmlPlexusConfiguration( final Xpp3Dom dom ) { super( dom.getName(), dom.getValue() ); for ( final String attribute : dom.getAttributeNames() ) { setAttribute( attribute, dom.getAttribute( attribute ) ); } for ( final Xpp3Dom child : dom.getChildren() ) { addChild( new XmlPlexusConfiguration( child ) ); } } @Override public String toString() { final StringBuilder buf = new StringBuilder().append( '<' ).append( getName() ); for ( final String a : getAttributeNames() ) { buf.append( ' ' ).append( a ).append( "=\"" ).append( getAttribute( a ) ).append( '"' ); } if ( getChildCount() > 0 ) { buf.append( '>' ); for ( int i = 0, size = getChildCount(); i < size; i++ ) { buf.append( getChild( i ) ); } buf.append( "</" ).append( getName() ).append( '>' ); } else if ( null != getValue() ) { buf.append( '>' ).append( getValue() ).append( "</" ).append( getName() ).append( '>' ); } else { buf.append( "/>" ); } return buf.append( '\n' ).toString(); } // ---------------------------------------------------------------------- // Customizable methods // ---------------------------------------------------------------------- @Override protected PlexusConfiguration createChild( final String name ) { return new XmlPlexusConfiguration( name ); } }