/******************************************************************************
* Copyright (c) 2016 Oracle
* 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:
* Konstantin Komissarchik - initial implementation
******************************************************************************/
package org.eclipse.sapphire.modeling.xml;
import javax.xml.namespace.QName;
import org.eclipse.sapphire.LocalizableText;
import org.eclipse.sapphire.Text;
/**
* @author <a href="mailto:konstantin.komissarchik@oracle.com">Konstantin Komissarchik</a>
*/
public abstract class XmlNamespaceResolver
{
@Text( "Could not resolve namespace for {0} node name." )
private static LocalizableText couldNotResolveNamespace;
static
{
LocalizableText.init( XmlNamespaceResolver.class );
}
public abstract String resolve( final String prefix );
public final QName createQualifiedName( final String name )
{
String prefix = "";
String localName = null;
final int colon = name.indexOf( ':' );
if( colon == -1 )
{
localName = name;
}
else
{
prefix = name.substring( 0, colon );
localName = name.substring( colon + 1 );
}
String namespace = resolve( prefix );
if( prefix.length() != 0 && ( namespace == null || namespace.length() == 0 ) )
{
final String msg = couldNotResolveNamespace.format( name );
throw new IllegalArgumentException( msg );
}
return new QName( namespace, localName, prefix );
}
}