Examples of QmfException


Examples of org.apache.qpid.qmf2.common.QmfException

     */
    public void removeConnection(final Connection conn) throws QmfException
    {
        if (conn != _connection)
        {
            throw new QmfException("Attempt to delete unknown connection");
        }

        try
        {
            _timer.cancel();
            _connection.close(); // Should we close() the connection here or just stop() it ???
        }
        catch (JMSException jmse)
        {
            throw new QmfException("Failed to remove connection, caught JMSException " + jmse.getMessage());
        }
        _connection = null;
    }
View Full Code Here

Examples of org.apache.qpid.qmf2.common.QmfException

    public synchronized SubscribeParams createSubscription(final Agent agent, final QmfQuery query,
                                                final String consoleHandle, final String options) throws QmfException
    {
        if (consoleHandle == null)
        {
            throw new QmfException("Called createSubscription() with null consoleHandle");
        }
        if (_subscriptionByHandle.get(consoleHandle) != null)
        {
            throw new QmfException("Called createSubscription() with a consoleHandle that is already in use");
        }
        if (agent == null)
        {
            throw new QmfException("Called createSubscription() with null agent");
        }
        if (!agent.isActive())
        {
            throw new QmfException("Called createSubscription() with inactive agent");
        }
        String agentName = agent.getName();

        // Initialise optional values to defaults;
        long lifetime = _subscriptionDuration;
        long publishInterval = 10000;
        long timeout = _replyTimeout;
        String replyHandle = null;

        if (options != null)
        { // We wrap the Map in a QmfData object to avoid potential class cast issues with the parsed options
            QmfData optMap = new QmfData(new AddressParser(options).map());
            if (optMap.hasValue("lifetime"))
            {
                lifetime = optMap.getLongValue("lifetime");
            }

            if (optMap.hasValue("publishInterval"))
            { // Multiply publishInterval by 1000 because the QMF2 protocol spec says interval is
              // "The request time (in milliseconds) between periodic updates of data in this subscription"
                publishInterval = 1000*optMap.getLongValue("publishInterval");
            }

            if (optMap.hasValue("timeout"))
            {
                timeout = optMap.getLongValue("timeout");
            }

            if (optMap.hasValue("replyHandle"))
            {
                replyHandle = optMap.getStringValue("replyHandle");
            }
        }

        try
        {
            MapMessage request = _syncSession.createMapMessage();
            request.setJMSReplyTo(_asyncReplyAddress)// Deliberately forcing all replies to the _asyncReplyAddress
            request.setJMSCorrelationID(consoleHandle); // Deliberately using consoleHandle not replyHandle here
            request.setStringProperty("x-amqp-0-10.app-id", "qmf2");
            request.setStringProperty("method", "request");
            request.setStringProperty("qmf.opcode", "_subscribe_request");
            request.setStringProperty("qpid.subject", agentName);

            request.setObject("_query", query.mapEncode());
            request.setObject("_interval", publishInterval);
            request.setObject("_duration", lifetime);

            SubscriptionManager subscription =
                new SubscriptionManager(agent, query, consoleHandle, replyHandle, publishInterval, lifetime);
            _subscriptionByHandle.put(consoleHandle, subscription);
            _timer.schedule(subscription, 0, publishInterval);

            if (_subscriptionEmulationEnabled && agentName.equals(_brokerAgentName))
            { // If the Agent is the broker Agent we emulate the Subscription on the Console
                String subscriptionId = UUID.randomUUID().toString();
                _subscriptionById.put(subscriptionId, subscription);
                subscription.setSubscriptionId(subscriptionId);
                final SubscribeParams params = new SubscribeParams(consoleHandle, subscription.mapEncode());
                if (replyHandle == null)
                {
                    return params;
                }
                else
                {
                    final String handle = replyHandle;
                    Thread thread = new Thread()
                    {
                        public void run()
                        {
                            _eventListener.onEvent(new SubscribeResponseWorkItem(new Handle(handle), params));
                        }
                    };
                    thread.start();
                }
                return null;
            }

            _requester.send(request);
            if (replyHandle == null)
            { // If this is an synchronous request get the response
                subscription.await(timeout*1000);
                if (subscription.getSubscriptionId() == null)
                {
                    _log.info("No response received in createSubscription()");
                    throw new QmfException("No response received for Console.createSubscription()");
                }
                return new SubscribeParams(consoleHandle, subscription.mapEncode());
            }

            // If this is an asynchronous request return without waiting for a response
            return null;
        }
        catch (JMSException jmse)
        {
            _log.info("JMSException {} caught in createSubscription()", jmse.getMessage());
            throw new QmfException(jmse.getMessage());
        }
    } // end of createSubscription()
View Full Code Here

Examples of org.apache.qpid.qmf2.common.QmfException

     */
    public SubscribeParams refreshSubscription(String subscriptionId, final String options) throws QmfException
    {
        if (subscriptionId == null)
        {
            throw new QmfException("Called refreshSubscription() with null subscriptionId");
        }
        SubscriptionManager subscription = _subscriptionById.get(subscriptionId);
        if (subscription == null)
        {
            throw new QmfException("Called refreshSubscription() with invalid subscriptionId");
        }
        String consoleHandle = subscription.getConsoleHandle();
        Agent agent = subscription.getAgent();
        if (!agent.isActive())
        {
            throw new QmfException("Called refreshSubscription() with inactive agent");
        }
        String agentName = agent.getName();

        // Initialise optional values to defaults;
        long lifetime = 0;
        long timeout = _replyTimeout;
        String replyHandle = null;

        if (options != null)
        { // We wrap the Map in a QmfData object to avoid potential class cast issues with the parsed options
            QmfData optMap = new QmfData(new AddressParser(options).map());
            if (optMap.hasValue("lifetime"))
            {
                lifetime = optMap.getLongValue("lifetime");
            }

            if (optMap.hasValue("timeout"))
            {
                timeout = optMap.getLongValue("timeout");
            }

            if (optMap.hasValue("replyHandle"))
            {
                replyHandle = optMap.getStringValue("replyHandle");
            }
        }

        try
        {
            Destination destination = (replyHandle == null) ? _replyAddress : _asyncReplyAddress;
            MapMessage request = _syncSession.createMapMessage();
            request.setJMSReplyTo(destination);
            request.setJMSCorrelationID(replyHandle);
            request.setStringProperty("x-amqp-0-10.app-id", "qmf2");
            request.setStringProperty("method", "request");
            request.setStringProperty("qmf.opcode", "_subscribe_refresh_indication");
            request.setStringProperty("qpid.subject", agentName);

            request.setObject("_subscription_id", subscriptionId);
            if (lifetime > 0)
            {
                request.setObject("_duration", lifetime);
            }

            // Wrap request & response in synchronized block in case any other threads invoke a request
            // it would be somewhat unfortunate if their response got interleaved with ours!!
            synchronized(this)
            {
                if (_subscriptionEmulationEnabled && agentName.equals(_brokerAgentName))
                { // If the Agent is the broker Agent we emulate the Subscription on the Console
                    subscription.refresh();
                    final SubscribeParams params = new SubscribeParams(consoleHandle, subscription.mapEncode());
                    if (replyHandle == null)
                    {
                        return params;
                    }
                    else
                    {
                        final String handle = replyHandle;
                        Thread thread = new Thread()
                        {
                            public void run()
                            {
                                _eventListener.onEvent(new SubscribeResponseWorkItem(new Handle(handle), params));
                            }
                        };
                        thread.start();
                    }
                    return null;
                }

                _requester.send(request);
                if (replyHandle == null)
                { // If this is an synchronous request get the response
                    Message response = _responder.receive(timeout*1000);
                    if (response == null)
                    {
                        subscription.cancel();
                        _log.info("No response received in refreshSubscription()");
                        throw new QmfException("No response received for Console.refreshSubscription()");
                    }
                    SubscribeParams result = new SubscribeParams(consoleHandle, AMQPMessage.getMap(response));
                    subscriptionId = result.getSubscriptionId();
                    if (subscriptionId == null)
                    {
                        subscription.cancel();
                    }
                    else
                    {
                        subscription.setDuration(result.getLifetime());
                        subscription.refresh();
                    }
                    return result;
                }
            }
            // If this is an asynchronous request return without waiting for a response
            return null;
        }
        catch (JMSException jmse)
        {
            _log.info("JMSException {} caught in refreshSubscription()", jmse.getMessage());
            throw new QmfException(jmse.getMessage());
        }
    } // end of refreshSubscription()
View Full Code Here

Examples of org.apache.qpid.qmf2.common.QmfException

     */
    public void cancelSubscription(final String subscriptionId) throws QmfException
    {
        if (subscriptionId == null)
        {
            throw new QmfException("Called cancelSubscription() with null subscriptionId");
        }
        SubscriptionManager subscription = _subscriptionById.get(subscriptionId);
        if (subscription == null)
        {
            throw new QmfException("Called cancelSubscription() with invalid subscriptionId");
        }
        String consoleHandle = subscription.getConsoleHandle();
        Agent agent = subscription.getAgent();
        if (!agent.isActive())
        {
            throw new QmfException("Called cancelSubscription() with inactive agent");
        }
        String agentName = agent.getName();

        try
        {
View Full Code Here

Examples of org.apache.qpid.qmf2.common.QmfException

        if (name != null)
        {
            String[] split = name.split(":");
            if (split.length < 2 || split.length > 3)
            {
                throw new QmfException("Agent name must be in the format <vendor>:<product>[:<instance>]");
            }

            _vendor = split[0];
            _product = split[1];

            if (split.length == 3)
            {
                _instance = split[2];
            }

            _name = _vendor + ":" + _product + ":" + _instance;
        }

        _domain = (domain == null) ? "default" : domain;

        if (notifier == null)
        {
            _eventListener = new NullQmfEventListener();
        }
        else if (notifier instanceof Notifier)
        {
            _eventListener = new NotifierWrapper((Notifier)notifier, _workQueue);
        }
        else if (notifier instanceof QmfEventListener)
        {
            _eventListener = (QmfEventListener)notifier;
        }
        else
        {
            throw new QmfException("QmfCallback listener must be either a Notifier or QmfEventListener");
        }

        if (interval > 0)
        {
            _heartbeatInterval = interval;
View Full Code Here

Examples of org.apache.qpid.qmf2.common.QmfException

        // to the same Agent instance at the same time.
        synchronized(this)
        {
            if (_connection != null)
            {
                throw new QmfException("Multiple connections per Agent is not supported");
            }
            _connection = conn;
        }

        if (_name == null || _vendor == null || _product == null)
        {
            throw new QmfException("The vendor, product or name is not set");
        }

        setValue("_epoch", _epoch);
        setValue("_heartbeat_interval", _heartbeatInterval);
        setValue("_name", _name);
        setValue("_product", _product);
        setValue("_vendor", _vendor);
        setValue("_instance", _instance);

        try
        {
            String directBase = "qmf." + _domain + ".direct";
            String topicBase  = "qmf." + _domain + ".topic";
            String address = directBase + "/" + _name + addressOptions;

            _asyncSession = _connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            _syncSession = _connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

            // Create a MessageProducer for the QMF topic address used to broadcast Events & Heartbeats.
            Destination topicAddress = _syncSession.createQueue(topicBase);
            _broadcaster = _syncSession.createProducer(topicAddress);
            _broadcastAddress = "'" + topicBase + "'";

            // Create a MessageProducer for the QMF direct address, mainly used for request/response
            Destination directAddress = _syncSession.createQueue(directBase);
            _responder = _syncSession.createProducer(directAddress);

            // TODO it should be possible to bind _locateConsumer, _mainConsumer and _aliasConsumer to the
            // same queue if I can figure out the correct AddressString to use, probably not a big deal though.

            // Set up MessageListener on the Agent Locate Address
            Destination locateAddress = _asyncSession.createQueue(topicBase + "/console.request.agent_locate");
            _locateConsumer = _asyncSession.createConsumer(locateAddress);
            _locateConsumer.setMessageListener(this);

            // Set up MessageListener on the Agent address
            Destination agentAddress = _asyncSession.createQueue(address);
            _mainConsumer = _asyncSession.createConsumer(agentAddress);
            _mainConsumer.setMessageListener(this);

            // If the product name has been set to qpidd we create an additional consumer address of
            // "qmf.default.direct/broker" in addition to the main address so that Consoles can talk to the
            // broker Agent without needing to do Agent discovery. This is only really needed when the Agent
            // class has been used to create the QmfManagementAgent for the Java broker QmfManagementPlugin.
            // It's important to do this as many tools (such as qpid-config) and demo code tend to use the
            // alias address rather than the discovered address when talking to the broker ManagementAgent.
            if (_product.equals("qpidd"))
            {
                String alias = directBase + "/broker";
                _log.info("Creating address {} as an alias address for the broker Agent", alias);
                Destination aliasAddress = _asyncSession.createQueue(alias);
                _aliasConsumer = _asyncSession.createConsumer(aliasAddress);
                _aliasConsumer.setMessageListener(this);
            }

            _connection.start();

            // Schedule a Heartbeat every _heartbeatInterval seconds sending the first one immediately
            _timer = new Timer(true);
            _timer.schedule(new Heartbeat(), 0, _heartbeatInterval*1000);
        }
        catch (JMSException jmse)
        {
            // If we can't create the QMF Destinations there's not much else we can do
            _log.info("JMSException {} caught in setConnection()", jmse.getMessage());
            throw new QmfException("Failed to create sessions or destinations " + jmse.getMessage());
        }
    } // end of setConnection()
View Full Code Here

Examples of org.apache.qpid.qmf2.common.QmfException

     */
    public final void removeConnection(final Connection conn) throws QmfException
    {
        if (conn != _connection)
        {
            throw new QmfException("Attempt to delete unknown connection");
        }

        try
        {
            _timer.cancel();
            _connection.close();
        }
        catch (JMSException jmse)
        {
            throw new QmfException("Failed to remove connection, caught JMSException " + jmse.getMessage());
        }
        _connection = null;
    }
View Full Code Here

Examples of org.apache.qpid.qmf2.common.QmfException

        if (foundObject != null)
        {
            // If a duplicate object has actually been Deleted we can reuse the address.
            if (!foundObject.isDeleted())
            {
                throw new QmfException("Duplicate QmfAgentData Address");
            }
        }

        _objectIndex.put(addr, object);
View Full Code Here

Examples of org.apache.qpid.qmf2.common.QmfException

     * <b>internal</b> store.
     */
    @Override
    public void addObject(final QmfAgentData object) throws QmfException
    {
        throw new QmfException("Cannot call addObject() on AgentExternal as this method is used to populate the internal object store");
    }
View Full Code Here

Examples of org.apache.qpid.qmf2.common.QmfException

        {
            return _proxy.refresh(this, objectId, replyHandle, timeout);
        }
        else
        {
            throw new QmfException("Agent.refresh() called from deactivated Agent");
        }
    }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.