private static AttributeValue unmarshall()

in sdk1/src/main/java/com/amazonaws/services/dynamodbv2/datamodeling/internal/AttributeValueMarshaller.java [158:220]


  private static AttributeValue unmarshall(final DataInputStream in) throws IOException {
    char type = in.readChar();
    AttributeValue result = new AttributeValue();
    switch (type) {
      case '\0':
        result.setNULL(Boolean.TRUE);
        break;
      case 'b':
        result.setB(readBytes(in));
        break;
      case 'B':
        result.setBS(readBytesList(in));
        break;
      case 'n':
        result.setN(readString(in));
        break;
      case 'N':
        result.setNS(readStringList(in));
        break;
      case 's':
        result.setS(readString(in));
        break;
      case 'S':
        result.setSS(readStringList(in));
        break;
      case '?':
        final byte boolValue = in.readByte();

        if (boolValue == TRUE_FLAG) {
          result.setBOOL(Boolean.TRUE);
        } else if (boolValue == FALSE_FLAG) {
          result.setBOOL(Boolean.FALSE);
        } else {
          throw new IllegalArgumentException("Improperly formatted data");
        }
        break;
      case 'L':
        final int lCount = in.readInt();
        final List<AttributeValue> l = new ArrayList<AttributeValue>(lCount);
        for (int lIdx = 0; lIdx < lCount; lIdx++) {
          l.add(unmarshall(in));
        }
        result.setL(l);
        break;
      case 'M':
        final int mCount = in.readInt();
        final Map<String, AttributeValue> m = new HashMap<String, AttributeValue>();
        for (int mIdx = 0; mIdx < mCount; mIdx++) {
          final AttributeValue key = unmarshall(in);
          if (key.getS() == null) {
            throw new IllegalArgumentException("Improperly formatted data");
          }
          AttributeValue value = unmarshall(in);
          m.put(key.getS(), value);
        }
        result.setM(m);
        break;
      default:
        throw new IllegalArgumentException("Unsupported data encoding");
    }

    return result;
  }