public Object readObject() throws IOException { ensureAvailable(1); int type = buffer[position++]; return readObject(type); }
/** * Reads object * * @return the AMF3 decoded object */ protected Object readAMF3Data() throws IOException { AMF3Deserializer amf3 = (AMF3Deserializer)dataInput; amf3.reset(); return amf3.readObject(); }
public Object readObject() throws IOException { ensureAvailable(1); int type = buffer[position++]; return readObject(type); }
public Object readObject() throws IOException { ensureAvailable(1); int type = buffer[position++]; return readObject(type); }
/** * Reads object * * @return the AMF3 decoded object */ protected Object readAMF3Data() throws IOException { AMF3Deserializer amf3 = (AMF3Deserializer)dataInput; amf3.reset(); return amf3.readObject(); }
/** * Reads object * * @return the AMF3 decoded object */ protected Object readAMF3Data() throws IOException { AMF3Deserializer amf3 = (AMF3Deserializer)dataInput; amf3.reset(); return amf3.readObject(); }
@SuppressWarnings("unchecked") protected Map<Object, Object> readAMF3Dictionary() throws IOException { final int type = readAMF3UnsignedInteger(); final int lengthOrIndex = type >>> 1; if ((type & 0x01) == 0) // stored dictionary. return (Map<Object, Object>)storedObjects.get(lengthOrIndex); readByte(); // weak keys flag: unused... // AS3 Dictionary doesn't have a strict Java equivalent: use an HashMap, which // could (unlikely) lead to duplicated keys collision... Map<Object, Object> dictionary = new HashMap<Object, Object>(lengthOrIndex); storedObjects.add(dictionary); for (int i = 0; i < lengthOrIndex; i++) { Object key = readObject(); Object value = readObject(); dictionary.put(key, value); } return dictionary; }
@SuppressWarnings("unchecked") protected Map<Object, Object> readAMF3Dictionary() throws IOException { final int type = readAMF3UnsignedInteger(); final int lengthOrIndex = type >>> 1; if ((type & 0x01) == 0) // stored dictionary. return (Map<Object, Object>)storedObjects.get(lengthOrIndex); readByte(); // weak keys flag: unused... // AS3 Dictionary doesn't have a strict Java equivalent: use an HashMap, which // could (unlikely) lead to duplicated keys collision... Map<Object, Object> dictionary = new HashMap<Object, Object>(lengthOrIndex); storedObjects.add(dictionary); for (int i = 0; i < lengthOrIndex; i++) { Object key = readObject(); Object value = readObject(); dictionary.put(key, value); } return dictionary; }
@SuppressWarnings("unchecked") protected Map<Object, Object> readAMF3Dictionary() throws IOException { final int type = readAMF3UnsignedInteger(); final int lengthOrIndex = type >>> 1; if ((type & 0x01) == 0) // stored dictionary. return (Map<Object, Object>)storedObjects.get(lengthOrIndex); readByte(); // weak keys flag: unused... // AS3 Dictionary doesn't have a strict Java equivalent: use an HashMap, which // could (unlikely) lead to duplicated keys collision... Map<Object, Object> dictionary = new HashMap<Object, Object>(lengthOrIndex); storedObjects.add(dictionary); for (int i = 0; i < lengthOrIndex; i++) { Object key = readObject(); Object value = readObject(); dictionary.put(key, value); } return dictionary; }
protected Object readAMF3Array() throws IOException { final int type = readAMF3UnsignedInteger(); final int lengthOrIndex = type >>> 1; if ((type & 0x01) == 0) // stored array. return storedObjects.get(lengthOrIndex); String key = readAMF3String(); if (key.length() == 0) { Object[] objects = new Object[lengthOrIndex]; storedObjects.add(objects); for (int i = 0; i < lengthOrIndex; i++) objects[i] = readObject(); return objects; } Map<Object, Object> map = new HashMap<Object, Object>(lengthOrIndex); storedObjects.add(map); while (key.length() > 0) { map.put(key, readObject()); key = readAMF3String(); } for (int i = 0; i < lengthOrIndex; i++) map.put(Integer.valueOf(i), readObject()); return map; }
@SuppressWarnings("unchecked") protected List<Object> readAMF3VectorObject() throws IOException { final int type = readAMF3UnsignedInteger(); final int lengthOrIndex = type >>> 1; if ((type & 0x01) == 0) // stored vector. return (List<Object>)storedObjects.get(lengthOrIndex); readByte(); // fixed flag: unused... readAMF3String(); // component class name: unused... List<Object> vector = new ArrayList<Object>(lengthOrIndex); storedObjects.add(vector); for (int i = 0; i < lengthOrIndex; i++) vector.add(readObject()); return vector; }
@SuppressWarnings("unchecked") protected List<Object> readAMF3VectorObject() throws IOException { final int type = readAMF3UnsignedInteger(); final int lengthOrIndex = type >>> 1; if ((type & 0x01) == 0) // stored vector. return (List<Object>)storedObjects.get(lengthOrIndex); readByte(); // fixed flag: unused... readAMF3String(); // component class name: unused... List<Object> vector = new ArrayList<Object>(lengthOrIndex); storedObjects.add(vector); for (int i = 0; i < lengthOrIndex; i++) vector.add(readObject()); return vector; }
@SuppressWarnings("unchecked") protected List<Object> readAMF3VectorObject() throws IOException { final int type = readAMF3UnsignedInteger(); final int lengthOrIndex = type >>> 1; if ((type & 0x01) == 0) // stored vector. return (List<Object>)storedObjects.get(lengthOrIndex); readByte(); // fixed flag: unused... readAMF3String(); // component class name: unused... List<Object> vector = new ArrayList<Object>(lengthOrIndex); storedObjects.add(vector); for (int i = 0; i < lengthOrIndex; i++) vector.add(readObject()); return vector; }
public Object readObject() throws IOException { if (debugMore) logMore.debug("readObject()..."); try { int type = readAMF3Integer(); return readObject(type); } catch (IOException e) { throw e; } catch (Exception e) { throw new AMF3SerializationException(e); } }
@Override public Object readObject() throws IOException { OSGiGraniteClassUtil.setDestination(null); Object obj = super.readObject(); if (obj instanceof AbstractMessage && ! (obj instanceof CommandMessage)) { AbstractMessage message = (AbstractMessage) obj; OSGiGraniteClassUtil.setDestination(message.getDestination()); if (Boolean.TRUE.equals(message.getHeader(OSGiConstants.BYTEARRAY_BODY_HEADER))) { byte[] byteArray = (byte[]) message.getBody(); ByteArrayInputStream bais = new ByteArrayInputStream(byteArray); AMF3Deserializer deser = new AMF3Deserializer(bais); message.setBody(deser.readObject()); } } return obj; } }
protected Object readAMF3VectorObject() throws IOException { Object result = null; int type = readAMF3Integer(); if ((type & 0x01) == 0) // stored vector. result = getFromStoredObjects(type >> 1); else { final int length = type >> 1; List<Object> vector = new ArrayList<Object>(length); addToStoredObjects(result); readAMF3Integer(); // always 0x00? readAMF3Integer(); // always 0x01? for (int i = 0; i < length; i++) vector.add(readObject()); result = vector; } if (debugMore) logMore.debug("readAMF3VectorObject() -> %s", result); return result; }
protected void readStandard(ActionScriptClassDescriptor desc, Object result) throws IOException { // defined values... final int count = desc.getPropertiesCount(); for (int i = 0; i < count; i++) { Property property = desc.getProperty(i); Object value = readObject(readUnsignedByte()); if (value != null && value.getClass() == property.getType()) property.setValue(result, value, false); else property.setValue(result, value, true); } // dynamic values... if (desc.isDynamic()) { while (true) { String name = readAMF3String(); if (name.length() == 0) break; Object value = readObject(readUnsignedByte()); desc.setPropertyValue(name, result, value); } } }
protected void readStandard(ActionScriptClassDescriptor desc, Object result) throws IOException { // defined values... final int count = desc.getPropertiesCount(); for (int i = 0; i < count; i++) { Property property = desc.getProperty(i); Object value = readObject(readUnsignedByte()); if (value != null && value.getClass() == property.getType()) property.setValue(result, value, false); else property.setValue(result, value, true); } // dynamic values... if (desc.isDynamic()) { while (true) { String name = readAMF3String(); if (name.length() == 0) break; Object value = readObject(readUnsignedByte()); desc.setPropertyValue(name, result, value); } } }
protected void readStandard(ActionScriptClassDescriptor desc, Object result) throws IOException { // defined values... final int count = desc.getPropertiesCount(); for (int i = 0; i < count; i++) { Property property = desc.getProperty(i); Object value = readObject(readUnsignedByte()); if (value != null && value.getClass() == property.getType()) property.setValue(result, value, false); else property.setValue(result, value, true); } // dynamic values... if (desc.isDynamic()) { while (true) { String name = readAMF3String(); if (name.length() == 0) break; Object value = readObject(readUnsignedByte()); desc.setPropertyValue(name, result, value); } } }
public void send(AsyncMessage message) throws Exception { Object msg = null; if (Boolean.TRUE.equals(message.getHeader(GravityInternal.BYTEARRAY_BODY_HEADER))) { byte[] byteArray = (byte[])message.getBody(); ByteArrayInputStream bais = new ByteArrayInputStream(byteArray); AMF3Deserializer deser = new AMF3Deserializer(bais); msg = deser.readObject(); deser.close(); // makes jdk7 happy (Resource leak: 'deser' is never closed)... } else msg = message.getBody(); internalSend(message.getHeaders(), msg, message.getMessageId(), message.getCorrelationId(), message.getTimestamp(), message.getTimeToLive()); }