Exemple #1
0
  /** @since 4.1 */
  public void write(CDODataOutput out, int referenceChunk, CDOBranchPoint securityContext)
      throws IOException {
    if (WRITING.isEnabled()) {
      WRITING.start(this);
    }

    writeSystemValues(out);

    CDOPermissionProvider permissionProvider = out.getPermissionProvider();
    CDOPermission permission = permissionProvider.getPermission(this, securityContext);
    out.writeByte(permission.getBits());

    if (permission == CDOPermission.NONE) {
      if (getClassInfo().isResourceNode()) {
        EClass eClass = getEClass();
        EStructuralFeature[] features = getAllPersistentFeatures();
        writeValue(out, eClass, features, RESOURCE_NODE_NAME_INDEX, referenceChunk);

        if (getClassInfo().isResourceFolder()) {
          writeValue(out, eClass, features, RESOURCE_FOLDER_NODES_INDEX, referenceChunk);
        }
      }
    } else {
      if (!isUnchunked() && referenceChunk != 0) {
        CDORevisionUnchunker unchunker = out.getRevisionUnchunker();
        if (unchunker != null) {
          unchunker.ensureChunks(this, referenceChunk);
        }
      }

      writeValues(out, referenceChunk);
    }

    if (WRITING.isEnabled()) {
      WRITING.stop(this);
    }
  }