decode method

XdrClaimPredicate decode (
  1. XdrDataInputStream stream
)

Implementation

static XdrClaimPredicate decode(XdrDataInputStream stream) {
  XdrClaimPredicate decoded = XdrClaimPredicate();
  XdrClaimPredicateType discriminant = XdrClaimPredicateType.decode(stream);
  decoded.discriminant = discriminant;
  switch (decoded.discriminant) {
    case XdrClaimPredicateType.CLAIM_PREDICATE_UNCONDITIONAL:
      break;
    case XdrClaimPredicateType.CLAIM_PREDICATE_AND:
      int predicatesSize = stream.readInt();
      decoded.andPredicates = List<XdrClaimPredicate>(predicatesSize);
      for (int i = 0; i < predicatesSize; i++) {
        decoded.andPredicates[i] = XdrClaimPredicate.decode(stream);
      }
      break;
    case XdrClaimPredicateType.CLAIM_PREDICATE_OR:
      int predicatesSize = stream.readInt();
      decoded.orPredicates = List<XdrClaimPredicate>(predicatesSize);
      for (int i = 0; i < predicatesSize; i++) {
        decoded.orPredicates[i] = XdrClaimPredicate.decode(stream);
      }
      break;
    case XdrClaimPredicateType.CLAIM_PREDICATE_NOT:
      decoded.notPredicate = XdrClaimPredicate.decode(stream);
      break;
    case XdrClaimPredicateType.CLAIM_PREDICATE_BEFORE_ABSOLUTE_TIME:
      decoded.absBefore = XdrInt64.decode(stream);
      break;
    case XdrClaimPredicateType.CLAIM_PREDICATE_BEFORE_RELATIVE_TIME:
      decoded.relBefore = XdrInt64.decode(stream);
      break;
  }
  return decoded;
}