Example usage for org.springframework.amqp.core Exchange equals

List of usage examples for org.springframework.amqp.core Exchange equals

Introduction

In this page you can find the example usage for org.springframework.amqp.core Exchange equals.

Prototype

public boolean equals(Object obj) 

Source Link

Document

Indicates whether some other object is "equal to" this one.

Usage

From source file:com.jbrisbin.groovy.mqdsl.RabbitMQBuilder.java

@Override
protected Object createNode(Object o, final Map params) {
    if (log.isDebugEnabled()) {
        log.debug(String.format("createNode(Object o, Map params): %s, %s", o, params));
    }//from   w w w .  j  a  v a  2 s. c o  m
    String node = o.toString();
    if (ON.equals(node)) {
        // Event handlers
        for (Map.Entry<String, Closure> entry : ((Map<String, Closure>) params).entrySet()) {
            String eventName = entry.getKey();
            List<Closure> handlers;
            if (eventHandlers.containsKey(eventName)) {
                handlers = eventHandlers.get(eventName);
            } else {
                handlers = new ArrayList<Closure>();
                eventHandlers.put(eventName, handlers);
            }
            if (entry.getValue() instanceof List) {
                for (Closure cl : (List<Closure>) entry.getValue()) {
                    handlers.add(cl);
                }
            } else if (entry.getValue() instanceof Closure) {
                Closure cl = entry.getValue();
                cl.setProperty(NAME, eventName);
                handlers.add(cl);
            }
        }
        return null;
    } else if (EXCHANGE.equals(node)) {
        boolean durable = params.containsKey(DURABLE) ? (Boolean) params.get(DURABLE) : false;
        boolean autoDelete = params.containsKey(AUTO_DELETE) ? (Boolean) params.get(AUTO_DELETE) : false;
        Map arguments = params.containsKey(ARGUMENTS) ? (Map) params.get(ARGUMENTS) : null;
        currentRoutingKey = null;

        Exchange exchange = null;
        String name = null;
        if (params.containsKey(NAME)) {
            name = params.get(NAME).toString();
        }
        if (params.containsKey(TYPE)) {
            String type = params.containsKey(TYPE) ? params.get(TYPE).toString() : DIRECT;
            if (DIRECT.equals(type)) {
                exchange = new DirectExchange(name, durable, autoDelete, arguments);
            } else if (TOPIC.equals(type)) {
                exchange = new TopicExchange(name, durable, autoDelete, arguments);
            } else if (FANOUT.equals(type)) {
                exchange = new FanoutExchange(name, durable, autoDelete, arguments);
            } else if (HEADERS.equals(type)) {
                exchange = new HeadersExchange(name, durable, autoDelete, arguments);
            } else {
                exchange = new CustomExchange(name, type, durable, autoDelete, arguments);
            }
            currentExchange = exchange;

        } else {
            currentExchange = new DirectExchange(name);
        }
        try {
            rabbitAdmin.declareExchange(currentExchange);
        } catch (Exception e) {
            log.error(e.getMessage(), e);
            dispatchError(e);
        }

        return exchange;
    } else if (QUEUE.equals(node)) {
        boolean durable = params.containsKey(DURABLE) ? (Boolean) params.get(DURABLE) : false;
        boolean autoDelete = params.containsKey(AUTO_DELETE) ? (Boolean) params.get(AUTO_DELETE) : true;
        String routingKey = params.containsKey(ROUTING_KEY) ? params.get(ROUTING_KEY).toString() : null;
        if (null != routingKey) {
            currentRoutingKey = routingKey;
        }
        boolean exclusive = params.containsKey(EXCLUSIVE) ? (Boolean) params.get(EXCLUSIVE) : false;
        Map arguments = params.containsKey(ARGUMENTS) ? (Map) params.get(ARGUMENTS) : null;

        Queue q = null;
        String name;
        if (params.containsKey(NAME)) {
            try {
                if (null == params.get(NAME)) {
                    name = null;
                } else {
                    name = params.get(NAME).toString();
                }

                if (name == null) {
                    q = rabbitAdmin.declareQueue();
                } else {
                    q = new Queue(name, durable, exclusive, autoDelete);
                    rabbitAdmin.declareQueue(q);
                }
                currentQueue = q;

                if (null != currentExchange) {
                    Binding binding = null;
                    if (currentExchange instanceof FanoutExchange) {
                        binding = BindingBuilder.bind(q).to((FanoutExchange) currentExchange);
                    } else if (currentExchange instanceof DirectExchange) {
                        binding = BindingBuilder.bind(q).to((DirectExchange) currentExchange).with(routingKey);
                    } else if (currentExchange instanceof HeadersExchange) {
                        binding = BindingBuilder.bind(q).to((HeadersExchange) currentExchange)
                                .whereAll(arguments).match();
                    } else if (currentExchange instanceof TopicExchange) {
                        binding = BindingBuilder.bind(q).to((TopicExchange) currentExchange).with(routingKey);
                    } else if (currentExchange instanceof CustomExchange) {
                        binding = BindingBuilder.bind(q).to(currentExchange).with(routingKey).noargs();
                    }

                    if (null != binding) {
                        rabbitAdmin.declareBinding(binding);
                    }
                }
            } catch (Exception e) {
                log.error(e.getMessage(), e);
                dispatchError(e);
            }
        }
        return q;
    }

    return null;
}