MessageFieldType.java
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2011 Google Inc.
00003  * 
00004  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
00005  * use this file except in compliance with the License. You may obtain a copy of
00006  * the License at
00007  * 
00008  * http://www.apache.org/licenses/LICENSE-2.0
00009  * 
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
00012  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
00013  * License for the specific language governing permissions and limitations under
00014  * the License.
00015  */
00016 
00017 package org.ros.internal.message.field;
00018 
00019 import org.jboss.netty.buffer.ChannelBuffer;
00020 import org.ros.internal.message.DefaultMessageDeserializer;
00021 import org.ros.internal.message.DefaultMessageSerializer;
00022 import org.ros.internal.message.Message;
00023 import org.ros.message.MessageDeserializer;
00024 import org.ros.message.MessageFactory;
00025 import org.ros.message.MessageIdentifier;
00026 import org.ros.message.MessageSerializer;
00027 
00028 
00032 public class MessageFieldType implements FieldType {
00033 
00034   private final MessageIdentifier messageIdentifier;
00035   private final MessageFactory messageFactory;
00036   private final MessageSerializer<Message> serializer;
00037   private final MessageDeserializer<Message> deserializer;
00038 
00039   public MessageFieldType(MessageIdentifier messageIdentifier, MessageFactory messageFactory) {
00040     this.messageIdentifier = messageIdentifier;
00041     this.messageFactory = messageFactory;
00042     serializer = new DefaultMessageSerializer();
00043     deserializer = new DefaultMessageDeserializer<Message>(messageIdentifier, messageFactory);
00044   }
00045 
00046   public MessageFactory getMessageFactory() {
00047     return messageFactory;
00048   }
00049 
00050   @Override
00051   public Field newVariableValue(String name) {
00052     return ValueField.newVariable(this, name);
00053   }
00054 
00055   @Override
00056   public <T> Field newConstantValue(String name, T value) {
00057     throw new UnsupportedOperationException();
00058   }
00059 
00060   @Override
00061   public Field newVariableList(String name, int size) {
00062     return ListField.newVariable(this, name);
00063   }
00064 
00065   @Override
00066   public <T> T getDefaultValue() {
00067     return getMessageFactory().newFromType(messageIdentifier.getType());
00068   }
00069 
00070   @Override
00071   public String getMd5String() {
00072     return null;
00073   }
00074 
00075   @Override
00076   public String getJavaTypeName() {
00077     return String.format("%s.%s", messageIdentifier.getPackage(), messageIdentifier.getName());
00078   }
00079 
00080   @Override
00081   public int getSerializedSize() {
00082     throw new UnsupportedOperationException();
00083   }
00084 
00085   @Override
00086   public String getName() {
00087     return messageIdentifier.getType();
00088   }
00089 
00090   @Override
00091   public <T> void serialize(T value, ChannelBuffer buffer) {
00092     serializer.serialize((Message) value, buffer);
00093   }
00094 
00095   @SuppressWarnings("unchecked")
00096   @Override
00097   public Message deserialize(ChannelBuffer buffer) {
00098     return deserializer.deserialize(buffer);
00099   }
00100 
00101   @SuppressWarnings("unchecked")
00102   @Override
00103   public Void parseFromString(String value) {
00104     throw new UnsupportedOperationException();
00105   }
00106 
00107   @Override
00108   public String toString() {
00109     return "MessageField<" + messageIdentifier + ">";
00110   }
00111 
00112   @Override
00113   public int hashCode() {
00114     final int prime = 31;
00115     int result = 1;
00116     result = prime * result + ((messageIdentifier == null) ? 0 : messageIdentifier.hashCode());
00117     return result;
00118   }
00119 
00120   @Override
00121   public boolean equals(Object obj) {
00122     if (this == obj)
00123       return true;
00124     if (obj == null)
00125       return false;
00126     if (getClass() != obj.getClass())
00127       return false;
00128     MessageFieldType other = (MessageFieldType) obj;
00129     if (messageIdentifier == null) {
00130       if (other.messageIdentifier != null)
00131         return false;
00132     } else if (!messageIdentifier.equals(other.messageIdentifier))
00133       return false;
00134     return true;
00135   }
00136 }


rosjava_bootstrap
Author(s): Daniel Stonier , Damon Kohler
autogenerated on Fri Aug 28 2015 12:41:44