public final void execute()

in src/main/java/org/apache/sling/feature/extension/apiregions/analyser/CheckApiRegionsOrder.java [39:74]


    public final void execute(final ApiRegions apiRegions, final AnalyserTaskContext ctx) throws Exception {
        final String order = ctx.getConfiguration().get("order");
        if (order == null) {
            reportError(ctx, "This analyser task must be configured: " + getId() + " for feature " + ctx.getFeature().getId());
            reportError(ctx, "Must specify configuration key 'order'.");
            return;
        }

        final String[] sl = order.split("[,]");
        List<String> prescribedOrder = new ArrayList<>();
        for (String s : sl) {
            s = s.trim();
            if (s.length() > 0)
                prescribedOrder.add(s);
        }
        if (prescribedOrder.size() == 0) {
            reportError(ctx, "No regions declared in the 'order' configuration");
            return;
        }

        int regionIdx = 0;
        for (final ApiRegion region : apiRegions.listRegions()) {
            String name = region.getName();
            if (!prescribedOrder.contains(name)) {
                reportError(ctx, "Region found with undeclared name: " + name);
                return;
            }
            int prevIdx = regionIdx;
            regionIdx = validateRegion(regionIdx, prescribedOrder, name);
            if (regionIdx < 0) {
                reportError(ctx, "Region '" + name + "' appears in the wrong order. It appears after '"
                        + prescribedOrder.get(prevIdx) + "'. Order of regions should be " + prescribedOrder);
                return;
            }
        }
    }