@Override
  public JAXBElement<ContentRelationTypeTO> retrieve(final String id)
      throws SystemException, AuthorizationException, AuthenticationException,
          ContentRelationNotFoundException {

    return factoryProvider
        .getContentRelationFactory()
        .createContentRelation(
            serviceUtility.fromXML(
                ContentRelationTypeTO.class, this.contentRelationHandler.retrieve(id)));
  }
  @Override
  public JAXBElement<MdRecordTypeTO> retrieveMdRecord(String id, String name)
      throws AuthenticationException, AuthorizationException, ContentRelationNotFoundException,
          MdRecordNotFoundException, SystemException {

    return factoryProvider
        .getMdRecordsFactory()
        .createMdRecord(
            serviceUtility.fromXML(
                MdRecordTypeTO.class, this.contentRelationHandler.retrieveMdRecord(id, name)));
  }
  @Override
  public JAXBElement<ContentRelationResourcesTypeTO> retrieveResources(String id)
      throws AuthenticationException, AuthorizationException, ContentRelationNotFoundException,
          MissingMethodParameterException, SystemException {

    return factoryProvider
        .getContentRelationFactory()
        .createResources(
            serviceUtility.fromXML(
                ContentRelationResourcesTypeTO.class,
                this.contentRelationHandler.retrieveResources(id)));
  }
  @Override
  public JAXBElement<ContentRelationTypeTO> create(final ContentRelationTypeTO contentRelationTO)
      throws SystemException, InvalidContentException, MissingAttributeValueException,
          RelationPredicateNotFoundException, AuthorizationException, AuthenticationException,
          InvalidXmlException, ReferencedResourceNotFoundException,
          MissingMethodParameterException {

    return factoryProvider
        .getContentRelationFactory()
        .createContentRelation(
            serviceUtility.fromXML(
                ContentRelationTypeTO.class,
                this.contentRelationHandler.create(serviceUtility.toXML(contentRelationTO))));
  }
  @Override
  public JAXBElement<ResultTypeTO> release(String id, StatusTaskParamTO statusTaskParamTO)
      throws AuthenticationException, AuthorizationException, ContentRelationNotFoundException,
          LockingException, InvalidStatusException, MissingMethodParameterException,
          SystemException, OptimisticLockingException, InvalidXmlException,
          InvalidContentException {

    return factoryProvider
        .getResultFactory()
        .createResult(
            serviceUtility.fromXML(
                ResultTypeTO.class,
                this.contentRelationHandler.release(id, serviceUtility.toXML(statusTaskParamTO))));
  }
  @Override
  public JAXBElement<ResultTypeTO> assignObjectPid(
      String id, AssignPidTaskParamTO assignPidTaskParamTO)
      throws AuthenticationException, AuthorizationException, ContentRelationNotFoundException,
          LockingException, MissingMethodParameterException, OptimisticLockingException,
          InvalidXmlException, SystemException, PidAlreadyAssignedException {

    return factoryProvider
        .getResultFactory()
        .createResult(
            serviceUtility.fromXML(
                ResultTypeTO.class,
                this.contentRelationHandler.assignObjectPid(
                    id, serviceUtility.toXML(assignPidTaskParamTO))));
  }