diff --git a/docs/2.2.1/adminguide/customising-security.html b/docs/2.2.1/adminguide/customising-security.html
index 8bfb9fa..006758a 100644
--- a/docs/2.2.1/adminguide/customising-security.html
+++ b/docs/2.2.1/adminguide/customising-security.html
@@ -389,46 +389,7 @@
 <p><b>Note:</b> If installed standalone, Archiva's list of configuration files is <i>itself</i> configurable, and can be found in: <tt>apps/archiva/WEB-INF/applicationContext.xml</tt></p>
 <p>Values from sources</p>
 <div class="source">
-<pre>&lt;bean name=&quot;commons-configuration&quot; class=&quot;org.apache.archiva.redback.components.registry.commons.CommonsConfigurationRegistry&quot;
-  init-method=&quot;initialize&quot;&gt;
-  &lt;property name=&quot;properties&quot;&gt;
-    &lt;value&gt;
-      &lt;![CDATA[
-      &lt;configuration&gt;
-        &lt;system/&gt;
-        &lt;jndi prefix=&quot;java:comp/env&quot; config-optional=&quot;true&quot;/&gt;
-        &lt;xml fileName=&quot;${user.home}/.m2/archiva.xml&quot; config-optional=&quot;true&quot;
-             config-name=&quot;org.apache.archiva.user&quot;
-             config-at=&quot;org.apache.archiva&quot;/&gt;
-        &lt;xml fileName=&quot;${user.home}/.m2/shared.xml&quot; config-optional=&quot;true&quot;
-             config-name=&quot;org.apache.maven.shared.app.user&quot; config-at=&quot;org.apache.maven.shared.app&quot;
-             config-forceCreate=&quot;true&quot;/&gt;
-        &lt;properties fileName=&quot;${user.home}/.m2/security.properties&quot; config-optional=&quot;true&quot;
-                    config-at=&quot;org.apache.archiva.redback&quot;/&gt;
-        &lt;properties fileName=&quot;${user.home}/.m2/archiva.properties&quot; config-optional=&quot;true&quot;
-                    config-at=&quot;org.apache.archiva.redback&quot;/&gt;
-        &lt;xml fileName=&quot;${appserver.base}/conf/archiva.xml&quot; config-optional=&quot;true&quot;
-             config-name=&quot;org.apache.archiva.base&quot;
-             config-at=&quot;org.apache.archiva&quot;/&gt;
-        &lt;xml fileName=&quot;${appserver.base}/conf/shared.xml&quot; config-optional=&quot;true&quot;
-             config-name=&quot;org.apache.maven.shared.app.base&quot; config-at=&quot;org.apache.maven.shared.app&quot;/&gt;
-        &lt;xml fileName=&quot;${appserver.base}/conf/common.xml&quot; config-optional=&quot;true&quot;/&gt;
-        &lt;properties fileName=&quot;${appserver.base}/conf/security.properties&quot; config-optional=&quot;true&quot;
-                    config-at=&quot;org.apache.archiva.redback&quot;/&gt;
-        &lt;xml fileName=&quot;${appserver.home}/conf/archiva.xml&quot; config-optional=&quot;true&quot;
-             config-at=&quot;org.apache.archiva&quot;/&gt;
-        &lt;xml fileName=&quot;${appserver.home}/conf/shared.xml&quot; config-optional=&quot;true&quot;
-             config-at=&quot;org.apache.maven.shared.app&quot;/&gt;
-        &lt;xml fileName=&quot;${appserver.home}/conf/common.xml&quot; config-optional=&quot;true&quot;/&gt;
-        &lt;properties fileName=&quot;${appserver.home}/conf/security.properties&quot; config-optional=&quot;true&quot;
-                    config-at=&quot;org.apache.archiva.redback&quot;/&gt;
-        &lt;properties fileName=&quot;org/apache/archiva/redback-security.properties&quot; config-at=&quot;org.apache.archiva.redback&quot;/&gt;
-      &lt;/configuration&gt;
-      ]]&gt;
-    &lt;/value&gt;
-  &lt;/property&gt;    
-&lt;/bean&gt;
-</pre></div></div>
+<pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div></div>
                   </div>
             </div>
           </div>
diff --git a/docs/2.2.1/adminguide/repositories-content-storage.html b/docs/2.2.1/adminguide/repositories-content-storage.html
index 4329a6e..2d490b0 100644
--- a/docs/2.2.1/adminguide/repositories-content-storage.html
+++ b/docs/2.2.1/adminguide/repositories-content-storage.html
@@ -350,44 +350,12 @@
 <p>Prior to version 1.4-M1, repository content is now stored in a jcr repository (based on Apache Jackrabbit implementation).</p>
 <p>A default Jackrabbit configuration is provided :</p>
 <div class="source">
-<pre>&lt;Repository&gt;
-  &lt;FileSystem class=&quot;org.apache.jackrabbit.core.fs.local.LocalFileSystem&quot;&gt;
-    &lt;param name=&quot;path&quot; value=&quot;${rep.home}/repository&quot;/&gt;
-  &lt;/FileSystem&gt;
-  &lt;Security appName=&quot;Jackrabbit&quot;&gt;
-    &lt;SecurityManager class=&quot;org.apache.jackrabbit.core.security.simple.SimpleSecurityManager&quot; workspaceName=&quot;security&quot;/&gt;
-    &lt;AccessManager class=&quot;org.apache.jackrabbit.core.security.simple.SimpleAccessManager&quot;/&gt;
-    &lt;LoginModule class=&quot;org.apache.jackrabbit.core.security.simple.SimpleLoginModule&quot;/&gt;
-  &lt;/Security&gt;
-  &lt;Workspaces rootPath=&quot;${rep.home}/workspaces&quot; defaultWorkspace=&quot;default&quot;/&gt;
-  &lt;Workspace name=&quot;${wsp.name}&quot;&gt;
-    &lt;FileSystem class=&quot;org.apache.jackrabbit.core.fs.local.LocalFileSystem&quot;&gt;
-      &lt;param name=&quot;path&quot; value=&quot;${wsp.home}&quot;/&gt;
-    &lt;/FileSystem&gt;
-    &lt;PersistenceManager class=&quot;org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager&quot;/&gt;
-    &lt;SearchIndex class=&quot;org.apache.jackrabbit.core.query.lucene.SearchIndex&quot;&gt;
-      &lt;param name=&quot;path&quot; value=&quot;${wsp.home}/index&quot;/&gt;
-    &lt;/SearchIndex&gt;
-  &lt;/Workspace&gt;
-  &lt;Versioning rootPath=&quot;${rep.home}/version&quot;&gt;
-    &lt;FileSystem class=&quot;org.apache.jackrabbit.core.fs.local.LocalFileSystem&quot;&gt;
-      &lt;param name=&quot;path&quot; value=&quot;${rep.home}/version&quot;/&gt;
-    &lt;/FileSystem&gt;
-    &lt;PersistenceManager class=&quot;org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager&quot;/&gt;
-  &lt;/Versioning&gt;
-&lt;/Repository&gt;
-</pre></div>
+<pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div>
 <p>You can use your own configuration by adding a file repository.xml in ${appserver.base}/conf.</p>
 <p>By default, the Jcr repository is stored ${appserver.base}/data/jcr.</p>
 <p>If you want to change this default location, you must edit the file WEB-INF/applicationContext.xml, uncomment/edit lines and change with your values:</p>
 <div class="source">
-<pre>&lt;!--
-&lt;bean id=&quot;jcr-config&quot; class=&quot;org.apache.archiva.metadata.repository.jcr.ArchivaJcrRepositoryConfig&quot; factory-method=&quot;create&quot;&gt;
-  &lt;constructor-arg value=&quot;${appserver.base}/conf/repository.xml&quot;/&gt;
-  &lt;constructor-arg value=&quot;${appserver.base}/data/jcr&quot;/&gt;
-&lt;/bean&gt;
---&gt;
-</pre></div></div>
+<pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div></div>
 <div class="section">
 <h3><a name="Cassandra"></a>Cassandra</h3>
 <p>With the distribution including the embeded Jetty, you can configure Cassandra runtime in the file conf/archiva-cassandra.properties.</p>
diff --git a/docs/2.2.1/adminguide/webservices/rest.html b/docs/2.2.1/adminguide/webservices/rest.html
index 55a3fcb..9f6d831 100644
--- a/docs/2.2.1/adminguide/webservices/rest.html
+++ b/docs/2.2.1/adminguide/webservices/rest.html
@@ -347,180 +347,52 @@
 <h3><a name="Search_Service"></a>Search Service</h3>
 <p>Authentication headers for connect to your Archiva instance :</p>
 <div class="source">
-<pre>    // guest with an empty password
-    public static String guestAuthzHeader =
-        &quot;Basic &quot; + org.apache.cxf.common.util.Base64Utility.encode( ( &quot;guest&quot; + &quot;:&quot; ).getBytes() );
-
-    // with an other login/password
-    //public String authzHeader =
-    //    &quot;Basic &quot; + org.apache.cxf.common.util.Base64Utility.encode( ( &quot;login&quot; + &quot;:password&quot; ).getBytes() );
-
-</pre></div>
+<pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div>
 <p>Get a Search Service Client :</p>
 <div class="source">
 <pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div>
 <p>Quick Search</p>
 <div class="source">
-<pre>List&lt;Artifact&gt; artifacts = searchService.quickSearch( &quot;commons-logging&quot; );
-// return all artifacts with groupId OR artifactId OR version OR packaging OR className
-// NOTE : only artifacts with classifier empty are returned
-</pre></div>
+<pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div>
 <p>Search Artifacts Version : to search all availables version with a groupId and artifactId and packaging (if empty jar is used)</p>
 <div class="source">
 <pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div>
 <p>Search Service with a classifier :</p>
 <div class="source">
-<pre>        SearchRequest searchRequest = new SearchRequest();
-        searchRequest.setGroupId( &quot;commons-logging&quot; );
-        searchRequest.setArtifactId( &quot;commons-logging&quot; );
-        searchRequest.setClassifier( &quot;sources&quot; );
-
-        List&lt;Artifact&gt; artifacts = searchService.searchArtifacts( searchRequest );
-</pre></div>
+<pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div>
 <p>Search Service with a classifier :</p>
 <div class="source">
-<pre>        SearchRequest searchRequest = new SearchRequest();
-        searchRequest.setGroupId( &quot;commons-logging&quot; );
-        searchRequest.setArtifactId( &quot;commons-logging&quot; );
-        searchRequest.setClassifier( &quot;sources&quot; );
-
-        List&lt;Artifact&gt; artifacts = searchService.searchArtifacts( searchRequest );
-</pre></div>
+<pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div>
 <p>Copy Artifact from a repository to an other one :</p>
 <p>For some reasons you want to use a test repository before moving your artifacts to a repository used by final users. To achieve this, you can use a service which can copy an artifact from a repository to an other one</p>
 <div class="source">
-<pre>// configure the artifact you want to copy
-// if package ommited default will be jar
-ArtifactTransferRequest artifactTransferRequest = new ArtifactTransferRequest();
-artifactTransferRequest.setGroupId( &quot;org.apache.karaf.features&quot; );
-artifactTransferRequest.setArtifactId( &quot;org.apache.karaf.features.core&quot; );
-artifactTransferRequest.setVersion( &quot;2.2.2&quot; );
-artifactTransferRequest.setRepositoryId( SOURCE_REPO_ID );
-artifactTransferRequest.setTargetRepositoryId( TARGET_REPO_ID );
-// retrieve the service
-RepositoriesService repositoriesService = getRepositoriesService( authorizationHeader );
-// copy the artifact
-Boolean res = repositoriesService.copyArtifact( artifactTransferRequest );
-</pre></div>
+<pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div>
 <p>To know all the possible options, you can refer to the javadoc of SearchRequest class.</p></div>
 <div class="section">
 <h3><a name="Browse_Service"></a>Browse Service</h3>
 <p>Get a Browse Service Client :</p>
 <div class="source">
-<pre>        BrowseService service =
-            JAXRSClientFactory.create( getBaseUrl() + &quot;/&quot; + getRestServicesPath() + &quot;/archivaServices/&quot;,
-                                       BrowseService.class,
-                                       Collections.singletonList( new JacksonJaxbJsonProvider() ) );
-        // to add authentification
-        if ( authzHeader != null )
-        {
-            WebClient.client( service ).header( &quot;Authorization&quot;, authzHeader );
-        }
-
-        WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( 100000000 );
-        if ( useXml )
-        {
-            WebClient.client( service ).accept( MediaType.APPLICATION_XML_TYPE );
-            WebClient.client( service ).type( MediaType.APPLICATION_XML_TYPE );
-        }
-        else
-        {
-            WebClient.client( service ).accept( MediaType.APPLICATION_JSON_TYPE );
-            WebClient.client( service ).type( MediaType.APPLICATION_JSON_TYPE );
-        }
-        return service;
-</pre></div>
+<pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div>
 <p>Get artifacts based on project version metadata, generic metadata added previously in Archiva :</p>
 <div class="source">
-<pre>        BrowseService browseService = getBrowseService( authorizationHeader, true );
-
-        browseService.addMetadata( &quot;commons-cli&quot;, &quot;commons-cli&quot;, &quot;1.0&quot;, &quot;wine&quot;, &quot;bordeaux&quot;, TEST_REPO_ID );
-
-        List&lt;Artifact&gt; artifactDownloadInfos =
-            browseService.getArtifactsByProjectVersionMetadata( &quot;wine&quot;, &quot;bordeaux&quot;, TEST_REPO_ID );
-
-        assertThat( artifactDownloadInfos ).isNotNull().isNotEmpty().hasSize( 3 );
-</pre></div>
+<pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div>
 <p>Get artifacts based on the artifact properties :</p>
 <div class="source">
-<pre>        BrowseService browseService = getBrowseService( authorizationHeader, true );
-
-        List&lt;Artifact&gt; artifactDownloadInfos = browseService.getArtifactsByMetadata( &quot;type&quot;, &quot;pom&quot;, TEST_REPO_ID );
-
-        assertThat( artifactDownloadInfos ).isNotNull().isNotEmpty().hasSize( 11 );
-</pre></div>
+<pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div>
 <p>Get artifacts based on the project properties from POM :</p>
 <div class="source">
-<pre>        BrowseService browseService = getBrowseService( authorizationHeader, true );
-
-        List&lt;Artifact&gt; artifactDownloadInfos =
-            browseService.getArtifactsByProperty( &quot;org.name&quot;, &quot;The Apache Software Foundation&quot;, TEST_REPO_ID );
-
-        assertThat( artifactDownloadInfos ).isNotNull().isNotEmpty().hasSize( 7 );
-</pre></div>
+<pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div>
 <p>Searching by properties and metadata :</p>
 <div class="source">
-<pre>        BrowseService browseService = getBrowseService( authorizationHeader, true );
-
-        List&lt;Artifact&gt; artifactDownloadInfos =
-            browseService.searchArtifacts( &quot;org.name&quot;, &quot;The Apache Software Foundation&quot;, TEST_REPO_ID, true );
-
-        assertThat( artifactDownloadInfos ).isNotNull().isNotEmpty().hasSize( 7 );
-</pre></div>
+<pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div>
 <div class="source">
-<pre>        BrowseService browseService = getBrowseService( authorizationHeader, true );
-
-        List&lt;Artifact&gt; artifactDownloadInfos =
-            browseService.searchArtifacts( &quot;The Apache Software Foundation&quot;, TEST_REPO_ID, true );
-
-        assertThat( artifactDownloadInfos ).isNotNull().isNotEmpty().hasSize( 7 );
-</pre></div>
+<pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div>
 <p>Get Search</p>
 <div class="source">
-<pre>List&lt;Artifact&gt; artifacts = searchService.quickSearch( &quot;commons-logging&quot; );
-// return all artifacts with groupId OR artifactId OR version OR packaging OR className
-// NOTE : only artifacts with classifier empty are returned
-</pre></div>
+<pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div>
 <p>Dependencies to add in order to use those REST Services</p>
 <div class="source">
-<pre>      &lt;dependency&gt;
-        &lt;groupId&gt;com.fasterxml.jackson.jaxrs&lt;/groupId&gt;
-        &lt;artifactId&gt;jackson-jaxrs-json-provider&lt;/artifactId&gt;
-        &lt;version&gt;${jacksonVersion}&lt;/version&gt;
-      &lt;/dependency&gt;
-      &lt;dependency&gt;
-        &lt;groupId&gt;com.fasterxml.jackson.jaxrs&lt;/groupId&gt;
-        &lt;artifactId&gt;jackson-jaxrs-xml-provider&lt;/artifactId&gt;
-        &lt;version&gt;${jacksonVersion}&lt;/version&gt;
-      &lt;/dependency&gt;
-      &lt;dependency&gt;
-        &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt;
-        &lt;artifactId&gt;jackson-annotations&lt;/artifactId&gt;
-        &lt;version&gt;${jacksonVersion}&lt;/version&gt;
-      &lt;/dependency&gt;
-      &lt;dependency&gt;
-        &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt;
-        &lt;artifactId&gt;cxf-rt-frontend-jaxrs&lt;/artifactId&gt;
-        &lt;version&gt;${cxf.version}&lt;/version&gt;
-      &lt;/dependency&gt;
-
-      &lt;dependency&gt;
-        &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt;
-        &lt;artifactId&gt;cxf-rt-rs-client&lt;/artifactId&gt;
-        &lt;version&gt;${cxf.version}&lt;/version&gt;
-      &lt;/dependency&gt;
-
-      &lt;dependency&gt;
-        &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt;
-        &lt;artifactId&gt;cxf-rt-rs-extension-providers&lt;/artifactId&gt;
-        &lt;version&gt;${cxf.version}&lt;/version&gt;
-      &lt;/dependency&gt;
-      &lt;dependency&gt;
-        &lt;groupId&gt;org.apache.archiva&lt;/groupId&gt;
-        &lt;artifactId&gt;archiva-rest-api&lt;/artifactId&gt;
-        &lt;version&gt;${project.version}&lt;/version&gt;
-      &lt;/dependency&gt;
-</pre></div>
+<pre>Error during retrieving content skip as ignoreDownloadError activated.</pre></div>
 <p>Current versions use in Apache Archiva:</p>
 <ul>
 <li>${project.version}: 2.2.1</li>
