getLogger().trace( "reading resource definition" );
logger.trace( "reading resource definition" );
    public Part build(       Info information, Classpath classpath, Element strategy, Resolver resolver )       throws IOException    {        ClassLoader anchor = getAnchorClassLoader();        TypeInfo info = strategy.getSchemaTypeInfo();        String namespace = info.getTypeNamespace();        if( PART_XSD_URI.equals( namespace ) )        {            // this is either a plugin or a resource                        Logger logger = getLogger();            String name = info.getTypeName();            if( "plugin".equals( name ) )            {                if( getLogger().isTraceEnabled() )                {                    getLogger().trace( "reading plugin definition" );                }                String classname = ElementHelper.getAttribute( strategy, "class" );                Element[] elements = ElementHelper.getChildren( strategy );                Value[] values = VALUE_DECODER.decodeValues( elements );                Part part = new Plugin( logger, information, classpath, classname, values );                if( getLogger().isTraceEnabled() )                {                    getLogger().trace( "loaded plugin definition" );                }                return part;            }            else if( "resource".equals( name ) )            {                if( getLogger().isTraceEnabled() )                {                    getLogger().trace( "reading resource definition" );                }                String urn = ElementHelper.getAttribute( strategy, "urn" );                String path = ElementHelper.getAttribute( strategy, "path" );                Part part = new Resource( logger, information, classpath, urn, path );                if( getLogger().isTraceEnabled() )                {                    getLogger().trace( "loaded resource definition" );                }                return part;            }            else            {                final String error =                   "Element type name ["                  + name                  + "] is not a recognized element type within the "                  + PART_XSD_URI                  + " namespace.";                throw new DecodingException( strategy, error );            }        }        else        {            // this is a foreign part                        try            {                if( getLogger().isTraceEnabled() )                {                    getLogger().trace( "loading foreign builder" );                }                URI uri = getDecoderURI( strategy );                Builder builder = loadForeignBuilder( uri );                if( getLogger().isTraceEnabled() )                {                    getLogger().trace(                       "using builder ["                       + builder.getClass().getName()                       + "]" );                }                return builder.build( information, classpath, strategy, resolver );            }            catch( Exception ioe )            {                final String error =                   "Internal error while attempting to load foreign part.";                throw new DecodingException( strategy, error, ioe );            }            finally            {                Thread.currentThread().setContextClassLoader( anchor );            }        }    }