/* * RED5 Open Source Flash Server - http://code.google.com/p/red5/ * * Copyright 2006-2012 by respective authors (see below). All rights reserved. * * 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 org.red5.io.mock; import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Vector; import org.red5.io.amf3.ByteArray; import org.red5.io.object.BaseOutput; import org.red5.io.object.DataTypes; import org.red5.io.object.RecordSet; import org.red5.io.object.Serializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; public class Output extends BaseOutput implements org.red5.io.object.Output { protected static Logger log = LoggerFactory.getLogger(Output.class); protected List<Object> list; public Output(List<Object> list) { super(); this.list = list; } /** {@inheritDoc} */ public boolean isCustom(Object custom) { // No custom types supported return false; } /** {@inheritDoc} */ public void putString(String string) { list.add(string); } /** {@inheritDoc} */ public boolean supportsDataType(byte type) { // does not yet support references return type <= DataTypes.OPT_REFERENCE; } /** {@inheritDoc} */ public void writeBoolean(Boolean bol) { list.add(Byte.valueOf(DataTypes.CORE_BOOLEAN)); list.add(bol); } /** {@inheritDoc} */ public void writeCustom(Object custom) { // Customs not supported by this version } /** {@inheritDoc} */ public void writeDate(Date date) { list.add(Byte.valueOf(DataTypes.CORE_DATE)); list.add(date); } /** {@inheritDoc} */ // DONE public void writeNull() { list.add(Byte.valueOf(DataTypes.CORE_NULL)); } /** {@inheritDoc} */ // DONE public void writeNumber(Number num) { list.add(Byte.valueOf(DataTypes.CORE_NUMBER)); list.add(num); } /** {@inheritDoc} */ public void writeReference(Object obj) { list.add(Byte.valueOf(DataTypes.OPT_REFERENCE)); list.add(Short.valueOf(getReferenceId(obj))); } /** {@inheritDoc} */ public void writeString(String string) { list.add(Byte.valueOf(DataTypes.CORE_STRING)); list.add(string); } /** {@inheritDoc} */ public void writeXML(Document xml) { list.add(Byte.valueOf(DataTypes.CORE_XML)); list.add(xml); } /** {@inheritDoc} */ public void writeArray(Collection<?> array, Serializer serializer) { list.add(Byte.valueOf(DataTypes.CORE_ARRAY)); list.add(array); } /** {@inheritDoc} */ public void writeArray(Object[] array, Serializer serializer) { list.add(Byte.valueOf(DataTypes.CORE_ARRAY)); list.add(array); } /** {@inheritDoc} */ public void writeArray(Object array, Serializer serializer) { list.add(Byte.valueOf(DataTypes.CORE_ARRAY)); list.add(array); } /** {@inheritDoc} */ public void writeMap(Map<Object, Object> map, Serializer serializer) { list.add(Byte.valueOf(DataTypes.CORE_MAP)); list.add(map); } /** {@inheritDoc} */ public void writeMap(Collection<?> array, Serializer serializer) { list.add(Byte.valueOf(DataTypes.CORE_MAP)); list.add(array); } /** {@inheritDoc} */ public void writeObject(Object object, Serializer serializer) { list.add(Byte.valueOf(DataTypes.CORE_OBJECT)); list.add(object); } /** {@inheritDoc} */ public void writeObject(Map<Object, Object> map, Serializer serializer) { list.add(Byte.valueOf(DataTypes.CORE_OBJECT)); list.add(map); } /** {@inheritDoc} */ public void writeRecordSet(RecordSet recordset, Serializer serializer) { list.add(Byte.valueOf(DataTypes.CORE_OBJECT)); list.add(recordset); } /** {@inheritDoc} */ public void writeByteArray(ByteArray array) { list.add(Byte.valueOf(DataTypes.CORE_BYTEARRAY)); list.add(array); } /** {@inheritDoc} */ public void writeVectorInt(Vector<Integer> vector) { list.add(Byte.valueOf(DataTypes.CORE_VECTOR_INT)); list.add(vector); } /** {@inheritDoc} */ public void writeVectorUInt(Vector<Long> vector) { list.add(Byte.valueOf(DataTypes.CORE_VECTOR_UINT)); list.add(vector); } /** {@inheritDoc} */ public void writeVectorNumber(Vector<Double> vector) { list.add(Byte.valueOf(DataTypes.CORE_VECTOR_NUMBER)); list.add(vector); } /** {@inheritDoc} */ public void writeVectorObject(Vector<Object> vector) { list.add(Byte.valueOf(DataTypes.CORE_VECTOR_OBJECT)); list.add(vector); } }