Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Relaxed vs. Strict enforcement

By design, the predicates within the fedora namespace have been reserved for exclusive use by the repository software.  REST requests to the repository to change the values have been prohibited as invalid requests.  While these restrictions are advantageous in most cases, there are a few exceptions.

Relaxed mode

In order to support moving content from one repository to another or to restore exported content, the prohibition on modification to the fedora managed triples associated with creation and modification details must be lifted.  This includes: fedora:created, fedora:createdBy, fedora:lastModified and fedora:lastModifiedBy.  Starting with fcrepo-4.7.4 there is a relaxed mode that allows these triples to be updated.  In relaxed mode, when those triples are included in POST, PUT and PATCH requests, the supplied values are applied.

Strict mode

The default mode is "strict" mode in which these triples may not be modified as a result of supplied triples.  Instead these properties are set by fedora to represent the times at which resources were created or modified and the users performing those actions.

How to set the mode:

There are two ways to set the repository to "relaxed" mode (it defaults to "strict").

Java System Property

Starting the repository with the "fcrepo.properties.management" set to "relaxed".

Code Block
-Dfcrepo.properties.management=relaxed

Spring Configuration

Within your repository spring configuration, on the modeshapeRepofactory bean, set serverManagedPropertiesMode to "relaxed".

Code Block
languagexml
titlerepository.xml
    <bean name="modeshapeRepofactory"
        class="org.fcrepo.kernel.modeshape.spring.ModeShapeRepositoryFactoryBean"
        p:repositoryConfiguration="${fcrepo.modeshape.configuration:test_repository.json}"
        p:serverManagedPropertiesMode="relaxed" />


Info

Setting this mode through both the system property and spring configuration is not recommended.  If you do, the value from the java system property will take precedence.