TargetCommandService.java 2.27 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.ReferenceCardinality
 *  org.apache.felix.scr.annotations.ReferencePolicy
 *  org.apache.felix.scr.annotations.Service
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.day.cq.analytics.testandtarget.impl.servlets;

import com.day.cq.analytics.testandtarget.TestandtargetCommand;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Component
@Service(value={TargetCommandService.class})
@Reference(name="command", referenceInterface=TestandtargetCommand.class, bind="bindCommand", unbind="unbindCommand", cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE, policy=ReferencePolicy.DYNAMIC)
public class TargetCommandService {
    private static final Logger log = LoggerFactory.getLogger(TargetCommandService.class);
    private final ConcurrentHashMap<String, TestandtargetCommand> commands = new ConcurrentHashMap();

    public TestandtargetCommand getCommand(String commandName) {
        return this.commands.get(commandName);
    }

    protected void bindCommand(TestandtargetCommand command, Map<String, Object> props) {
        String name = command.getName();
        log.info("Binding TestandtargetCommand: {}", (Object)name);
        this.commands.put(name, command);
        this.logCommands();
    }

    protected void unbindCommand(TestandtargetCommand command, Map<String, Object> props) {
        String name = command.getName();
        log.info("Unbinding TestandtargetCommand: {}", (Object)name);
        this.commands.remove(name);
        this.logCommands();
    }

    private void logCommands() {
        if (log.isDebugEnabled()) {
            log.debug("TestandtargetCommand count changed, list rebuilt with {} commands: [{}]", (Object)this.commands.size(), (Object)this.commands.keySet());
        }
    }
}