Package hermes.renderers

Source Code of hermes.renderers.DefaultMessageHeaderRenderer

/*
* Copyright 2003,2004,2005 Colin Crist
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/

package hermes.renderers;

import hermes.Domain;
import hermes.browser.ConfigDialogProxy;
import hermes.swing.SwingUtils;
import hermes.util.JMSUtils;

import java.util.Date;
import java.util.Enumeration;

import javax.jms.Message;
import javax.swing.JComponent;
import javax.swing.JScrollPane;
import javax.swing.table.DefaultTableModel;

import org.apache.log4j.Logger;

import com.jidesoft.grid.SortableTable;

/**
* A renderer that displays the JMS and user header properties in a sortable
* table.
*
* @author colincrist@hermesjms.com
* @version $Id: DefaultMessageHeaderRenderer.java,v 1.3 2006/07/13 07:35:31
*          colincrist Exp $
*/

public class DefaultMessageHeaderRenderer extends AbstractMessageRenderer {
  private static final Logger log = Logger.getLogger(DefaultMessageHeaderRenderer.class);

  public DefaultMessageHeaderRenderer() {
    super();
    // TODO Auto-generated constructor stub
  }

  @Override
  public JComponent render(JScrollPane parent, Message m) {
    final SortableTable table = new SortableTable();
    final DefaultTableModel tableModel = new DefaultTableModel() {

      /**
     *
     */
      private static final long serialVersionUID = 5702541447000695825L;

      @Override
      public boolean isCellEditable(int row, int column) {
        return false;
      }
    };

    tableModel.addColumn("Property");
    tableModel.addColumn("Value");

    //
    // Header properties...

    try {
      tableModel.addRow(new Object[] { "JMSMessageID", m.getJMSMessageID() });
    } catch (Exception ex) {
      log.error("no JMSMessageID in message: " + ex.getMessage());
    }

    try {
      tableModel.addRow(new Object[] { "JMSDestination", JMSUtils.getDestinationName(m.getJMSDestination()) });
    } catch (Exception ex) {
      log.error("no JMSDestination in message: " + ex.getMessage());
    }

    try {
      tableModel.addRow(new Object[] { "JMSTimestamp", new Date(m.getJMSTimestamp()) });
    } catch (Exception ex) {
      tableModel.addRow(new Object[] { "JMSTimestamp", new Date() });
      log.error("no JMSTimestamp in message: " + ex.getMessage());
    }

    try {
      tableModel.addRow(new Object[] { "JMSType", m.getJMSType() });
    } catch (Exception ex) {
      log.error("no JMSType in message: " + ex.getMessage());
    }

    try {
      tableModel.addRow(new Object[] { "JMSReplyTo", JMSUtils.getDestinationName(m.getJMSReplyTo()) + (m.getJMSReplyTo() != null ? " (" + Domain.getDomain(m.getJMSReplyTo()) + ")" : "") });
    } catch (Exception ex) {
      log.error("no JMSReplyTo in message: " + ex.getMessage());
    }

    try {
      tableModel.addRow(new Object[] { "JMSCorrelationID", m.getJMSCorrelationID() });
    } catch (Exception ex) {
      log.error("no JMSCorrelationID in message: " + ex.getMessage());
    }

    try {
      tableModel.addRow(new Object[] { "JMSExpiration", new Long(m.getJMSExpiration()) });
    } catch (Exception ex) {
      log.error("no JMSExpiration in message: " + ex.getMessage());
    }

    try {
      tableModel.addRow(new Object[] { "JMSPriority", new Long(m.getJMSPriority()) });
    } catch (Exception ex) {
      log.error("no JMSPriority in message: " + ex.getMessage());
    }

    try {
      if (m.getPropertyNames() != null) {
        for (final Enumeration iter = m.getPropertyNames(); iter.hasMoreElements();) {
          try {
            final String propertyName = (String) iter.nextElement();
            final Object propertyValue = m.getObjectProperty(propertyName);
            final Object[] row = { propertyName, propertyValue };

            tableModel.addRow(row);
          } catch (RuntimeException ex) {
            ex.printStackTrace();
          }
        }
      }
    } catch (Throwable e) {
      final Object[] row = { "Error", e.getClass().getName() + ": " + e.getMessage() };
      tableModel.addRow(row);

      log.error(e.getMessage(), e);
    }

    table.setModel(tableModel);

    return SwingUtils.createJScrollPane(table);
  }

  /**
   * There are no configurable options on this renderer
   */
  @Override
  public JComponent getConfigPanel(ConfigDialogProxy dialogProxy) throws Exception {
    return null;
  }

  /**
   * Any JMS message is rederable.
   */
  @Override
  public boolean canRender(Message message) {
    return true;
  }

  @Override
  public String getDisplayName() {
    return "Header";
  }
}
TOP

Related Classes of hermes.renderers.DefaultMessageHeaderRenderer

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.