void handleSelectors()

in src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/URIManipulationFilterExtension.java [281:332]


    void handleSelectors(RuntimeObjectModel runtimeObjectModel, SlingUriBuilder requestPathInfo,
                                Map<String, Object> options) {
        if (options.containsKey(SELECTORS)) {
            Object selectorsOption = options.get(SELECTORS);
            if (selectorsOption == null) {
                // we want to remove all selectors
                requestPathInfo.setSelectors(null);
            } else if (selectorsOption instanceof String) {
                String selectorString = (String) selectorsOption;
                if ( StringUtils.isBlank(selectorString) ) {
                    requestPathInfo.setSelectors(null);
                } else {
                    String[] selectorsArray = selectorString.split("\\.");
                    requestPathInfo.setSelectors(selectorsArray);    
                }
            } else if (selectorsOption instanceof Object[]) {
                Object[] selectorsURIArray = (Object[]) selectorsOption;
                String[] selectorsArray = new String[selectorsURIArray.length];
                int index = 0;
                for (Object selector : selectorsURIArray) {
                    selectorsArray[index++] = runtimeObjectModel.toString(selector);
                }
                requestPathInfo.setSelectors(selectorsArray);
            }
        }
        Object addSelectorsOption = options.get(ADD_SELECTORS);
        if (addSelectorsOption instanceof String) {
            String selectorString = (String) addSelectorsOption;
            String[] selectorsArray = selectorString.split("\\.");
            for(String selector : selectorsArray) {
                requestPathInfo.addSelector(selector);
            }
        } else if (addSelectorsOption instanceof Object[]) {
            Object[] selectorsURIArray = (Object[]) addSelectorsOption;
            for (Object selector : selectorsURIArray) {
                requestPathInfo.addSelector(runtimeObjectModel.toString(selector));
            }
        }
        Object removeSelectorsOption = options.get(REMOVE_SELECTORS);
        if (removeSelectorsOption instanceof String) {
            String selectorString = (String) removeSelectorsOption;
            String[] selectorsArray = selectorString.split("\\.");
            for(String selector : selectorsArray) {
                requestPathInfo.removeSelector(selector);
            }
        } else if (removeSelectorsOption instanceof Object[]) {
            Object[] selectorsURIArray = (Object[]) removeSelectorsOption;
            for (Object selector : selectorsURIArray) {
                requestPathInfo.removeSelector(runtimeObjectModel.toString(selector));
            }
        }
    }