code: @Override
      public DOWriter getWriter(boolean cachedObjectRequired, Context context,
              String pid) throws ServerException, ObjectLockedException {
          if (cachedObjectRequired) {
              throw new InvalidContextException(
                      "A DOWriter is unavailable in a cached context.");
          } else {
              BasicDigitalObject obj = new BasicDigitalObject();
              getWriteLock(pid);
              boolean clean = false;
              try {
                  m_translator.deserialize(m_permanentStore.retrieveObject(pid), obj,
                          m_defaultStorageFormat, m_storageCharacterEncoding,
                          DOTranslationUtility.DESERIALIZE_INSTANCE);
                  DOWriter w =
                          new SimpleDOWriter(context, this, m_translator,
                                  m_defaultStorageFormat, m_storageCharacterEncoding,
                                  obj);
                  clean = true;
                  return w;
              } finally {
                  if (!clean) {
                      releaseWriteLock(pid);
                  }
              }
          }
      }
docs: Gets a writer on an existing object.