/* * Copyright (c) 2007-2009, 2011, 2012, 2015 Eike Stepper (Berlin, Germany) and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Eike Stepper - initial API and implementation */ package org.eclipse.net4j.jms.internal.server.protocol.admin; import org.eclipse.net4j.jms.JMSAdminProtocolConstants; import org.eclipse.net4j.jms.server.IDestination; import org.eclipse.net4j.jms.server.IDestination.Type; import org.eclipse.net4j.jms.server.IServer; import org.eclipse.net4j.signal.IndicationWithResponse; import org.eclipse.net4j.util.io.ExtendedDataInputStream; import org.eclipse.net4j.util.io.ExtendedDataOutputStream; /** * @author Eike Stepper */ public class JMSCreateDestinationIndication extends IndicationWithResponse { private boolean ok; public JMSCreateDestinationIndication(JMSAdminServerProtocol protocol) { super(protocol, JMSAdminProtocolConstants.SIGNAL_CREATE_DESTINATION); } @Override protected void indicating(ExtendedDataInputStream in) throws Exception { byte type = in.readByte(); String name = in.readString(); JMSAdminServerProtocol protocol = (JMSAdminServerProtocol)getProtocol(); IServer server = protocol.getServer(); IDestination destination = server.createDestination(name, getDestinationType(type)); if (destination != null) { ok = true; } } @Override protected void responding(ExtendedDataOutputStream out) throws Exception { out.writeBoolean(ok); } private Type getDestinationType(byte type) { switch (type) { case JMSAdminProtocolConstants.DESTINATION_TYPE_QUEUE: return IDestination.Type.QUEUE; case JMSAdminProtocolConstants.DESTINATION_TYPE_TOPIC: return IDestination.Type.TOPIC; } throw new IllegalArgumentException("type: " + type); //$NON-NLS-1$ } }