/*
   * (non-Javadoc)
   *
   * @see
   * de.escidoc.core.client.interfaces.base.Retrievable#retrieve(java.lang
   * .String)
   */
  @Override
  public Scope retrieve(final String id)
      throws EscidocException, InternalClientException, TransportException {

    checkNotNull(id);

    final String xml = getClient().retrieve(id);

    return MarshallerFactory.getInstance().getMarshaller(Scope.class).unmarshalDocument(xml);
  }
  /*
   * (non-Javadoc)
   *
   * @see
   * de.escidoc.core.client.interfaces.base.Createable#create(java.lang.Object
   * )
   */
  @Override
  public Scope create(final Scope scope)
      throws EscidocException, InternalClientException, TransportException {

    checkNotNull(scope);

    final Marshaller<Scope> m = MarshallerFactory.getInstance().getMarshaller(Scope.class);

    final String xml = getClient().create(m.marshalDocument(scope));

    return m.unmarshalDocument(xml);
  }
  /*
   * (non-Javadoc)
   *
   * @see
   * de.escidoc.core.client.interfaces.ScopeHandlerClientInterface#retrieveScopes
   * (gov.loc.www.zing.srw.ExplainRequestType)
   */
  @Override
  public ExplainResponse retrieveScopes(final ExplainRequestType request)
      throws EscidocException, InternalClientException, TransportException {

    checkNotNull(request);

    final String xml = getClient().retrieveScopes(request);

    return MarshallerFactory.getInstance()
        .getMarshaller(ExplainResponse.class)
        .unmarshalDocument(xml);
  }