/******************************************************************************* * ALMA - Atacama Large Millimeter Array * Copyright (c) COSYLAB - Control System Laboratory, 2011 * (in the framework of the ALMA collaboration). * All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *******************************************************************************/ /* * Created on Jun 26, 2004 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package com.cosylab.acs.jms; import java.util.Enumeration; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import org.omg.CosPropertyService.Property; import alma.acs.container.ContainerServicesBase; /** * @author kzagar * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class ACSJMSMessage implements Message { private Destination destination; protected ACSJMSMessageEntity entity; private ContainerServicesBase containerServices; /** * @param message */ public ACSJMSMessage(ACSJMSMessageEntity message, ContainerServicesBase cs) { if (cs==null) { throw new IllegalArgumentException("Invalid null ContainerServices"); } this.entity = message; containerServices=cs; } public ACSJMSMessage(ContainerServicesBase cs) { if (cs==null) { throw new IllegalArgumentException("Invalid null ContainerServices"); } this.entity = new ACSJMSMessageEntity(); this.entity.properties = new Property[0]; containerServices=cs; } /* (non-Javadoc) * @see javax.jms.Message#getJMSMessageID() */ public String getJMSMessageID() throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#setJMSMessageID(java.lang.String) */ public void setJMSMessageID(String arg0) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#getJMSTimestamp() */ public long getJMSTimestamp() throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#setJMSTimestamp(long) */ public void setJMSTimestamp(long arg0) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#getJMSCorrelationIDAsBytes() */ public byte[] getJMSCorrelationIDAsBytes() throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#setJMSCorrelationIDAsBytes(byte[]) */ public void setJMSCorrelationIDAsBytes(byte[] arg0) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#setJMSCorrelationID(java.lang.String) */ public void setJMSCorrelationID(String arg0) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#getJMSCorrelationID() */ public String getJMSCorrelationID() throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#getJMSReplyTo() */ public Destination getJMSReplyTo() throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#setJMSReplyTo(javax.jms.Destination) */ public void setJMSReplyTo(Destination destination) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#getJMSDestination() */ public Destination getJMSDestination() throws JMSException { return this.destination; } /* (non-Javadoc) * @see javax.jms.Message#setJMSDestination(javax.jms.Destination) */ public void setJMSDestination(Destination destination) throws JMSException { this.destination = destination; } /* (non-Javadoc) * @see javax.jms.Message#getJMSDeliveryMode() */ public int getJMSDeliveryMode() throws JMSException { return this.entity.delivery_mode; } /* (non-Javadoc) * @see javax.jms.Message#setJMSDeliveryMode(int) */ public void setJMSDeliveryMode(int deliveryMode) throws JMSException { this.entity.delivery_mode = deliveryMode; } /* (non-Javadoc) * @see javax.jms.Message#getJMSRedelivered() */ public boolean getJMSRedelivered() throws JMSException { return this.entity.redelivered; } /* (non-Javadoc) * @see javax.jms.Message#setJMSRedelivered(boolean) */ public void setJMSRedelivered(boolean redelivered) throws JMSException { this.entity.redelivered = redelivered; } /* (non-Javadoc) * @see javax.jms.Message#getJMSType() */ public String getJMSType() throws JMSException { return this.entity.type; } /* (non-Javadoc) * @see javax.jms.Message#setJMSType(java.lang.String) */ public void setJMSType(String type) throws JMSException { this.entity.type = type; } /* (non-Javadoc) * @see javax.jms.Message#getJMSExpiration() */ public long getJMSExpiration() throws JMSException { return this.entity.expiration; } /* (non-Javadoc) * @see javax.jms.Message#setJMSExpiration(long) */ public void setJMSExpiration(long expiration) throws JMSException { this.entity.expiration = expiration; } /* (non-Javadoc) * @see javax.jms.Message#getJMSPriority() */ public int getJMSPriority() throws JMSException { return this.entity.priority; } /* (non-Javadoc) * @see javax.jms.Message#setJMSPriority(int) */ public void setJMSPriority(int priority) throws JMSException { this.entity.priority = priority; } /* (non-Javadoc) * @see javax.jms.Message#clearProperties() */ public void clearProperties() throws JMSException { this.entity.properties = new Property[0]; } /* (non-Javadoc) * @see javax.jms.Message#propertyExists(java.lang.String) */ public boolean propertyExists(String name) throws JMSException { return (findProperty(name, false) != -1); } /* (non-Javadoc) * @see javax.jms.Message#getBooleanProperty(java.lang.String) */ public boolean getBooleanProperty(String name) throws JMSException { int idx = findProperty(name, false); if(idx == -1) { throw new JMSException("Propery "+name+" not found"); } else { boolean val = this.entity.properties[idx].property_value.extract_boolean(); return val; } } /* (non-Javadoc) * @see javax.jms.Message#getByteProperty(java.lang.String) */ public byte getByteProperty(String arg0) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#getShortProperty(java.lang.String) */ public short getShortProperty(String arg0) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#getIntProperty(java.lang.String) */ public int getIntProperty(String name) throws JMSException { int idx = findProperty(name, false); if(idx == -1) { throw new JMSException("Propery "+name+" mot found"); } else { return this.entity.properties[idx].property_value.extract_long(); } } /* (non-Javadoc) * @see javax.jms.Message#getLongProperty(java.lang.String) */ public long getLongProperty(String arg0) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#getFloatProperty(java.lang.String) */ public float getFloatProperty(String arg0) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#getDoubleProperty(java.lang.String) */ public double getDoubleProperty(String arg0) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#getStringProperty(java.lang.String) */ public String getStringProperty(String name) throws JMSException { int idx = findProperty(name, false); if(idx == -1) { return null; } else { return this.entity.properties[idx].property_value.extract_string(); } } /* (non-Javadoc) * @see javax.jms.Message#getObjectProperty(java.lang.String) */ public Object getObjectProperty(String arg0) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#getPropertyNames() */ public Enumeration getPropertyNames() throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#setBooleanProperty(java.lang.String, boolean) */ public void setBooleanProperty(String arg0, boolean arg1) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#setByteProperty(java.lang.String, byte) */ public void setByteProperty(String arg0, byte arg1) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#setShortProperty(java.lang.String, short) */ public void setShortProperty(String arg0, short arg1) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#setIntProperty(java.lang.String, int) */ public void setIntProperty(String arg0, int arg1) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#setLongProperty(java.lang.String, long) */ public void setLongProperty(String arg0, long arg1) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#setFloatProperty(java.lang.String, float) */ public void setFloatProperty(String arg0, float arg1) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#setDoubleProperty(java.lang.String, double) */ public void setDoubleProperty(String name, double value) throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#setStringProperty(java.lang.String, java.lang.String) */ public void setStringProperty(String name, String value) throws JMSException { int idx = findProperty(name, true); this.entity.properties[idx].property_value.insert_string(value); } /* (non-Javadoc) * @see javax.jms.Message#setObjectProperty(java.lang.String, java.lang.Object) */ public void setObjectProperty(String name, Object value) throws JMSException { if (name==null) { throw new NullPointerException("Name is null!!!"); } if (value==null) { return; } int idx = findProperty(name, true); if (value==null) { throw new NullPointerException("Value is null!!!"); } // Probably not the best way of doing it. if (value instanceof Boolean) { this.entity.properties[idx].property_value.insert_boolean(((Boolean)value).booleanValue()); } else if (value instanceof Integer) { this.entity.properties[idx].property_value.insert_long(((Integer)value).intValue()); } else if (value instanceof String) { this.entity.properties[idx].property_value.insert_string((String)value); } else if (value instanceof Long) { this.entity.properties[idx].property_value.insert_longlong(((Long)value).longValue()); } else if (value instanceof Short) { this.entity.properties[idx].property_value.insert_short(((Short)value).shortValue()); } else if (value instanceof Byte) { this.entity.properties[idx].property_value.insert_octet(((Byte)value).byteValue()); } else if (value instanceof Double) { this.entity.properties[idx].property_value.insert_double(((Double)value).doubleValue()); } else if (value instanceof org.omg.CORBA.Object) { this.entity.properties[idx].property_value.insert_Object((org.omg.CORBA.Object)value); } else { throw new UnsupportedOperationException(); } } /* (non-Javadoc) * @see javax.jms.Message#acknowledge() */ public void acknowledge() throws JMSException { throw new UnsupportedOperationException(); } /* (non-Javadoc) * @see javax.jms.Message#clearBody() */ public void clearBody() throws JMSException { throw new UnsupportedOperationException(); } /** * @return * * @uml.property name="entity" */ public ACSJMSMessageEntity getEntity() { return this.entity; } /** * Find a message's property in the IDL structure by name, creating it if * doesn't exist and if so specified. * * @param name The name of the property to look for. * @param create <code>true</code> if the property is to be created. * @return The index of the property with the given name in the array. * -1 if the property was not found. */ private int findProperty(String name, boolean create) { // Find the property with the given name in the array. for(int i = 0; i < this.entity.properties.length; ++i) { if(name.equals(this.entity.properties[i].property_name)) { return i; } } // Not found, but we can create it. if(create) { Property[] newProperties = new Property[this.entity.properties.length+1]; for(int i = 0; i < this.entity.properties.length; ++i) { newProperties[i] = this.entity.properties[i]; } //newProperties[newProperties.length-1] = new Property(name, alma.acs.container.corba.AcsCorba.getAcsCorba().getORB().create_any()); newProperties[newProperties.length-1] = new Property(name,containerServices.getAdvancedContainerServices().getAny()); this.entity.properties = newProperties; return newProperties.length-1; } // Not found, but we can't create it. return -1; } }