Exemple #1
0
  private void writeValue(
      CDODataOutput out, EClass owner, EStructuralFeature[] features, int i, int referenceChunk)
      throws IOException {
    EStructuralFeature feature = features[i];
    Object value = getValue(i);
    if (value == null) {
      // Feature is NOT set
      out.writeByte(UNSET_OPCODE);
      return;
    }

    // Feature IS set
    if (value == CDORevisionData.NIL) {
      // Feature IS null
      out.writeByte(SET_NULL_OPCODE);
      return;
    }

    // Feature is NOT null
    out.writeByte(SET_NOT_NULL_OPCODE);
    if (feature.isMany()) {
      CDOList list = (CDOList) value;
      out.writeCDOList(owner, feature, list, referenceChunk);
    } else {
      checkNoFeatureMap(feature);
      if (feature instanceof EReference) {
        value = out.getIDProvider().provideCDOID(value);
      }

      if (TRACER.isEnabled()) {
        TRACER.format("Writing feature {0}: {1}", feature.getName(), value);
      }

      out.writeCDOFeatureValue(feature, value);
    }
  }