/* 
 * Licensed 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.
 */
package com.bunjlabs.fuga.resources;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

public final class ResourceManager {

    private static final String APP_DIR = "app";

    /**
     * Returns input stream of given resource from classpath.
     *
     * If specified resource does not exists, null value will be returned.
     *
     * @param path Path to the resource.
     * @return input stream of resource or null.
     * @throws FileNotFoundException if any specified file not founded 
     */
    protected InputStream loadFromClasspath(String... path) throws FileNotFoundException {
        String name = String.join(File.separator, path);

        if (name == null || name.isEmpty()) {
            return null;
        }

        InputStream is;
        is = ClassLoader.getSystemClassLoader().getResourceAsStream(name);

        if (is == null) {
            throw new FileNotFoundException(name);
        }

        return is;
    }

    /**
     * Returns input stream of given resource.
     *
     * This method at first find resource in current <code>app</code> dir. If it
     * fails, it try to find resource from class path. If specified resource
     * does not exists, null value will be returned.
     *
     * @param path Path to the resource.
     * @return input stream of resource or null.
     * @throws FileNotFoundException if any specified file not founded 
     */
    protected InputStream load(String... path) throws FileNotFoundException {
        String name = String.join(File.separator, path);

        if (name == null || name.isEmpty()) {
            return null;
        }

        InputStream is;

        String resourcePathStr = "./"
                + APP_DIR
                + (name.startsWith("/") ? name : (File.separator + name));

        try {
            is = new FileInputStream(resourcePathStr);
        } catch (FileNotFoundException ex) {
            return loadFromClasspath(name);
        }

        return is;
    }

    /**
     * Returns new resource representer for the given path.
     *
     * @param path Path to the represented resources.
     * @return resource representer for the given path.
     */
    public ResourceRepresenter getResourceRepresenter(String path) {
        return new ResourceRepresenter(this, path);
    }
}

@@ -1253,38 +1253,27 @@
 String.join(
-File.separator
+%22/%22
 , path);%0A%0A  
@@ -2128,30 +2128,19 @@
 ng.join(
-File.separator
+%22/%22
 , path);
@@ -2366,22 +2366,11 @@
  : (
-File.separator
+%22/%22
  + n
@@ -2528,20 +2528,20 @@
 asspath(
-name
+path
 );%0A     

Fix ResourceManager