@Override protected Object kFrom(Input input, MapWrapper<Object, Object> wrapper) throws IOException { return inlineK.readFrom(input); }
@Override protected void kTransfer(Pipe pipe, Input input, Output output, int number, boolean repeated) throws IOException { inlineK.transfer(pipe, input, output, number, repeated); }
@Override protected void kTo(Output output, int fieldNumber, Object key, boolean repeated) throws IOException { inlineK.writeTo(output, fieldNumber, key, repeated); }
@Override protected Class<?> delegateClass(int id) { final RegisteredDelegate<?> rd = id < delegates.size() ? delegates.get(id) : null; return rd == null ? null : rd.delegate.typeClass(); }
@Override public Object readFrom(Input input, Object owner) throws IOException { if (ID_ARRAY_LEN != input.readFieldNumber(this)) throw new ProtostuffException("Corrupt input."); final int len = input.readInt32(); Object[] array = (Object[])Array.newInstance(delegate.typeClass(), len); if (input instanceof GraphInput) { // update the actual reference. ((GraphInput) input).updateLast(array, owner); } for (int i = 0; i < len;) { switch (input.readFieldNumber(this)) { case ID_ARRAY_DATA: array[i++] = delegate.readFrom(input); break; case ID_ARRAY_NULLCOUNT: i += input.readUInt32(); break; default: throw new ProtostuffException("Corrupt input."); } } if (0 != input.readFieldNumber(this)) throw new ProtostuffException("Corrupt input."); return array; }
return new Field<T>(inline.getFieldType(), number, name, true, f.getAnnotation(Tag.class))
@Override protected Class<?> delegateClass(int id) { final RegisteredDelegate<?> rd = id < delegates.size() ? delegates.get(id) : null; return rd == null ? null : rd.delegate.typeClass(); }
@Override public Object readFrom(Input input, Object owner) throws IOException { if (ID_ARRAY_LEN != input.readFieldNumber(this)) throw new ProtostuffException("Corrupt input."); final int len = input.readInt32(); Object[] array = (Object[])Array.newInstance(delegate.typeClass(), len); if (input instanceof GraphInput) { // update the actual reference. ((GraphInput) input).updateLast(array, owner); } for (int i = 0; i < len;) { switch (input.readFieldNumber(this)) { case ID_ARRAY_DATA: array[i++] = delegate.readFrom(input); break; case ID_ARRAY_NULLCOUNT: i += input.readUInt32(); break; default: throw new ProtostuffException("Corrupt input."); } } if (0 != input.readFieldNumber(this)) throw new ProtostuffException("Corrupt input."); return array; }
return new Field<T>(inline.getFieldType(), number, name, true, f.getAnnotation(Tag.class))
/** * Registers a delegate. Returns true if registration is successful. */ public <T> boolean registerDelegate(Delegate<T> delegate) { return registerDelegate(delegate.typeClass().getName(), delegate); }
@Override protected void transfer(Pipe pipe, Input input, Output output, boolean repeated) throws IOException { inline.transfer(pipe, input, output, number, repeated); } };
@Override protected void kTo(Output output, int fieldNumber, Object key, boolean repeated) throws IOException { inlineK.writeTo(output, fieldNumber, key, repeated); }
@Override protected Object kFrom(Input input, MapWrapper<Object, Enum<?>> wrapper) throws IOException { return inlineK.readFrom(input); }
return new RuntimeCollectionField<T, Object>(inline.getFieldType(), number, name, f.getAnnotation(Tag.class), messageFactory)
/** * Registers a delegate. Returns true if registration is successful. */ public <T> boolean registerDelegate(Delegate<T> delegate) { return registerDelegate(delegate.typeClass().getName(), delegate); }
@Override protected void kTransfer(Pipe pipe, Input input, Output output, int number, boolean repeated) throws IOException { inlineK.transfer(pipe, input, output, number, repeated); }
@Override protected void vTo(Output output, int fieldNumber, Object val, boolean repeated) throws IOException { inlineV.writeTo(output, fieldNumber, val, repeated); }
@Override protected Object kFrom(Input input, MapWrapper<Object, Object> wrapper) throws IOException { return inlineK.readFrom(input); }
return new RuntimeCollectionField<T, Object>(inline.getFieldType(), number, name, f.getAnnotation(Tag.class), messageFactory)
/** * Register a {@link Delegate} and assign an id. * <p> * Delegate ids start at 1. */ @Override public <T> Registry registerDelegate(Delegate<T> delegate, int id) { if (id < 1) throw new IllegalArgumentException("delegate ids start at 1."); if (id >= strategy.delegates.size()) grow(strategy.delegates, id + 1); else if (strategy.delegates.get(id) != null) { throw new IllegalArgumentException("Duplicate id registration: " + id + " (" + delegate.typeClass() + ")"); } RegisteredDelegate<T> rd = new RegisteredDelegate<T>(id, delegate, strategy); strategy.delegates.set(id, rd); // just in case if (strategy.delegateMapping.put(delegate.typeClass(), rd) != null) throw new IllegalArgumentException("Duplicate registration for: " + delegate.typeClass()); return this; } }