public void begin()

in src/main/java/org/apache/sling/commons/log/logback/internal/OsgiAppenderRefInternalAction.java [44:87]


    public void begin(InterpretationContext ec, String tagName, Attributes attributes) throws ActionException {
        // Let us forget about previous errors (in this object)
        inError = false;

        Object o = ec.peekObject();

        if (!(o instanceof Logger)) {
            String errMsg = "Could not find an Logger at the top of execution stack. Near ["
                    + tagName + "] line " + getLineNumber(ec);
            inError = true;
            addError(errMsg);
            return;
        }

        Logger logger = (Logger) o;

        String appenderName = ec.subst(attributes.getValue(ActionConst.REF_ATTRIBUTE));

        if (OptionHelper.isEmpty(appenderName)) {
            // print a meaningful error message and return
            String errMsg = "Missing appender ref attribute in <appender-ref> tag.";
            inError = true;
            addError(errMsg);

            return;
        }

        @SuppressWarnings("unchecked")
        Map<String, Set<String>> appenderBag =
                (Map<String, Set<String>>) ec.getObjectMap().get(OSGI_APPENDER_REF_BAG);

        if(appenderBag == null){
            appenderBag = new HashMap<String, Set<String>>();
            ec.getObjectMap().put(OSGI_APPENDER_REF_BAG,appenderBag);
        }

        Set<String> loggers = appenderBag.get(appenderName);
        if(loggers == null){
            loggers = new HashSet<String>();
            appenderBag.put(appenderName,loggers);
        }

        loggers.add(logger.getName());
    }