You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ah...@apache.org on 2007/05/10 23:39:57 UTC
svn commit: r537005 - in /maven/archiva/branches/archiva-0.9:
archiva-configuration/src/main/mdo/
archiva-core/src/main/java/org/apache/maven/archiva/configuration/
archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/
archiva-proxy/src/test/java...
Author: aheritier
Date: Thu May 10 14:39:56 2007
New Revision: 537005
URL: http://svn.apache.org/viewvc?view=rev&rev=537005
Log:
MRM-212 : configure checksum policy for proxied repository
Modified:
maven/archiva/branches/archiva-0.9/archiva-configuration/src/main/mdo/configuration.mdo
maven/archiva/branches/archiva-0.9/archiva-core/src/main/java/org/apache/maven/archiva/configuration/DefaultConfiguredRepositoryFactory.java
maven/archiva/branches/archiva-0.9/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultProxyRequestHandler.java
maven/archiva/branches/archiva-0.9/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ProxyRequestHandlerTest.java
maven/archiva/branches/archiva-0.9/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/proxiedRepositoryForm.jspf
maven/archiva/branches/archiva-0.9/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxiedRepositories.jsp
Modified: maven/archiva/branches/archiva-0.9/archiva-configuration/src/main/mdo/configuration.mdo
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-0.9/archiva-configuration/src/main/mdo/configuration.mdo?view=diff&rev=537005&r1=537004&r2=537005
==============================================================================
--- maven/archiva/branches/archiva-0.9/archiva-configuration/src/main/mdo/configuration.mdo (original)
+++ maven/archiva/branches/archiva-0.9/archiva-configuration/src/main/mdo/configuration.mdo Thu May 10 14:39:56 2007
@@ -1,537 +1,548 @@
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one
- ~ or more contributor license agreements. See the NOTICE file
- ~ distributed with this work for additional information
- ~ regarding copyright ownership. The ASF licenses this file
- ~ to you under the Apache License, Version 2.0 (the
- ~ "License"); you may not use this file except in compliance
- ~ with the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing,
- ~ software distributed under the License is distributed on an
- ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- ~ KIND, either express or implied. See the License for the
- ~ specific language governing permissions and limitations
- ~ under the License.
- -->
-
-<model>
- <id>configuration</id>
- <name>Configuration</name>
- <description>
- Configuration for the Maven Repository Manager.
- </description>
- <defaults>
- <default>
- <key>package</key>
- <value>org.apache.maven.archiva.configuration</value>
- </default>
- </defaults>
- <classes>
- <class rootElement="true" xml.tagName="configuration">
- <name>Configuration</name>
- <version>1.0.0</version>
- <fields>
- <field>
- <name>repositories</name>
- <version>1.0.0</version>
- <association>
- <type>RepositoryConfiguration</type>
- <multiplicity>*</multiplicity>
- </association>
- </field>
- <field>
- <name>proxiedRepositories</name>
- <version>1.0.0</version>
- <association>
- <type>ProxiedRepositoryConfiguration</type>
- <multiplicity>*</multiplicity>
- </association>
- </field>
- <field>
- <name>syncedRepositories</name>
- <version>1.0.0</version>
- <association>
- <type>SyncedRepositoryConfiguration</type>
- <multiplicity>*</multiplicity>
- </association>
- </field>
- <field>
- <name>localRepository</name>
- <version>1.0.0</version>
- <type>String</type>
- <description>
- The location of the local repository.
- </description>
- </field>
- <field>
- <name>indexPath</name>
- <version>1.0.0</version>
- <type>String</type>
- <description>
- The location of the Lucene index to use for the repository. The default is the .index subdirectory of
- the repository.
- </description>
- </field>
- <field>
- <name>minimalIndexPath</name>
- <version>1.0.0</version>
- <type>String</type>
- <description>
- The location of the reduced Lucene index to use for the repository. The default is the .small-index
- subdirectory of the repository.
- </description>
- </field>
- <field>
- <name>dataRefreshCronExpression</name>
- <version>1.0.0</version>
- <type>String</type>
- <description>When to run the data refresh task. Default is every 30 mins (translated as every 0 and 30 minute reading of every hour)</description>
- <defaultValue>0 0,30 * * * ?</defaultValue>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+
+<model>
+ <id>configuration</id>
+ <name>Configuration</name>
+ <description>
+ Configuration for the Maven Repository Manager.
+ </description>
+ <defaults>
+ <default>
+ <key>package</key>
+ <value>org.apache.maven.archiva.configuration</value>
+ </default>
+ </defaults>
+ <classes>
+ <class rootElement="true" xml.tagName="configuration">
+ <name>Configuration</name>
+ <version>1.0.0</version>
+ <fields>
+ <field>
+ <name>repositories</name>
+ <version>1.0.0</version>
+ <association>
+ <type>RepositoryConfiguration</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>proxiedRepositories</name>
+ <version>1.0.0</version>
+ <association>
+ <type>ProxiedRepositoryConfiguration</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>syncedRepositories</name>
+ <version>1.0.0</version>
+ <association>
+ <type>SyncedRepositoryConfiguration</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>localRepository</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <description>
+ The location of the local repository.
+ </description>
+ </field>
+ <field>
+ <name>indexPath</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <description>
+ The location of the Lucene index to use for the repository. The default is the .index subdirectory of
+ the repository.
+ </description>
+ </field>
+ <field>
+ <name>minimalIndexPath</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <description>
+ The location of the reduced Lucene index to use for the repository. The default is the .small-index
+ subdirectory of the repository.
+ </description>
+ </field>
+ <field>
+ <name>dataRefreshCronExpression</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <description>When to run the data refresh task. Default is every 30 mins (translated as every 0 and 30 minute reading of every hour)</description>
+ <defaultValue>0 0,30 * * * ?</defaultValue>
</field>
<!--
- <field>
- <name>globalBlackListPatterns</name>
- <version>1.0.0</version>
- <description>Blacklisted patterns in the discovery process</description>
- <association>
- <type>String</type>
- <multiplicity>*</multiplicity>
- </association>
- </field>
- -->
- <field>
- <name>proxy</name>
- <version>1.0.0</version>
- <association>
- <type>Proxy</type>
- </association>
- <description>The network proxy to use for outgoing requests.</description>
- </field>
- </fields>
- <codeSegments>
- <codeSegment>
- <version>1.0.0</version>
- <code><![CDATA[
- public Configuration()
- {
- localRepository = new java.io.File( System.getProperty( "user.home" ), ".m2/repository" ).getAbsolutePath();
- }
-
- public boolean isValid()
- {
- boolean valid = true;
-
- if ( indexPath == null )
- {
- valid = false;
- }
- else if ( getRepositories().isEmpty() )
- {
- valid = false;
- }
- return valid;
- }
-
- /**
- * Perform any Upgrades and Adjustments needed to bring configuration up to the
- * current configuration format.
- */
- public void sanitize()
- {
- for ( java.util.Iterator i = getRepositories().iterator(); i.hasNext(); )
- {
- RepositoryConfiguration repo = (RepositoryConfiguration) i.next();
-
- // Ensure that the repo.urlName is set.
- if ( org.codehaus.plexus.util.StringUtils.isEmpty( repo.getUrlName() ) )
- {
- repo.setUrlName( repo.getId() );
- }
- }
- }
-
- public RepositoryConfiguration getRepositoryByUrlName( String urlName )
- {
- for ( java.util.Iterator i = getRepositories().iterator(); i.hasNext(); )
- {
- RepositoryConfiguration repository = (RepositoryConfiguration) i.next();
- if ( urlName != null ? urlName.equals( repository.getUrlName() ) : repository.getUrlName() == null )
- {
- return repository;
- }
- }
- return null;
- }
-
- public RepositoryConfiguration getRepositoryById( String id )
- {
- for ( java.util.Iterator i = getRepositories().iterator(); i.hasNext(); )
- {
- RepositoryConfiguration repository = (RepositoryConfiguration) i.next();
- if ( id != null ? id.equals( repository.getId() ) : repository.getId() == null )
- {
- return repository;
- }
- }
- return null;
- }
-
- public SyncedRepositoryConfiguration getSyncedRepositoryById( String id )
- {
- for ( java.util.Iterator i = getSyncedRepositories().iterator(); i.hasNext(); )
- {
- SyncedRepositoryConfiguration repository = (SyncedRepositoryConfiguration) i.next();
- if ( id != null ? id.equals( repository.getId() ) : repository.getId() == null )
- {
- return repository;
- }
- }
- return null;
- }
-
- public ProxiedRepositoryConfiguration getProxiedRepositoryById( String id )
- {
- for ( java.util.Iterator i = getProxiedRepositories().iterator(); i.hasNext(); )
- {
- ProxiedRepositoryConfiguration repository = (ProxiedRepositoryConfiguration) i.next();
- if ( id != null ? id.equals( repository.getId() ) : repository.getId() == null )
- {
- return repository;
- }
- }
- return null;
- }
-
- private java.util.Map repositoriesMap;
-
- public java.util.Map getRepositoriesMap()
- {
- if ( repositoriesMap == null )
- {
- repositoriesMap = new java.util.HashMap();
- for ( java.util.Iterator i = getRepositories().iterator(); i.hasNext(); )
- {
- RepositoryConfiguration repository = (RepositoryConfiguration) i.next();
- repositoriesMap.put( repository.getId(), repository );
- }
- }
- return repositoriesMap;
- }
-
- private java.util.Map proxiedRepositoriesMap;
-
- public java.util.Map getProxiedRepositoriesMap()
- {
- if ( proxiedRepositoriesMap == null )
- {
- proxiedRepositoriesMap = new java.util.HashMap();
- for ( java.util.Iterator i = getProxiedRepositories().iterator(); i.hasNext(); )
- {
- ProxiedRepositoryConfiguration repository = (ProxiedRepositoryConfiguration) i.next();
- proxiedRepositoriesMap.put( repository.getId(), repository );
- }
- }
- return proxiedRepositoriesMap;
- }
-
- private java.util.Map syncedRepositoriesMap;
-
- public java.util.Map getSyncedRepositoriesMap()
- {
- if ( syncedRepositoriesMap == null )
- {
- syncedRepositoriesMap = new java.util.HashMap();
- for ( java.util.Iterator i = getSyncedRepositories().iterator(); i.hasNext(); )
- {
- SyncedRepositoryConfiguration repository = (SyncedRepositoryConfiguration) i.next();
- syncedRepositoriesMap.put( repository.getId(), repository );
- }
- }
- return syncedRepositoriesMap;
- }
- ]]></code>
- </codeSegment>
- </codeSegments>
- </class>
- <class>
- <name>AbstractRepositoryConfiguration</name>
- <abstract>true</abstract>
- <version>1.0.0</version>
- <fields>
- <field>
- <name>id</name>
- <version>1.0.0</version>
- <type>String</type>
- <required>true</required>
- <description>
- The repository identifier.
- </description>
- </field>
- <field>
- <name>name</name>
- <version>1.0.0</version>
- <type>String</type>
- <required>true</required>
- <description>
- The descriptive name of the repository.
- </description>
- </field>
- <field>
- <name>layout</name>
- <version>1.0.0</version>
- <type>String</type>
- <required>true</required>
- <description>
- The layout of the repository. Valid values are "default" and "legacy".
- </description>
- <!-- TODO: should be able to detect this from the repository (perhaps by metadata at the root) -->
- <defaultValue>default</defaultValue>
- </field>
- </fields>
- <codeSegments>
- <codeSegment>
- <version>1.0.0</version>
- <code><![CDATA[
- public String toString()
- {
- return name + " (" + id + ")";
- }
- ]]></code>
- </codeSegment>
- </codeSegments>
- </class>
- <class>
- <superClass>AbstractRepositoryConfiguration</superClass>
- <name>RepositoryConfiguration</name>
- <version>1.0.0</version>
- <fields>
- <field>
- <name>urlName</name>
- <version>1.0.0</version>
- <type>String</type>
- <required>true</required>
- <description>
- The URL name for this repository.
- Used to create the WebDAV URL for the repository such like - http://hostname.com/repository/${urlName}/
- </description>
- </field>
- <field>
- <name>directory</name>
- <version>1.0.0</version>
- <type>String</type>
- <required>true</required>
- <description>
- The location of the repository to monitor.
- </description>
- </field>
- <field>
- <name>includeSnapshots</name>
- <version>1.0.0</version>
- <type>boolean</type>
- <description>Whether to include snapshot versions in the discovery process</description>
- <defaultValue>false</defaultValue>
- </field>
- <field>
- <name>indexed</name>
- <version>1.0.0</version>
- <type>boolean</type>
- <description>Whether to index the artifacts in this repository.</description>
- <defaultValue>true</defaultValue>
- </field>
- <field>
- <name>blackListPatterns</name>
- <version>1.0.0</version>
- <description>Blacklisted patterns in the discovery process</description>
- <association>
- <type>String</type>
- <multiplicity>*</multiplicity>
- </association>
- </field>
- </fields>
- </class>
- <class>
- <superClass>AbstractRepositoryConfiguration</superClass>
- <name>ProxiedRepositoryConfiguration</name>
- <version>1.0.0</version>
- <fields>
- <field>
- <name>url</name>
- <version>1.0.0</version>
- <type>String</type>
- <required>true</required>
- <description>
- The URL of the remote repository to proxy.
- </description>
- </field>
- <!-- TODO: would be much easier to have an association here, as long as it could be specified as a reference -->
- <field>
- <name>managedRepository</name>
- <version>1.0.0</version>
- <required>true</required>
- <type>String</type>
- <description>
- The ID of the managed repository to use as the local storage for proxied artifacts.
- </description>
- </field>
- <field>
- <name>snapshotsPolicy</name>
- <version>1.0.0</version>
- <type>String</type>
- <defaultValue>disabled</defaultValue>
- <description>
- The policy for snapshots: one of disabled, daily, hourly, interval, never
- (allow snapshots, but never update once retrieved).
- </description>
- </field>
- <field>
- <name>snapshotsInterval</name>
- <version>1.0.0</version>
- <type>int</type>
- <description>
- The interval in minutes before updating snapshots if the policy is set to 'interval'.
- </description>
- </field>
- <field>
- <name>releasesPolicy</name>
- <version>1.0.0</version>
- <type>String</type>
- <defaultValue>daily</defaultValue>
- <description>
- The policy for releases: one of disabled, daily, hourly, interval, never
- (allow releases, but never update once retrieved).
- </description>
- </field>
- <field>
- <name>releasesInterval</name>
- <version>1.0.0</version>
- <type>int</type>
- <description>
- The interval in minutes before updating releases if the policy is set to 'interval'.
- </description>
- </field>
- <field>
- <name>useNetworkProxy</name>
- <version>1.0.0</version>
- <type>boolean</type>
- <defaultValue>false</defaultValue>
- <description>
- Whether to use the network proxy, if one is configured for the protocol of this repository.
- </description>
- </field>
- <field>
- <name>cacheFailures</name>
- <version>1.0.0</version>
- <type>boolean</type>
- <defaultValue>false</defaultValue>
- <description>
- Whether to cache failures to avoid re-attempting them over the network. The cache will last for the duration
- of the intervals specified above depending on whether it a release or snapshot.
- </description>
- </field>
- <field>
- <name>hardFail</name>
- <version>1.0.0</version>
- <type>boolean</type>
- <defaultValue>false</defaultValue>
- <description>
- Whether to cause the entire request to fail if attempts to retrieve from this proxy fail.
- </description>
- </field>
- </fields>
- </class>
- <class>
- <superClass>AbstractRepositoryConfiguration</superClass>
- <name>SyncedRepositoryConfiguration</name>
- <abstract>true</abstract>
- <version>1.0.0</version>
- <fields>
- <!-- TODO: would be much easier to have an association here, as long as it could be specified as a reference -->
- <field>
- <name>managedRepository</name>
- <version>1.0.0</version>
- <required>true</required>
- <type>String</type>
- <description>
- The ID of the managed repository to use as the local storage for proxied artifacts.
- </description>
- </field>
- <field>
- <name>cronExpression</name>
- <version>1.0.0</version>
- <type>String</type>
- <description>When to run the sync mechanism. Default is every hour on the hour.</description>
- <defaultValue>0 0 * * * ?</defaultValue>
- </field>
- <field>
- <name>method</name>
- <version>1.0.0</version>
- <type>String</type>
- <description>The type of synchronization to use.</description>
- <defaultValue>rsync</defaultValue>
- </field>
- <field>
- <name>properties</name>
- <version>1.0.0</version>
- <type>Properties</type>
- <description>Configuration for the repository synchronization.</description>
- <association xml.mapStyle="inline">
- <type>String</type>
- <multiplicity>*</multiplicity>
- </association>
- </field>
- </fields>
- </class>
- <class>
- <name>Proxy</name>
- <version>1.0.0</version>
- <fields>
- <field>
- <name>protocol</name>
- <version>1.0.0</version>
- <description><![CDATA[The proxy protocol.]]></description>
- <type>String</type>
- <defaultValue>http</defaultValue>
- </field>
- <field>
- <name>username</name>
- <version>1.0.0</version>
- <description><![CDATA[The proxy user.]]></description>
- <type>String</type>
- </field>
- <field>
- <name>password</name>
- <version>1.0.0</version>
- <description><![CDATA[The proxy password.]]></description>
- <type>String</type>
- </field>
- <field>
- <name>port</name>
- <version>1.0.0</version>
- <description><![CDATA[The proxy port.]]></description>
- <type>int</type>
- <defaultValue>8080</defaultValue>
- </field>
- <field>
- <name>host</name>
- <version>1.0.0</version>
- <description><![CDATA[The proxy host.]]></description>
- <type>String</type>
- <required>true</required>
- </field>
- <field>
- <name>nonProxyHosts</name>
- <version>1.0.0</version>
- <description><![CDATA[
- The list of non-proxied hosts (delimited by |).
- ]]></description>
- <type>String</type>
- </field>
- </fields>
- </class>
- </classes>
-</model>
-
-
+ <field>
+ <name>globalBlackListPatterns</name>
+ <version>1.0.0</version>
+ <description>Blacklisted patterns in the discovery process</description>
+ <association>
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ -->
+ <field>
+ <name>proxy</name>
+ <version>1.0.0</version>
+ <association>
+ <type>Proxy</type>
+ </association>
+ <description>The network proxy to use for outgoing requests.</description>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>1.0.0</version>
+ <code><![CDATA[
+ public Configuration()
+ {
+ localRepository = new java.io.File( System.getProperty( "user.home" ), ".m2/repository" ).getAbsolutePath();
+ }
+
+ public boolean isValid()
+ {
+ boolean valid = true;
+
+ if ( indexPath == null )
+ {
+ valid = false;
+ }
+ else if ( getRepositories().isEmpty() )
+ {
+ valid = false;
+ }
+ return valid;
+ }
+
+ /**
+ * Perform any Upgrades and Adjustments needed to bring configuration up to the
+ * current configuration format.
+ */
+ public void sanitize()
+ {
+ for ( java.util.Iterator i = getRepositories().iterator(); i.hasNext(); )
+ {
+ RepositoryConfiguration repo = (RepositoryConfiguration) i.next();
+
+ // Ensure that the repo.urlName is set.
+ if ( org.codehaus.plexus.util.StringUtils.isEmpty( repo.getUrlName() ) )
+ {
+ repo.setUrlName( repo.getId() );
+ }
+ }
+ }
+
+ public RepositoryConfiguration getRepositoryByUrlName( String urlName )
+ {
+ for ( java.util.Iterator i = getRepositories().iterator(); i.hasNext(); )
+ {
+ RepositoryConfiguration repository = (RepositoryConfiguration) i.next();
+ if ( urlName != null ? urlName.equals( repository.getUrlName() ) : repository.getUrlName() == null )
+ {
+ return repository;
+ }
+ }
+ return null;
+ }
+
+ public RepositoryConfiguration getRepositoryById( String id )
+ {
+ for ( java.util.Iterator i = getRepositories().iterator(); i.hasNext(); )
+ {
+ RepositoryConfiguration repository = (RepositoryConfiguration) i.next();
+ if ( id != null ? id.equals( repository.getId() ) : repository.getId() == null )
+ {
+ return repository;
+ }
+ }
+ return null;
+ }
+
+ public SyncedRepositoryConfiguration getSyncedRepositoryById( String id )
+ {
+ for ( java.util.Iterator i = getSyncedRepositories().iterator(); i.hasNext(); )
+ {
+ SyncedRepositoryConfiguration repository = (SyncedRepositoryConfiguration) i.next();
+ if ( id != null ? id.equals( repository.getId() ) : repository.getId() == null )
+ {
+ return repository;
+ }
+ }
+ return null;
+ }
+
+ public ProxiedRepositoryConfiguration getProxiedRepositoryById( String id )
+ {
+ for ( java.util.Iterator i = getProxiedRepositories().iterator(); i.hasNext(); )
+ {
+ ProxiedRepositoryConfiguration repository = (ProxiedRepositoryConfiguration) i.next();
+ if ( id != null ? id.equals( repository.getId() ) : repository.getId() == null )
+ {
+ return repository;
+ }
+ }
+ return null;
+ }
+
+ private java.util.Map repositoriesMap;
+
+ public java.util.Map getRepositoriesMap()
+ {
+ if ( repositoriesMap == null )
+ {
+ repositoriesMap = new java.util.HashMap();
+ for ( java.util.Iterator i = getRepositories().iterator(); i.hasNext(); )
+ {
+ RepositoryConfiguration repository = (RepositoryConfiguration) i.next();
+ repositoriesMap.put( repository.getId(), repository );
+ }
+ }
+ return repositoriesMap;
+ }
+
+ private java.util.Map proxiedRepositoriesMap;
+
+ public java.util.Map getProxiedRepositoriesMap()
+ {
+ if ( proxiedRepositoriesMap == null )
+ {
+ proxiedRepositoriesMap = new java.util.HashMap();
+ for ( java.util.Iterator i = getProxiedRepositories().iterator(); i.hasNext(); )
+ {
+ ProxiedRepositoryConfiguration repository = (ProxiedRepositoryConfiguration) i.next();
+ proxiedRepositoriesMap.put( repository.getId(), repository );
+ }
+ }
+ return proxiedRepositoriesMap;
+ }
+
+ private java.util.Map syncedRepositoriesMap;
+
+ public java.util.Map getSyncedRepositoriesMap()
+ {
+ if ( syncedRepositoriesMap == null )
+ {
+ syncedRepositoriesMap = new java.util.HashMap();
+ for ( java.util.Iterator i = getSyncedRepositories().iterator(); i.hasNext(); )
+ {
+ SyncedRepositoryConfiguration repository = (SyncedRepositoryConfiguration) i.next();
+ syncedRepositoriesMap.put( repository.getId(), repository );
+ }
+ }
+ return syncedRepositoriesMap;
+ }
+ ]]></code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class>
+ <name>AbstractRepositoryConfiguration</name>
+ <abstract>true</abstract>
+ <version>1.0.0</version>
+ <fields>
+ <field>
+ <name>id</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <required>true</required>
+ <description>
+ The repository identifier.
+ </description>
+ </field>
+ <field>
+ <name>name</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <required>true</required>
+ <description>
+ The descriptive name of the repository.
+ </description>
+ </field>
+ <field>
+ <name>layout</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <required>true</required>
+ <description>
+ The layout of the repository. Valid values are "default" and "legacy".
+ </description>
+ <!-- TODO: should be able to detect this from the repository (perhaps by metadata at the root) -->
+ <defaultValue>default</defaultValue>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>1.0.0</version>
+ <code><![CDATA[
+ public String toString()
+ {
+ return name + " (" + id + ")";
+ }
+ ]]></code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class>
+ <superClass>AbstractRepositoryConfiguration</superClass>
+ <name>RepositoryConfiguration</name>
+ <version>1.0.0</version>
+ <fields>
+ <field>
+ <name>urlName</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <required>true</required>
+ <description>
+ The URL name for this repository.
+ Used to create the WebDAV URL for the repository such like - http://hostname.com/repository/${urlName}/
+ </description>
+ </field>
+ <field>
+ <name>directory</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <required>true</required>
+ <description>
+ The location of the repository to monitor.
+ </description>
+ </field>
+ <field>
+ <name>includeSnapshots</name>
+ <version>1.0.0</version>
+ <type>boolean</type>
+ <description>Whether to include snapshot versions in the discovery process</description>
+ <defaultValue>false</defaultValue>
+ </field>
+ <field>
+ <name>indexed</name>
+ <version>1.0.0</version>
+ <type>boolean</type>
+ <description>Whether to index the artifacts in this repository.</description>
+ <defaultValue>true</defaultValue>
+ </field>
+ <field>
+ <name>blackListPatterns</name>
+ <version>1.0.0</version>
+ <description>Blacklisted patterns in the discovery process</description>
+ <association>
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <superClass>AbstractRepositoryConfiguration</superClass>
+ <name>ProxiedRepositoryConfiguration</name>
+ <version>1.0.0</version>
+ <fields>
+ <field>
+ <name>url</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <required>true</required>
+ <description>
+ The URL of the remote repository to proxy.
+ </description>
+ </field>
+ <!-- TODO: would be much easier to have an association here, as long as it could be specified as a reference -->
+ <field>
+ <name>managedRepository</name>
+ <version>1.0.0</version>
+ <required>true</required>
+ <type>String</type>
+ <description>
+ The ID of the managed repository to use as the local storage for proxied artifacts.
+ </description>
+ </field>
+ <field>
+ <name>snapshotsPolicy</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <defaultValue>disabled</defaultValue>
+ <description>
+ The policy for snapshots: one of disabled, daily, hourly, interval, never
+ (allow snapshots, but never update once retrieved).
+ </description>
+ </field>
+ <field>
+ <name>snapshotsInterval</name>
+ <version>1.0.0</version>
+ <type>int</type>
+ <description>
+ The interval in minutes before updating snapshots if the policy is set to 'interval'.
+ </description>
+ </field>
+ <field>
+ <name>releasesPolicy</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <defaultValue>daily</defaultValue>
+ <description>
+ The policy for releases: one of disabled, daily, hourly, interval, never
+ (allow releases, but never update once retrieved).
+ </description>
+ </field>
+ <field>
+ <name>checksumPolicy</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <defaultValue>fail</defaultValue>
+ <description>
+ The policy for checksum: one of fail, warn, ignore.
+ </description>
+ </field>
+ <field>
+ <name>releasesInterval</name>
+ <version>1.0.0</version>
+ <type>int</type>
+ <description>
+ The interval in minutes before updating releases if the policy is set to 'interval'.
+ </description>
+ </field>
+ <field>
+ <name>useNetworkProxy</name>
+ <version>1.0.0</version>
+ <type>boolean</type>
+ <defaultValue>false</defaultValue>
+ <description>
+ Whether to use the network proxy, if one is configured for the protocol of this repository.
+ </description>
+ </field>
+ <field>
+ <name>cacheFailures</name>
+ <version>1.0.0</version>
+ <type>boolean</type>
+ <defaultValue>false</defaultValue>
+ <description>
+ Whether to cache failures to avoid re-attempting them over the network. The cache will last for the duration
+ of the intervals specified above depending on whether it a release or snapshot.
+ </description>
+ </field>
+ <field>
+ <name>hardFail</name>
+ <version>1.0.0</version>
+ <type>boolean</type>
+ <defaultValue>false</defaultValue>
+ <description>
+ Whether to cause the entire request to fail if attempts to retrieve from this proxy fail.
+ </description>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <superClass>AbstractRepositoryConfiguration</superClass>
+ <name>SyncedRepositoryConfiguration</name>
+ <abstract>true</abstract>
+ <version>1.0.0</version>
+ <fields>
+ <!-- TODO: would be much easier to have an association here, as long as it could be specified as a reference -->
+ <field>
+ <name>managedRepository</name>
+ <version>1.0.0</version>
+ <required>true</required>
+ <type>String</type>
+ <description>
+ The ID of the managed repository to use as the local storage for proxied artifacts.
+ </description>
+ </field>
+ <field>
+ <name>cronExpression</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <description>When to run the sync mechanism. Default is every hour on the hour.</description>
+ <defaultValue>0 0 * * * ?</defaultValue>
+ </field>
+ <field>
+ <name>method</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <description>The type of synchronization to use.</description>
+ <defaultValue>rsync</defaultValue>
+ </field>
+ <field>
+ <name>properties</name>
+ <version>1.0.0</version>
+ <type>Properties</type>
+ <description>Configuration for the repository synchronization.</description>
+ <association xml.mapStyle="inline">
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>Proxy</name>
+ <version>1.0.0</version>
+ <fields>
+ <field>
+ <name>protocol</name>
+ <version>1.0.0</version>
+ <description><![CDATA[The proxy protocol.]]></description>
+ <type>String</type>
+ <defaultValue>http</defaultValue>
+ </field>
+ <field>
+ <name>username</name>
+ <version>1.0.0</version>
+ <description><![CDATA[The proxy user.]]></description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>password</name>
+ <version>1.0.0</version>
+ <description><![CDATA[The proxy password.]]></description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>port</name>
+ <version>1.0.0</version>
+ <description><![CDATA[The proxy port.]]></description>
+ <type>int</type>
+ <defaultValue>8080</defaultValue>
+ </field>
+ <field>
+ <name>host</name>
+ <version>1.0.0</version>
+ <description><![CDATA[The proxy host.]]></description>
+ <type>String</type>
+ <required>true</required>
+ </field>
+ <field>
+ <name>nonProxyHosts</name>
+ <version>1.0.0</version>
+ <description><![CDATA[
+ The list of non-proxied hosts (delimited by |).
+ ]]></description>
+ <type>String</type>
+ </field>
+ </fields>
+ </class>
+ </classes>
+</model>
+
+
+
+
Modified: maven/archiva/branches/archiva-0.9/archiva-core/src/main/java/org/apache/maven/archiva/configuration/DefaultConfiguredRepositoryFactory.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-0.9/archiva-core/src/main/java/org/apache/maven/archiva/configuration/DefaultConfiguredRepositoryFactory.java?view=diff&rev=537005&r1=537004&r2=537005
==============================================================================
--- maven/archiva/branches/archiva-0.9/archiva-core/src/main/java/org/apache/maven/archiva/configuration/DefaultConfiguredRepositoryFactory.java (original)
+++ maven/archiva/branches/archiva-0.9/archiva-core/src/main/java/org/apache/maven/archiva/configuration/DefaultConfiguredRepositoryFactory.java Thu May 10 14:39:56 2007
@@ -62,12 +62,12 @@
String updatePolicy =
getUpdatePolicy( configuration.getSnapshotsPolicy(), configuration.getSnapshotsInterval() );
ArtifactRepositoryPolicy snapshotsPolicy =
- new ArtifactRepositoryPolicy( enabled, updatePolicy, ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL );
+ new ArtifactRepositoryPolicy( enabled, updatePolicy, configuration.getChecksumPolicy() );
enabled = isEnabled( configuration.getReleasesPolicy() );
updatePolicy = getUpdatePolicy( configuration.getReleasesPolicy(), configuration.getReleasesInterval() );
ArtifactRepositoryPolicy releasesPolicy =
- new ArtifactRepositoryPolicy( enabled, updatePolicy, ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL );
+ new ArtifactRepositoryPolicy( enabled, updatePolicy, configuration.getChecksumPolicy() );
ArtifactRepositoryLayout layout = (ArtifactRepositoryLayout) repositoryLayouts.get( configuration.getLayout() );
Modified: maven/archiva/branches/archiva-0.9/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultProxyRequestHandler.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-0.9/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultProxyRequestHandler.java?view=diff&rev=537005&r1=537004&r2=537005
==============================================================================
--- maven/archiva/branches/archiva-0.9/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultProxyRequestHandler.java (original)
+++ maven/archiva/branches/archiva-0.9/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultProxyRequestHandler.java Thu May 10 14:39:56 2007
@@ -545,7 +545,7 @@
if ( downloaded )
{
- success = checkChecksum( checksums, path, wagon, repositoryCachePath );
+ success = checkChecksum( checksums, path, wagon, repositoryCachePath, policy );
if ( tries > 1 && !success )
{
@@ -671,11 +671,15 @@
return connected;
}
- private boolean checkChecksum( Map checksumMap, String path, Wagon wagon, String repositoryCachePath )
+ private boolean checkChecksum( Map checksumMap, String path, Wagon wagon, String repositoryCachePath, ArtifactRepositoryPolicy policy )
throws ProxyException
{
releaseChecksumListeners( wagon, checksumMap );
-
+
+ // Ignore checksum errors. Returns always true.
+ if ( ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE.equals( policy.getChecksumPolicy() ) )
+ return true;
+
boolean correctChecksum = false;
boolean allNotFound = true;
@@ -713,7 +717,8 @@
else
{
getLogger().warn(
- "The checksum '" + actualChecksum + "' did not match the remote value: " + remoteChecksum );
+ "The checksum '" + actualChecksum + "' did not match the remote value: "
+ + remoteChecksum );
}
}
catch ( TransferFailedException e )
@@ -759,7 +764,15 @@
tempChecksumFile.delete();
}
}
- return correctChecksum || allNotFound;
+ if ( ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN.equals( policy.getChecksumPolicy() ) )
+ {
+ // We are only interested to the warnings. The result is always true.
+ return true;
+ }
+ else
+ {
+ return correctChecksum || allNotFound;
+ }
}
/**
Modified: maven/archiva/branches/archiva-0.9/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ProxyRequestHandlerTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-0.9/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ProxyRequestHandlerTest.java?view=diff&rev=537005&r1=537004&r2=537005
==============================================================================
--- maven/archiva/branches/archiva-0.9/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ProxyRequestHandlerTest.java (original)
+++ maven/archiva/branches/archiva-0.9/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ProxyRequestHandlerTest.java Thu May 10 14:39:56 2007
@@ -100,7 +100,8 @@
requestHandler = (ProxyRequestHandler) lookup( ProxyRequestHandler.ROLE );
factory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE );
-
+ factory.setGlobalChecksumPolicy( ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL );
+
File repoLocation = getTestFile( "target/test-repository/managed" );
// faster only to delete this one before copying, the others are done case by case
FileUtils.deleteDirectory( new File( repoLocation, "org/apache/maven/test/get-merged-metadata" ) );
Modified: maven/archiva/branches/archiva-0.9/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/proxiedRepositoryForm.jspf
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-0.9/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/proxiedRepositoryForm.jspf?view=diff&rev=537005&r1=537004&r2=537005
==============================================================================
--- maven/archiva/branches/archiva-0.9/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/proxiedRepositoryForm.jspf (original)
+++ maven/archiva/branches/archiva-0.9/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/proxiedRepositoryForm.jspf Thu May 10 14:39:56 2007
@@ -34,9 +34,10 @@
'daily' : 'Enabled, updated daily',
'hourly' : 'Enabled, updated hourly',
'never' : 'Enabled, never updated',
- 'interval' : 'Enabled, updated on given interval'}"/>
-<ww:textfield label="Release update interval" name="releasesInterval" size="4"/>
-<ww:select list="configuration.repositoriesMap" name="managedRepository" label="Proxied through"/>
-<ww:checkbox name="useNetworkProxy" fieldValue="true" label="Use HTTP Proxy"/>
-<ww:checkbox name="cacheFailures" fieldValue="true" label="Cache Failures"/>
-<ww:checkbox name="hardFail" fieldValue="true" label="Fail Whole Group"/>
+ 'interval' : 'Enabled, updated on given interval'}" />
+<ww:textfield label="Release update interval" name="releasesInterval" size="4" />
+<ww:select list="configuration.repositoriesMap" name="managedRepository" label="Proxied through" />
+<ww:radio list="#@java.util.LinkedHashMap@{'fail' : 'Failure', 'warn' : 'Warning', 'ignore' : 'Ignore'}" name="checksumPolicy" label="Checksum Policy"/>
+<ww:checkbox name="useNetworkProxy" fieldValue="true" label="Use HTTP Proxy" />
+<ww:checkbox name="cacheFailures" fieldValue="true" label="Cache Failures" />
+<ww:checkbox name="hardFail" fieldValue="true" label="Fail Whole Group" />
Modified: maven/archiva/branches/archiva-0.9/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxiedRepositories.jsp
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-0.9/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxiedRepositories.jsp?view=diff&rev=537005&r1=537004&r2=537005
==============================================================================
--- maven/archiva/branches/archiva-0.9/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxiedRepositories.jsp (original)
+++ maven/archiva/branches/archiva-0.9/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxiedRepositories.jsp Thu May 10 14:39:56 2007
@@ -107,6 +107,16 @@
</td>
</tr>
<tr>
+ <th>Checksum policy</th>
+ <td>
+ <c:choose>
+ <c:when test="${repository.checksumPolicy == 'fail'}">Failure</c:when>
+ <c:when test="${repository.checksumPolicy == 'warn'}">Warning</c:when>
+ <c:otherwise>Ignore</c:otherwise>
+ </c:choose>
+ </td>
+ </tr>
+ <tr>
<th>Use HTTP Proxy</th>
<td class="${repository.useNetworkProxy ? 'donemark' : 'errormark'} booleanIcon"></td>
</tr>
@@ -124,4 +134,4 @@
</div>
</body>
-</html>
\ No newline at end of file
+</html>