private static Map getFeatures()

in src/main/java/org/apache/sling/feature/maven/ProjectHelper.java [103:140]


    private static Map<String, Feature> getFeatures(final MavenProject project, final String key) {
        final String cacheKey = key + "-cache";
        Map<String, Feature> result = null;
        try {
            result = (Map<String, Feature>) project.getContextValue(cacheKey);
            if (result != null && !result.isEmpty()) {
                final Feature f = result.values().iterator().next();
                f.getId();
            }
        } catch (final Exception e) {
            // if we get a class cast exception, we read again
            result = null;
        }
        if (result == null) {
            result = new TreeMap<>();
            final Integer size = (Integer) project.getContextValue(key);
            if (size != null) {
                for (int i = 0; i < size; i++) {
                    final String text = (String) project.getContextValue(key + "_" + String.valueOf(i));
                    if (text == null) {
                        throw new RuntimeException("Unable to get feature from internal store.");
                    }
                    final String file = (String) project.getContextValue(key + "_" + String.valueOf(i) + "f");
                    if (file == null) {
                        throw new RuntimeException("Unable to get feature from internal store.");
                    }
                    try (final StringReader r = new StringReader(text)) {
                        final Feature feature = FeatureJSONReader.read(r, project.getId());
                        result.put(file, feature);
                    } catch (final IOException ioe) {
                        throw new RuntimeException(ioe.getMessage(), ioe);
                    }
                }
            }
            project.setContextValue(cacheKey, result);
        }
        return result;
    }