public static SourceDefinition computeDefinitionFromURI()

in camel-k-core/support/src/main/java/org/apache/camel/k/support/Sources.java [202:241]


    public static SourceDefinition computeDefinitionFromURI(String uri) throws Exception {
        final String location = StringSupport.substringBefore(uri, "?");

        if (!location.startsWith(Constants.SCHEME_PREFIX_CLASSPATH) && !location.startsWith(Constants.SCHEME_PREFIX_FILE)) {
            throw new IllegalArgumentException("No valid resource format, expected scheme:path, found " + uri);
        }

        final String query = StringSupport.substringAfter(uri, "?");
        final Map<String, Object> params = URISupport.parseQuery(query);

        String language = (String) params.get("language");
        if (ObjectHelper.isEmpty(language)) {
            language = StringSupport.substringAfterLast(location, ":");
            language = StringSupport.substringAfterLast(language, ".");
        }
        if (ObjectHelper.isEmpty(language)) {
            throw new IllegalArgumentException("Unknown language " + language);
        }

        String name = (String) params.get("name");
        if (name == null) {
            name = StringSupport.substringAfter(location, ":");
            name = StringSupport.substringBeforeLast(name, ".");

            if (name.contains("/")) {
                name = StringSupport.substringAfterLast(name, "/");
            }
        }

        SourceDefinition answer = new SourceDefinition();
        answer.setId((String) params.get("id"));
        answer.setLocation(location);
        answer.setName(name);
        answer.setLanguage(language);
        answer.setLoader((String) params.get("loader"));
        answer.setInterceptors(StringSupport.split((String) params.get("interceptors"), ","));
        answer.setCompressed(Boolean.parseBoolean((String) params.get("compression")));

        return answer;
    }