sustain/src/main/java/net/happyonroad/component/core/support/ComponentURLStreamHandlerFactory.java
public File getMappingFile(URL url) throws IOException {
        if (componentFiles == null) initFastIndexes("app", "lib", "repository");
        String fileName = FilenameUtils.normalize(url.getFile(), true);
        if( !fileName.endsWith(".jar") ) fileName = fileName + ".jar";
        if( fileName.startsWith("boot/") || fileName.startsWith("boot\\") ){
            fileName = "net.happyonroad/" + FilenameUtils.getName(fileName);
        }else if(fileName.startsWith("lib/") || fileName.startsWith("lib\\")){/* Only 3rd lib file will be put into jar classpath*/
            //正常的组件component url里面肯定不是lib开头；
            // 但是 spring-component-framework的Class-Path指定的那些url被normalize之后却会如此
            fileName  = ComponentUtils.relativePath(fileName);
        }
        File componentFile = componentFiles.get(fileName);
        if( componentFile == null )
        {
            // 当第一次建立的快速索引中没有相应文件时
            // 尝试看lib下后来有没有相应的文件
            componentFile = guessFile(url, "app", "lib", "repository");
            if( componentFile == null )
                throw new IOException("there is no component named as " + fileName);
        }
        return componentFile;
    }
public File getMappingFile(URL url) throws IOException {
        if (componentFiles == null) initFastIndexes("app", "lib", "repository");
        String fileName = FilenameUtils.normalize(url.getFile(), true);
        if( !fileName.endsWith(".jar") ) fileName = fileName + ".jar";
        if( fileName.startsWith("boot/") || fileName.startsWith("boot\\") ){
            fileName = "net.happyonroad/" + FilenameUtils.getName(fileName);
        }else if(fileName.startsWith("lib/") || fileName.startsWith("lib\\")){/* Only 3rd lib file will be put into jar classpath*/
            //正常的组件component url里面肯定不是lib开头；
            // 但是 spring-component-framework的Class-Path指定的那些url被normalize之后却会如此
            fileName  = ComponentUtils.relativePath(fileName);
        }
        File componentFile = componentFiles.get(fileName);
        if( componentFile == null )
        {
            // 当第一次建立的快速索引中没有相应文件时
            // 尝试看lib下后来有没有相应的文件
            componentFile = guessFile(url, "app", "lib", "repository");
            if( componentFile == null )
                throw new IOException("there is no component named as " + fileName);
        }
        return componentFile;
    }
public File getMappingFile ( URL url ) throws IOException { if ( componentFiles == null ) initFastIndexes ( "app" , "lib" , "repository" ) ; String fileName = FilenameUtils . normalize ( url . getFile ( ) , true ) ; if ( ! fileName . endsWith ( ".jar" ) ) fileName = fileName + ".jar" ; if ( fileName . startsWith ( "boot/" ) || fileName . startsWith ( "boot\\" ) ) { fileName = "net.happyonroad/" + FilenameUtils . getName ( fileName ) ; } else if ( fileName . startsWith ( "lib/" ) || fileName . startsWith ( "lib\\" ) ) { /* Only 3rd lib file will be put into jar classpath*/ //正常的组件component url里面肯定不是lib开头； // 但是 spring-component-framework的Class-Path指定的那些url被normalize之后却会如此 fileName = ComponentUtils . relativePath ( fileName ) ; } File componentFile = componentFiles . get ( fileName ) ; if ( componentFile == null ) { // 当第一次建立的快速索引中没有相应文件时 // 尝试看lib下后来有没有相应的文件 componentFile = guessFile ( url , "app" , "lib" , "repository" ) ; if ( componentFile == null ) throw new IOException ( "there is no component named as " + fileName ) ; } return componentFile ; }
Get the real file of component url
@param url the component url
@return the real file
@throws IOException
Get the real file of component url