Browse Source

Switching to enum for policy options

feature/storage_refactoring
Martin Stockhammer 4 years ago
parent
commit
363c4c9608
36 changed files with 461 additions and 183 deletions
  1. 6
    6
      archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/DefaultArchivaConfiguration.java
  2. 2
    2
      archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/MavenProxyPropertyLoader.java
  3. 5
    5
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/AbstractPolicy.java
  4. 8
    8
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/AbstractUpdatePolicy.java
  5. 6
    6
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/CachedFailuresPolicy.java
  6. 56
    0
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/ChecksumOption.java
  7. 7
    7
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/ChecksumPolicy.java
  8. 55
    0
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/DownloadErrorOption.java
  9. 1
    1
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/DownloadErrorPolicy.java
  10. 1
    1
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/DownloadPolicy.java
  11. 4
    4
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/Policy.java
  12. 33
    0
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/PolicyOption.java
  13. 34
    0
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/PolicyUtil.java
  14. 8
    7
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/PropagateErrorsDownloadPolicy.java
  15. 6
    6
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/PropagateErrorsOnUpdateDownloadPolicy.java
  16. 1
    1
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/ReleasesPolicy.java
  17. 1
    1
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/SnapshotsPolicy.java
  18. 55
    0
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/StandardOption.java
  19. 54
    0
      archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/UpdateOption.java
  20. 5
    5
      archiva-modules/archiva-base/archiva-policies/src/test/java/org/apache/archiva/policies/CachedFailuresPolicyTest.java
  21. 10
    9
      archiva-modules/archiva-base/archiva-policies/src/test/java/org/apache/archiva/policies/ChecksumPolicyTest.java
  22. 7
    7
      archiva-modules/archiva-base/archiva-policies/src/test/java/org/apache/archiva/policies/PropagateErrorsDownloadPolicyTest.java
  23. 5
    5
      archiva-modules/archiva-base/archiva-policies/src/test/java/org/apache/archiva/policies/PropagateErrorsOnUpdateDownloadPolicyTest.java
  24. 13
    13
      archiva-modules/archiva-base/archiva-policies/src/test/java/org/apache/archiva/policies/ReleasePolicyTest.java
  25. 13
    13
      archiva-modules/archiva-base/archiva-policies/src/test/java/org/apache/archiva/policies/SnapshotsPolicyTest.java
  26. 8
    11
      archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/archiva/proxy/DefaultRepositoryProxyHandler.java
  27. 14
    19
      archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java
  28. 3
    9
      archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/ErrorHandlingTest.java
  29. 6
    6
      archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/HttpProxyTransferTest.java
  30. 4
    4
      archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/MetadataToolsTest.java
  31. 9
    7
      archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/PolicyInformation.java
  32. 9
    12
      archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletProxiedTestCase.java
  33. 3
    2
      archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/RepositoryServletProxiedPluginSnapshotPolicyTest.java
  34. 3
    2
      archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/RepositoryServletProxiedReleasePolicyTest.java
  35. 3
    2
      archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/RepositoryServletProxiedSnapshotPolicyTest.java
  36. 3
    2
      archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/RepositoryServletProxiedTimestampedSnapshotPolicyTest.java

+ 6
- 6
archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/DefaultArchivaConfiguration.java View File

@@ -323,19 +323,19 @@ public class DefaultArchivaConfiguration
// Upgrade old policy settings.
if ("releases".equals(policyId) || "snapshots".equals(policyId)) {
if ("ignored".equals(setting)) {
setting = AbstractUpdatePolicy.ALWAYS;
setting = AbstractUpdatePolicy.ALWAYS.getId();
} else if ("disabled".equals(setting)) {
setting = AbstractUpdatePolicy.NEVER;
setting = AbstractUpdatePolicy.NEVER.getId();
}
} else if ("cache-failures".equals(policyId)) {
if ("ignored".equals(setting)) {
setting = CachedFailuresPolicy.NO;
setting = CachedFailuresPolicy.NO.getId();
} else if ("cached".equals(setting)) {
setting = CachedFailuresPolicy.YES;
setting = CachedFailuresPolicy.YES.getId();
}
} else if ("checksum".equals(policyId)) {
if ("ignored".equals(setting)) {
setting = ChecksumPolicy.IGNORE;
setting = ChecksumPolicy.IGNORE.getId();
}
}

@@ -344,7 +344,7 @@ public class DefaultArchivaConfiguration
Policy policy = findPolicy(policyId);
// Does option exist?
if (!policy.getOptions().contains(setting)) {
setting = policy.getDefaultOption();
setting = policy.getDefaultOption().getId();
}
connector.addPolicy(policyId, setting);
} else {

+ 2
- 2
archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/MavenProxyPropertyLoader.java View File

@@ -104,8 +104,8 @@ public class MavenProxyPropertyLoader
proxyConnector.setTargetRepoId( key );
proxyConnector.setProxyId( proxyKey );
// TODO: convert cachePeriod to closest "daily" or "hourly"
proxyConnector.addPolicy( ProxyConnectorConfiguration.POLICY_SNAPSHOTS, SnapshotsPolicy.DAILY );
proxyConnector.addPolicy( ProxyConnectorConfiguration.POLICY_RELEASES, ReleasesPolicy.ALWAYS );
proxyConnector.addPolicy( ProxyConnectorConfiguration.POLICY_SNAPSHOTS, SnapshotsPolicy.DAILY.getId() );
proxyConnector.addPolicy( ProxyConnectorConfiguration.POLICY_RELEASES, ReleasesPolicy.ALWAYS.getId() );

configuration.addProxyConnector( proxyConnector );
}

+ 5
- 5
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/AbstractPolicy.java View File

@@ -82,17 +82,17 @@ public abstract class AbstractPolicy implements Policy {
@Override
public String getDescription(Locale locale) {
return MessageFormat.format(getBundle(locale).getString(getPolicyPrefix() + "description")
, getOptions().stream().collect(Collectors.joining(",")));
, getOptions().stream().map(o -> o.getId()).collect(Collectors.joining(",")));
}

@Override
public String getOptionDescription(Locale locale, String option) {
return getBundle(locale).getString(getOptionPrefix()+option+".description");
public String getOptionDescription(Locale locale, PolicyOption option) {
return getBundle(locale).getString(getOptionPrefix()+option.getId()+".description");
}

@Override
public String getOptionName(Locale locale, String option) {
return getBundle(locale).getString(getOptionPrefix()+option+".name");
public String getOptionName(Locale locale, PolicyOption option) {
return getBundle(locale).getString(getOptionPrefix()+option.getId()+".name");
}

}

+ 8
- 8
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/AbstractUpdatePolicy.java View File

@@ -43,12 +43,12 @@ public abstract class AbstractUpdatePolicy
/**
* The ALWAYS policy setting means that the artifact is always updated from the remote repo.
*/
public static final String ALWAYS = "always";
public static final PolicyOption ALWAYS = UpdateOption.ALWAYS;

/**
* The NEVER policy setting means that the artifact is never updated from the remote repo.
*/
public static final String NEVER = "never";
public static final PolicyOption NEVER = UpdateOption.NEVER;

/**
* <p>
@@ -60,7 +60,7 @@ public abstract class AbstractUpdatePolicy
* <li>The local artifact has a last modified timestamp older than (now - 1 day).</li>
* </ul>
*/
public static final String DAILY = "daily";
public static final UpdateOption DAILY = UpdateOption.DAILY;

/**
* <p>
@@ -72,16 +72,16 @@ public abstract class AbstractUpdatePolicy
* <li>The local artifact has a last modified timestamp older than (now - 1 hour).</li>
* </ul>
*/
public static final String HOURLY = "hourly";
public static final UpdateOption HOURLY = UpdateOption.HOURLY;

/**
* The ONCE policy means that the artifact retrieval occurs only if the
* local artifact is not present. This means that the retrieval can only
* occur once.
*/
public static final String ONCE = "once";
public static final UpdateOption ONCE = UpdateOption.ONCE;

private List<String> options = new ArrayList<>( 5 );
private List<PolicyOption> options = new ArrayList<>( 5 );

public AbstractUpdatePolicy()
{
@@ -99,13 +99,13 @@ public abstract class AbstractUpdatePolicy
protected abstract String getUpdateMode();

@Override
public List<String> getOptions()
public List<PolicyOption> getOptions()
{
return options;
}

@Override
public void applyPolicy( String policySetting, Properties request, StorageAsset localFile )
public void applyPolicy( PolicyOption policySetting, Properties request, StorageAsset localFile )
throws PolicyViolationException, PolicyConfigurationException
{
if ( !StringUtils.equals( request.getProperty( "filetype" ), "artifact" ) )

+ 6
- 6
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/CachedFailuresPolicy.java View File

@@ -45,18 +45,18 @@ public class CachedFailuresPolicy
* The NO policy setting means that the the existence of old failures is <strong>not</strong> checked.
* All resource requests are allowed thru to the remote repo.
*/
public static final String NO = "no";
public static final StandardOption NO = StandardOption.NO;

/**
* The YES policy setting means that the existence of old failures is checked, and will
* prevent the request from being performed against the remote repo.
*/
public static final String YES = "yes";
public static final StandardOption YES = StandardOption.YES;

@Inject
private UrlFailureCache urlFailureCache;

private List<String> options = new ArrayList<>( 2 );
private List<PolicyOption> options = new ArrayList<>( 2 );

public CachedFailuresPolicy()
{
@@ -66,7 +66,7 @@ public class CachedFailuresPolicy
}

@Override
public void applyPolicy( String policySetting, Properties request, StorageAsset localFile )
public void applyPolicy( PolicyOption policySetting, Properties request, StorageAsset localFile )
throws PolicyViolationException, PolicyConfigurationException
{
if ( !options.contains( policySetting ) )
@@ -99,7 +99,7 @@ public class CachedFailuresPolicy
}

@Override
public String getDefaultOption()
public PolicyOption getDefaultOption()
{
return NO;
}
@@ -112,7 +112,7 @@ public class CachedFailuresPolicy


@Override
public List<String> getOptions()
public List<PolicyOption> getOptions()
{
return options;
}

+ 56
- 0
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/ChecksumOption.java View File

@@ -0,0 +1,56 @@
package org.apache.archiva.policies;

/*
* 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.
*/

/**
* Options for checksum policy
*
* @author Martin Stockhammer <martin_s@apache.org>
*/
public enum ChecksumOption implements PolicyOption {

IGNORE("ignore"),FAIL("fail"),FIX("fix");

private final String id;

ChecksumOption(String id) {
this.id=id;
}

@Override
public String getId() {
return id;
}

@Override
public PolicyOption ofId(String id) {
for (StandardOption option : StandardOption.values()) {
if (option.getId().equals(id)) {
return option;
}
}
return StandardOption.NOOP;
}

@Override
public String toString() {
return id;
}
}

+ 7
- 7
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/ChecksumPolicy.java View File

@@ -55,25 +55,25 @@ public class ChecksumPolicy
* the state of, contents of, or validity of the checksum files are not
* checked.
*/
public static final String IGNORE = "ignore";
public static final ChecksumOption IGNORE = ChecksumOption.IGNORE;

/**
* The FAIL policy indicates that if the checksum does not match the
* downloaded file, then remove the downloaded artifact, and checksum
* files, and fail the transfer to the client side.
*/
public static final String FAIL = "fail";
public static final ChecksumOption FAIL = ChecksumOption.FAIL;

/**
* The FIX policy indicates that if the checksum does not match the
* downloaded file, then fix the checksum file locally, and return
* to the client side the corrected checksum.
*/
public static final String FIX = "fix";
public static final ChecksumOption FIX = ChecksumOption.FIX;

private List<ChecksumAlgorithm> algorithms = Arrays.asList( ChecksumAlgorithm.SHA256, ChecksumAlgorithm.SHA1, ChecksumAlgorithm.MD5 );

private List<String> options = new ArrayList<>( 3 );
private List<PolicyOption> options = new ArrayList<>( 3 );

public ChecksumPolicy()
{
@@ -84,7 +84,7 @@ public class ChecksumPolicy
}

@Override
public void applyPolicy( String policySetting, Properties request, StorageAsset localFile )
public void applyPolicy( PolicyOption policySetting, Properties request, StorageAsset localFile )
throws PolicyViolationException, PolicyConfigurationException
{
if ( "resource".equals( request.getProperty( "filetype" ) ) )
@@ -169,7 +169,7 @@ public class ChecksumPolicy
}

@Override
public String getDefaultOption()
public PolicyOption getDefaultOption()
{
return FIX;
}
@@ -181,7 +181,7 @@ public class ChecksumPolicy
}

@Override
public List<String> getOptions()
public List<PolicyOption> getOptions()
{
return options;
}

+ 55
- 0
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/DownloadErrorOption.java View File

@@ -0,0 +1,55 @@
package org.apache.archiva.policies;
/*
* 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.
*/

/**
* Options for download error update policies
*
* @author Martin Stockhammer <martin_s@apache.org>
*/
public enum DownloadErrorOption implements PolicyOption {

STOP("stop"),QUEUE("queue-error"),IGNORE("ignore"),ALWAYS("always"), NOT_PRESENT("not-present");

private final String id;

DownloadErrorOption(String id) {
this.id = id;
}

@Override
public String getId() {
return id;
}

@Override
public PolicyOption ofId(String id) {
for (StandardOption option : StandardOption.values()) {
if (option.getId().equals(id)) {
return option;
}
}
return StandardOption.NOOP;
}

@Override
public String toString() {
return id;
}
}

+ 1
- 1
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/DownloadErrorPolicy.java View File

@@ -44,7 +44,7 @@ public interface DownloadErrorPolicy
* @return True, if the exception should be processed, False if the exception should be ignored.
* @throws PolicyConfigurationException if the policy is improperly configured
*/
boolean applyPolicy( String policySetting, Properties request, StorageAsset localFile, Exception exception,
boolean applyPolicy( PolicyOption policySetting, Properties request, StorageAsset localFile, Exception exception,
Map<String, Exception> previousExceptions )
throws PolicyConfigurationException;
}

+ 1
- 1
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/DownloadPolicy.java View File

@@ -41,6 +41,6 @@ public interface DownloadPolicy
*
* @throws PolicyViolationException if the policy has been violated.
*/
void applyPolicy( String policySetting, Properties request, StorageAsset localFile )
void applyPolicy( PolicyOption policySetting, Properties request, StorageAsset localFile )
throws PolicyViolationException, PolicyConfigurationException;
}

+ 4
- 4
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/Policy.java View File

@@ -38,14 +38,14 @@ public interface Policy
*
* @return the list of options for this policy.
*/
List<String> getOptions();
List<PolicyOption> getOptions();

/**
* Get the default option for this policy.
*
* @return the default policy for this policy.
*/
String getDefaultOption();
PolicyOption getDefaultOption();

/**
* Get the id for this policy.
@@ -82,7 +82,7 @@ public interface Policy
* @return A description of the option in the requested language.
* @throws MissingResourceException if the option is not known by this policy.
*/
String getOptionDescription(Locale locale, String option) throws MissingResourceException;
String getOptionDescription(Locale locale, PolicyOption option) throws MissingResourceException;

/**
* Returns a name for the given option.
@@ -91,5 +91,5 @@ public interface Policy
* @return A name in the requested language.
* @throws MissingResourceException if the option is not known by this policy.
*/
String getOptionName(Locale locale, String option) throws MissingResourceException;
String getOptionName(Locale locale, PolicyOption option) throws MissingResourceException;
}

+ 33
- 0
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/PolicyOption.java View File

@@ -0,0 +1,33 @@
package org.apache.archiva.policies;
/*
* 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.
*/

/**
* Interface for all policy options. Normally they are enums.
* The id is a unique identifier. It is used for configuration and serialization.
*
* Implementations should always implement the #toString() method and return the id.
*/
public interface PolicyOption {

String getId();

PolicyOption ofId(String id);

}

+ 34
- 0
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/PolicyUtil.java View File

@@ -0,0 +1,34 @@
package org.apache.archiva.policies;

/*
* 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.
*/

/**
* Utility for policies.
*
* @author Martin Stockhammer <martin_s@apache.org>
*/

public class PolicyUtil {

public static PolicyOption findOption(final String id, final Policy policy) {
return policy.getOptions().stream().filter(o -> o.getId().equals(id)).findFirst().orElse(policy.getDefaultOption());
}

}

+ 8
- 7
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/PropagateErrorsDownloadPolicy.java View File

@@ -40,22 +40,23 @@ public class PropagateErrorsDownloadPolicy
private Logger log = LoggerFactory.getLogger( PropagateErrorsDownloadPolicy.class );
private static final String ID = "propagate-errors";


/**
* Signifies any error should stop searching for other proxies.
*/
public static final String STOP = "stop";
public static final DownloadErrorOption STOP = DownloadErrorOption.STOP;

/**
* Propagate errors at the end after all are gathered, if there was no successful download from other proxies.
*/
public static final String QUEUE = "queue-error";
public static final DownloadErrorOption QUEUE = DownloadErrorOption.QUEUE;

/**
* Ignore errors and treat as if it were not found.
*/
public static final String IGNORE = "ignore";
public static final DownloadErrorOption IGNORE = DownloadErrorOption.IGNORE;

private List<String> options = new ArrayList<>( 3 );
private List<PolicyOption> options = new ArrayList<>( 3 );

public PropagateErrorsDownloadPolicy()
{
@@ -65,7 +66,7 @@ public class PropagateErrorsDownloadPolicy
}

@Override
public boolean applyPolicy( String policySetting, Properties request, StorageAsset localFile, Exception exception,
public boolean applyPolicy( PolicyOption policySetting, Properties request, StorageAsset localFile, Exception exception,
Map<String, Exception> previousExceptions )
throws PolicyConfigurationException
{
@@ -101,7 +102,7 @@ public class PropagateErrorsDownloadPolicy
}

@Override
public String getDefaultOption()
public PolicyOption getDefaultOption()
{
return QUEUE;
}
@@ -113,7 +114,7 @@ public class PropagateErrorsDownloadPolicy
}

@Override
public List<String> getOptions()
public List<PolicyOption> getOptions()
{
return options;
}

+ 6
- 6
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/PropagateErrorsOnUpdateDownloadPolicy.java View File

@@ -40,14 +40,14 @@ public class PropagateErrorsOnUpdateDownloadPolicy
/**
* Signifies any error should cause a failure whether the artifact is already present or not.
*/
public static final String ALWAYS = "always";
public static final DownloadErrorOption ALWAYS = DownloadErrorOption.ALWAYS;

/**
* Signifies any error should cause a failure only if the artifact is not already present.
*/
public static final String NOT_PRESENT = "artifact-not-present";
public static final DownloadErrorOption NOT_PRESENT = DownloadErrorOption.NOT_PRESENT;

private static final List<String> options = new ArrayList<>( 2 );
private static final List<PolicyOption> options = new ArrayList<>( 2 );

public PropagateErrorsOnUpdateDownloadPolicy()
{
@@ -56,7 +56,7 @@ public class PropagateErrorsOnUpdateDownloadPolicy
}

@Override
public boolean applyPolicy( String policySetting, Properties request, StorageAsset localFile, Exception exception,
public boolean applyPolicy( PolicyOption policySetting, Properties request, StorageAsset localFile, Exception exception,
Map<String, Exception> previousExceptions )
throws PolicyConfigurationException
{
@@ -85,7 +85,7 @@ public class PropagateErrorsOnUpdateDownloadPolicy
}

@Override
public String getDefaultOption()
public PolicyOption getDefaultOption()
{
return NOT_PRESENT;
}
@@ -98,7 +98,7 @@ public class PropagateErrorsOnUpdateDownloadPolicy


@Override
public List<String> getOptions()
public List<PolicyOption> getOptions()
{
return options;
}

+ 1
- 1
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/ReleasesPolicy.java View File

@@ -38,7 +38,7 @@ public class ReleasesPolicy
* Defaults to {@link AbstractUpdatePolicy#HOURLY}
*/
@Override
public String getDefaultOption()
public PolicyOption getDefaultOption()
{
return AbstractUpdatePolicy.HOURLY;
}

+ 1
- 1
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/SnapshotsPolicy.java View File

@@ -39,7 +39,7 @@ public class SnapshotsPolicy
* Defaults to {@link AbstractUpdatePolicy#HOURLY}
*/
@Override
public String getDefaultOption()
public PolicyOption getDefaultOption()
{
return AbstractUpdatePolicy.HOURLY;
}

+ 55
- 0
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/StandardOption.java View File

@@ -0,0 +1,55 @@
package org.apache.archiva.policies;
/*
* 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.
*/

/**
* Standard Options for policies.
*
* @author Martin Stockhammer <martin_s@apache.org>
*/
public enum StandardOption implements PolicyOption {

NOOP("noop"),YES("yes"),NO("no");

private final String id;

StandardOption(String id) {
this.id = id;
}

@Override
public String getId() {
return id;
}

@Override
public PolicyOption ofId(String id) {
for (StandardOption option : StandardOption.values()) {
if (option.getId().equals(id)) {
return option;
}
}
return NOOP;
}

@Override
public String toString() {
return id;
}
}

+ 54
- 0
archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/archiva/policies/UpdateOption.java View File

@@ -0,0 +1,54 @@
package org.apache.archiva.policies;
/*
* 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.
*/

/**
* Options for update policies
*
* @author Martin Stockhammer <martin_s@apache.org>
*/
public enum UpdateOption implements PolicyOption {
ALWAYS("always"), NEVER("never"), DAILY("daily"), HOURLY("hourly"), ONCE("once");

private final String id;

UpdateOption(String id) {
this.id=id;
}

@Override
public String getId() {
return id;
}

@Override
public PolicyOption ofId(String id) {
for (StandardOption option : StandardOption.values()) {
if (option.getId().equals(id)) {
return option;
}
}
return StandardOption.NOOP;
}

@Override
public String toString() {
return id;
}
}

+ 5
- 5
archiva-modules/archiva-base/archiva-policies/src/test/java/org/apache/archiva/policies/CachedFailuresPolicyTest.java View File

@@ -127,12 +127,12 @@ public class CachedFailuresPolicyTest
DownloadPolicy policy = lookupPolicy();
assertEquals("Cache Failures Policy", policy.getName());
assertTrue(policy.getDescription(Locale.US).contains("if download failures will be cached"));
assertEquals("Yes", policy.getOptionName(Locale.US, "yes"));
assertEquals("No", policy.getOptionName(Locale.US, "no"));
assertTrue(policy.getOptionDescription(Locale.US, "yes").contains("failures are cached and download is not attempted"));
assertTrue(policy.getOptionDescription(Locale.US, "no").contains("failures are not cached"));
assertEquals("Yes", policy.getOptionName(Locale.US, StandardOption.YES));
assertEquals("No", policy.getOptionName(Locale.US, StandardOption.NO));
assertTrue(policy.getOptionDescription(Locale.US, StandardOption.YES).contains("failures are cached and download is not attempted"));
assertTrue(policy.getOptionDescription(Locale.US, StandardOption.NO).contains("failures are not cached"));
try {
policy.getOptionName(Locale.US, "xxxx");
policy.getOptionName(Locale.US, StandardOption.NOOP);
// Exception should be thrown
assertTrue(false);
} catch (MissingResourceException e) {

+ 10
- 9
archiva-modules/archiva-base/archiva-policies/src/test/java/org/apache/archiva/policies/ChecksumPolicyTest.java View File

@@ -19,6 +19,7 @@ package org.apache.archiva.policies;
* under the License.
*/

import org.apache.archiva.checksum.Checksum;
import org.apache.archiva.common.filelock.DefaultFileLockManager;
import org.apache.archiva.repository.storage.FilesystemStorage;
import org.apache.archiva.repository.storage.StorageAsset;
@@ -305,11 +306,11 @@ public class ChecksumPolicyTest
}
}

private String createMessage( String settingType, String md5State, String sha1State )
private String createMessage( PolicyOption settingType, String md5State, String sha1State )
{
StringBuilder msg = new StringBuilder();
msg.append( "Expected result of ChecksumPolicy.apply(" );
msg.append( settingType.toUpperCase() );
msg.append( settingType.getId().toUpperCase() );
msg.append( ") when working with " );
if ( md5State == null )
{
@@ -388,14 +389,14 @@ public class ChecksumPolicyTest
PostDownloadPolicy policy = lookupPolicy();
assertEquals("Checksum Policy", policy.getName());
assertTrue(policy.getDescription(Locale.US).contains("if the downloaded checksum of a artifact does not match"));
assertEquals("Fail, if no match", policy.getOptionName(Locale.US, "fail"));
assertEquals("Fix, if no match", policy.getOptionName(Locale.US, "fix"));
assertEquals("Ignore, if no match", policy.getOptionName(Locale.US, "ignore"));
assertTrue(policy.getOptionDescription(Locale.US, "fail").contains("download fails"));
assertTrue(policy.getOptionDescription(Locale.US, "fix").contains("artifact will remain"));
assertTrue(policy.getOptionDescription(Locale.US, "ignore").contains("error will be ignored"));
assertEquals("Fail, if no match", policy.getOptionName(Locale.US, ChecksumOption.FAIL));
assertEquals("Fix, if no match", policy.getOptionName(Locale.US, ChecksumOption.FIX));
assertEquals("Ignore, if no match", policy.getOptionName(Locale.US, ChecksumOption.IGNORE));
assertTrue(policy.getOptionDescription(Locale.US, ChecksumOption.FAIL).contains("download fails"));
assertTrue(policy.getOptionDescription(Locale.US, ChecksumOption.FIX).contains("artifact will remain"));
assertTrue(policy.getOptionDescription(Locale.US, ChecksumOption.IGNORE).contains("error will be ignored"));
try {
policy.getOptionName(Locale.US, "xxxx");
policy.getOptionName(Locale.US, StandardOption.NOOP);
// Exception should be thrown
assertTrue(false);
} catch (MissingResourceException e) {

+ 7
- 7
archiva-modules/archiva-base/archiva-policies/src/test/java/org/apache/archiva/policies/PropagateErrorsDownloadPolicyTest.java View File

@@ -124,14 +124,14 @@ public class PropagateErrorsDownloadPolicyTest
DownloadErrorPolicy policy = lookupPolicy();
assertEquals("Propagate Download Errors Policy", policy.getName());
assertTrue(policy.getDescription(Locale.US).contains("error occurs during download"));
assertEquals("Stop on error", policy.getOptionName(Locale.US, "stop"));
assertEquals("Continue on error", policy.getOptionName(Locale.US, "queue-error"));
assertEquals("Ignore errors", policy.getOptionName(Locale.US, "ignore"));
assertTrue(policy.getOptionDescription(Locale.US, "stop").contains("Stops the artifact download"));
assertTrue(policy.getOptionDescription(Locale.US, "queue-error").contains("Checks further"));
assertTrue(policy.getOptionDescription(Locale.US, "ignore").contains("not found"));
assertEquals("Stop on error", policy.getOptionName(Locale.US, DownloadErrorOption.STOP));
assertEquals("Continue on error", policy.getOptionName(Locale.US, DownloadErrorOption.QUEUE));
assertEquals("Ignore errors", policy.getOptionName(Locale.US, DownloadErrorOption.IGNORE));
assertTrue(policy.getOptionDescription(Locale.US, DownloadErrorOption.STOP).contains("Stops the artifact download"));
assertTrue(policy.getOptionDescription(Locale.US, DownloadErrorOption.QUEUE).contains("Checks further"));
assertTrue(policy.getOptionDescription(Locale.US, DownloadErrorOption.IGNORE).contains("not found"));
try {
policy.getOptionName(Locale.US, "xxxx");
policy.getOptionName(Locale.US, StandardOption.NOOP);
// Exception should be thrown
assertTrue(false);
} catch (MissingResourceException e) {

+ 5
- 5
archiva-modules/archiva-base/archiva-policies/src/test/java/org/apache/archiva/policies/PropagateErrorsOnUpdateDownloadPolicyTest.java View File

@@ -117,12 +117,12 @@ public class PropagateErrorsOnUpdateDownloadPolicyTest
DownloadErrorPolicy policy = lookupPolicy();
assertEquals("Propagate Errors on Update Policy", policy.getName());
assertTrue(policy.getDescription(Locale.US).contains("during download of an artifact that exists already"));
assertEquals("Propagate always", policy.getOptionName(Locale.US, "always"));
assertEquals("Propagate only, if not exists", policy.getOptionName(Locale.US, "not-present"));
assertTrue(policy.getOptionDescription(Locale.US, "always").contains("even if the file exists"));
assertTrue(policy.getOptionDescription(Locale.US, "not-present").contains("if the file does not exist"));
assertEquals("Propagate always", policy.getOptionName(Locale.US, DownloadErrorOption.ALWAYS));
assertEquals("Propagate only, if not exists", policy.getOptionName(Locale.US, DownloadErrorOption.NOT_PRESENT));
assertTrue(policy.getOptionDescription(Locale.US, DownloadErrorOption.ALWAYS).contains("even if the file exists"));
assertTrue(policy.getOptionDescription(Locale.US, DownloadErrorOption.NOT_PRESENT).contains("if the file does not exist"));
try {
policy.getOptionName(Locale.US, "xxxx");
policy.getOptionName(Locale.US, StandardOption.NOOP);
// Exception should be thrown
assertTrue(false);
} catch (MissingResourceException e) {

+ 13
- 13
archiva-modules/archiva-base/archiva-policies/src/test/java/org/apache/archiva/policies/ReleasePolicyTest.java View File

@@ -327,7 +327,7 @@ public class ReleasePolicyTest
assertReleasesPolicy( ReleasesPolicy.ONCE, PATH_VERSION_METADATA, WITH_LOCAL );
}

private void assertReleasesPolicy( String setting, String path, boolean createLocalFile )
private void assertReleasesPolicy( PolicyOption setting, String path, boolean createLocalFile )
throws Exception
{
PreDownloadPolicy policy = lookupPolicy();
@@ -360,7 +360,7 @@ public class ReleasePolicyTest
policy.applyPolicy( setting, request, localFile );
}

private void assertReleasesPolicyViolation( String setting, String path, boolean createLocalFile )
private void assertReleasesPolicyViolation( PolicyOption setting, String path, boolean createLocalFile )
throws Exception
{
try
@@ -394,18 +394,18 @@ public class ReleasePolicyTest
PreDownloadPolicy policy = lookupPolicy();
assertEquals("Release Artifact Update Policy", policy.getName());
assertTrue(policy.getDescription(Locale.US).contains("when a release artifact will be updated"));
assertEquals("Update always", policy.getOptionName(Locale.US, "always"));
assertEquals("Do not download from remote", policy.getOptionName(Locale.US, "never"));
assertEquals("Update, if older than a day", policy.getOptionName(Locale.US, "daily"));
assertEquals("Update, if older than a hour", policy.getOptionName(Locale.US, "hourly"));
assertEquals("Download only once", policy.getOptionName(Locale.US, "once"));
assertTrue(policy.getOptionDescription(Locale.US, "always").contains("each download"));
assertTrue(policy.getOptionDescription(Locale.US, "never").contains("never from the remote"));
assertTrue(policy.getOptionDescription(Locale.US, "daily").contains("older than one day"));
assertTrue(policy.getOptionDescription(Locale.US, "hourly").contains("older than one hour"));
assertTrue(policy.getOptionDescription(Locale.US, "once").contains("if it does not exist"));
assertEquals("Update always", policy.getOptionName(Locale.US, UpdateOption.ALWAYS));
assertEquals("Do not download from remote", policy.getOptionName(Locale.US, UpdateOption.NEVER));
assertEquals("Update, if older than a day", policy.getOptionName(Locale.US, UpdateOption.DAILY));
assertEquals("Update, if older than a hour", policy.getOptionName(Locale.US, UpdateOption.HOURLY));
assertEquals("Download only once", policy.getOptionName(Locale.US, UpdateOption.ONCE));
assertTrue(policy.getOptionDescription(Locale.US, UpdateOption.ALWAYS).contains("each download"));
assertTrue(policy.getOptionDescription(Locale.US, UpdateOption.NEVER).contains("never from the remote"));
assertTrue(policy.getOptionDescription(Locale.US, UpdateOption.DAILY).contains("older than one day"));
assertTrue(policy.getOptionDescription(Locale.US, UpdateOption.HOURLY).contains("older than one hour"));
assertTrue(policy.getOptionDescription(Locale.US, UpdateOption.ONCE).contains("if it does not exist"));
try {
policy.getOptionName(Locale.US, "xxxx");
policy.getOptionName(Locale.US, StandardOption.NOOP);
// Exception should be thrown
assertTrue(false);
} catch (MissingResourceException e) {

+ 13
- 13
archiva-modules/archiva-base/archiva-policies/src/test/java/org/apache/archiva/policies/SnapshotsPolicyTest.java View File

@@ -326,7 +326,7 @@ public class SnapshotsPolicyTest
assertSnapshotPolicy( SnapshotsPolicy.ONCE, PATH_VERSION_METADATA, WITH_LOCAL );
}

private void assertSnapshotPolicy( String setting, String path, boolean createLocalFile )
private void assertSnapshotPolicy( PolicyOption setting, String path, boolean createLocalFile )
throws Exception
{
PreDownloadPolicy policy = lookupPolicy();
@@ -359,7 +359,7 @@ public class SnapshotsPolicyTest
policy.applyPolicy( setting, request, localFile );
}

private void assertSnapshotPolicyViolation( String setting, String path, boolean createLocalFile )
private void assertSnapshotPolicyViolation( PolicyOption setting, String path, boolean createLocalFile )
throws Exception
{
try
@@ -393,18 +393,18 @@ public class SnapshotsPolicyTest
PreDownloadPolicy policy = lookupPolicy();
assertEquals("Snapshot Artifact Update Policy", policy.getName());
assertTrue(policy.getDescription(Locale.US).contains("when a snapshot artifact will be updated"));
assertEquals("Update always", policy.getOptionName(Locale.US, "always"));
assertEquals("Do not download from remote", policy.getOptionName(Locale.US, "never"));
assertEquals("Update, if older than a day", policy.getOptionName(Locale.US, "daily"));
assertEquals("Update, if older than a hour", policy.getOptionName(Locale.US, "hourly"));
assertEquals("Download only once", policy.getOptionName(Locale.US, "once"));
assertTrue(policy.getOptionDescription(Locale.US, "always").contains("each download"));
assertTrue(policy.getOptionDescription(Locale.US, "never").contains("never from the remote"));
assertTrue(policy.getOptionDescription(Locale.US, "daily").contains("older than one day"));
assertTrue(policy.getOptionDescription(Locale.US, "hourly").contains("older than one hour"));
assertTrue(policy.getOptionDescription(Locale.US, "once").contains("if it does not exist"));
assertEquals("Update always", policy.getOptionName(Locale.US, UpdateOption.ALWAYS));
assertEquals("Do not download from remote", policy.getOptionName(Locale.US, UpdateOption.NEVER));
assertEquals("Update, if older than a day", policy.getOptionName(Locale.US, UpdateOption.DAILY));
assertEquals("Update, if older than a hour", policy.getOptionName(Locale.US, UpdateOption.HOURLY));
assertEquals("Download only once", policy.getOptionName(Locale.US, UpdateOption.ONCE));
assertTrue(policy.getOptionDescription(Locale.US, UpdateOption.ALWAYS).contains("each download"));
assertTrue(policy.getOptionDescription(Locale.US, UpdateOption.NEVER).contains("never from the remote"));
assertTrue(policy.getOptionDescription(Locale.US, UpdateOption.DAILY).contains("older than one day"));
assertTrue(policy.getOptionDescription(Locale.US, UpdateOption.HOURLY).contains("older than one hour"));
assertTrue(policy.getOptionDescription(Locale.US, UpdateOption.ONCE).contains("if it does not exist"));
try {
policy.getOptionName(Locale.US, "xxxx");
policy.getOptionName(Locale.US, StandardOption.NOOP);
// Exception should be thrown
assertTrue(false);
} catch (MissingResourceException e) {

+ 8
- 11
archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/archiva/proxy/DefaultRepositoryProxyHandler.java View File

@@ -711,9 +711,9 @@ public abstract class DefaultRepositoryProxyHandler implements RepositoryProxyHa
* @param policies the map of policies to execute. (Map of String policy keys, to {@link DownloadPolicy} objects)
* @param settings the map of settings for the policies to execute. (Map of String policy keys, to String policy
* setting)
* @param request the request properties (utilized by the {@link DownloadPolicy#applyPolicy(String, Properties, StorageAsset)}
* @param request the request properties (utilized by the {@link DownloadPolicy#applyPolicy(PolicyOption, Properties, StorageAsset)}
* )
* @param localFile the local file (utilized by the {@link DownloadPolicy#applyPolicy(String, Properties, StorageAsset)})
* @param localFile the local file (utilized by the {@link DownloadPolicy#applyPolicy(PolicyOption, Properties, StorageAsset)})
* @throws PolicyViolationException
*/
private void validatePolicies( Map<String, ? extends DownloadPolicy> policies, Map<String, String> settings,
@@ -726,14 +726,12 @@ public abstract class DefaultRepositoryProxyHandler implements RepositoryProxyHa
// so substring after last # to get the hint as with plexus
String key = StringUtils.substringAfterLast( entry.getKey(), "#" );
DownloadPolicy policy = entry.getValue();
String defaultSetting = policy.getDefaultOption();
PolicyOption option = PolicyUtil.findOption(settings.get(key), policy);

String setting = StringUtils.defaultString( settings.get( key ), defaultSetting );

log.debug( "Applying [{}] policy with [{}]", key, setting );
log.debug( "Applying [{}] policy with [{}]", key, option );
try
{
policy.applyPolicy( setting, request, localFile );
policy.applyPolicy( option, request, localFile );
}
catch ( PolicyConfigurationException e )
{
@@ -755,14 +753,13 @@ public abstract class DefaultRepositoryProxyHandler implements RepositoryProxyHa
// so substring after last # to get the hint as with plexus
String key = StringUtils.substringAfterLast( entry.getKey(), "#" );
DownloadErrorPolicy policy = entry.getValue();
String defaultSetting = policy.getDefaultOption();
String setting = StringUtils.defaultString( settings.get( key ), defaultSetting );
PolicyOption option = PolicyUtil.findOption(settings.get(key), policy);

log.debug( "Applying [{}] policy with [{}]", key, setting );
log.debug( "Applying [{}] policy with [{}]", key, option );
try
{
// all policies must approve the exception, any can cancel
process = policy.applyPolicy( setting, request, localFile, exception, previousExceptions );
process = policy.applyPolicy( option, request, localFile, exception, previousExceptions );
if ( !process )
{
break;

+ 14
- 19
archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java View File

@@ -21,12 +21,7 @@ package org.apache.archiva.proxy;

import net.sf.ehcache.CacheManager;
import org.apache.archiva.configuration.*;
import org.apache.archiva.policies.CachedFailuresPolicy;
import org.apache.archiva.policies.ChecksumPolicy;
import org.apache.archiva.policies.PropagateErrorsDownloadPolicy;
import org.apache.archiva.policies.PropagateErrorsOnUpdateDownloadPolicy;
import org.apache.archiva.policies.ReleasesPolicy;
import org.apache.archiva.policies.SnapshotsPolicy;
import org.apache.archiva.policies.*;
import org.apache.archiva.proxy.model.RepositoryProxyHandler;
import org.apache.archiva.repository.*;
import org.apache.archiva.repository.storage.StorageAsset;
@@ -352,35 +347,35 @@ public abstract class AbstractProxyTestCase
CachedFailuresPolicy.NO, disabled );
}

protected void saveConnector( String sourceRepoId, String targetRepoId, String checksumPolicy, String releasePolicy,
String snapshotPolicy, String cacheFailuresPolicy, boolean disabled )
protected void saveConnector( String sourceRepoId, String targetRepoId, PolicyOption checksumPolicy, PolicyOption releasePolicy,
PolicyOption snapshotPolicy, PolicyOption cacheFailuresPolicy, boolean disabled )
{
saveConnector( sourceRepoId, targetRepoId, checksumPolicy, releasePolicy, snapshotPolicy, cacheFailuresPolicy,
PropagateErrorsDownloadPolicy.QUEUE, disabled );
}

protected void saveConnector( String sourceRepoId, String targetRepoId, String checksumPolicy, String releasePolicy,
String snapshotPolicy, String cacheFailuresPolicy, String errorPolicy,
protected void saveConnector( String sourceRepoId, String targetRepoId, PolicyOption checksumPolicy, PolicyOption releasePolicy,
PolicyOption snapshotPolicy, PolicyOption cacheFailuresPolicy, PolicyOption errorPolicy,
boolean disabled )
{
saveConnector( sourceRepoId, targetRepoId, checksumPolicy, releasePolicy, snapshotPolicy, cacheFailuresPolicy,
errorPolicy, PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT, disabled );
}

protected void saveConnector( String sourceRepoId, String targetRepoId, String checksumPolicy, String releasePolicy,
String snapshotPolicy, String cacheFailuresPolicy, String errorPolicy,
String errorOnUpdatePolicy, boolean disabled )
protected void saveConnector(String sourceRepoId, String targetRepoId, PolicyOption checksumPolicy, PolicyOption releasePolicy,
PolicyOption snapshotPolicy, PolicyOption cacheFailuresPolicy, PolicyOption errorPolicy,
PolicyOption errorOnUpdatePolicy, boolean disabled )
{
ProxyConnectorConfiguration connectorConfig = new ProxyConnectorConfiguration();
connectorConfig.setSourceRepoId( sourceRepoId );
connectorConfig.setTargetRepoId( targetRepoId );
connectorConfig.setProxyId(sourceRepoId);
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CHECKSUM, checksumPolicy );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_RELEASES, releasePolicy );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_SNAPSHOTS, snapshotPolicy );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CACHE_FAILURES, cacheFailuresPolicy );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_PROPAGATE_ERRORS, errorPolicy );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_PROPAGATE_ERRORS_ON_UPDATE, errorOnUpdatePolicy );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CHECKSUM, checksumPolicy.getId() );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_RELEASES, releasePolicy.getId() );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_SNAPSHOTS, snapshotPolicy.getId() );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CACHE_FAILURES, cacheFailuresPolicy.getId());
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_PROPAGATE_ERRORS, errorPolicy.getId() );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_PROPAGATE_ERRORS_ON_UPDATE, errorOnUpdatePolicy.getId() );
connectorConfig.setDisabled( disabled );

int count = config.getConfiguration().getProxyConnectors().size();

+ 3
- 9
archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/ErrorHandlingTest.java View File

@@ -19,13 +19,7 @@ package org.apache.archiva.proxy;
* under the License.
*/

import org.apache.archiva.policies.CachedFailuresPolicy;
import org.apache.archiva.policies.ChecksumPolicy;
import org.apache.archiva.policies.PropagateErrorsDownloadPolicy;
import org.apache.archiva.policies.PropagateErrorsOnUpdateDownloadPolicy;
import org.apache.archiva.policies.ProxyDownloadException;
import org.apache.archiva.policies.ReleasesPolicy;
import org.apache.archiva.policies.SnapshotsPolicy;
import org.apache.archiva.policies.*;
import org.apache.archiva.repository.LayoutException;
import org.apache.archiva.repository.storage.StorageAsset;
import org.apache.maven.wagon.ResourceDoesNotExistException;
@@ -530,14 +524,14 @@ public class ErrorHandlingTest
// HELPER METHODS
// ------------------------------------------

private void createMockedProxyConnector( String id, String name, String errorPolicy )
private void createMockedProxyConnector( String id, String name, PolicyOption errorPolicy )
{
saveRemoteRepositoryConfig( id, name, "test://bad.machine.com/repo/", "default" );
saveConnector( ID_DEFAULT_MANAGED, id, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, SnapshotsPolicy.ALWAYS,
CachedFailuresPolicy.NO, errorPolicy, false );
}

private void createMockedProxyConnector( String id, String name, String errorPolicy, String errorOnUpdatePolicy )
private void createMockedProxyConnector( String id, String name, PolicyOption errorPolicy, PolicyOption errorOnUpdatePolicy )
{
saveRemoteRepositoryConfig( id, name, "test://bad.machine.com/repo/", "default" );
saveConnector( ID_DEFAULT_MANAGED, id, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, SnapshotsPolicy.ALWAYS,

+ 6
- 6
archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/HttpProxyTransferTest.java View File

@@ -235,14 +235,14 @@ public class HttpProxyTransferTest
connectorConfig.setProxyId( PROXY_ID );
connectorConfig.setSourceRepoId( MANAGED_ID );
connectorConfig.setTargetRepoId( PROXIED_ID );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CHECKSUM, ChecksumPolicy.FIX );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_RELEASES, ReleasesPolicy.ONCE );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_SNAPSHOTS, SnapshotsPolicy.ONCE );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CACHE_FAILURES, CachedFailuresPolicy.NO );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CHECKSUM, ChecksumPolicy.FIX.getId() );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_RELEASES, ReleasesPolicy.ONCE.getId() );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_SNAPSHOTS, SnapshotsPolicy.ONCE.getId() );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CACHE_FAILURES, CachedFailuresPolicy.NO.getId() );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_PROPAGATE_ERRORS,
PropagateErrorsDownloadPolicy.QUEUE );
PropagateErrorsDownloadPolicy.QUEUE.getId() );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_PROPAGATE_ERRORS_ON_UPDATE,
PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT );
PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT.getId() );

int count = config.getConfiguration().getProxyConnectors().size();
config.getConfiguration().addProxyConnector( connectorConfig );

+ 4
- 4
archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/MetadataToolsTest.java View File

@@ -588,10 +588,10 @@ public class MetadataToolsTest
ProxyConnectorConfiguration connectorConfig = new ProxyConnectorConfiguration();
connectorConfig.setSourceRepoId( sourceRepoId );
connectorConfig.setTargetRepoId( targetRepoId );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CHECKSUM, ChecksumPolicy.IGNORE );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_RELEASES, ReleasesPolicy.ALWAYS );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_SNAPSHOTS, SnapshotsPolicy.ALWAYS );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CACHE_FAILURES, CachedFailuresPolicy.NO );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CHECKSUM, ChecksumPolicy.IGNORE.getId() );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_RELEASES, ReleasesPolicy.ALWAYS.getId() );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_SNAPSHOTS, SnapshotsPolicy.ALWAYS.getId() );
connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CACHE_FAILURES, CachedFailuresPolicy.NO.getId() );

int count = config.getConfiguration().getProxyConnectors().size();
config.getConfiguration().addProxyConnector( connectorConfig );

+ 9
- 7
archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/PolicyInformation.java View File

@@ -18,6 +18,8 @@ package org.apache.archiva.rest.api.model;
* under the License.
*/

import org.apache.archiva.policies.PolicyOption;

import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
import java.util.List;
@@ -30,9 +32,9 @@ import java.util.List;
public class PolicyInformation
implements Serializable
{
private List<String> options;
private List<PolicyOption> options;

private String defaultOption;
private PolicyOption defaultOption;

private String id;

@@ -43,7 +45,7 @@ public class PolicyInformation
// no op
}

public PolicyInformation( List<String> options, String defaultOption, String id, String name )
public PolicyInformation(List<PolicyOption> options, PolicyOption defaultOption, String id, String name )
{
this.options = options;
this.defaultOption = defaultOption;
@@ -51,22 +53,22 @@ public class PolicyInformation
this.name = name;
}

public List<String> getOptions()
public List<PolicyOption> getOptions()
{
return options;
}

public void setOptions( List<String> options )
public void setOptions( List<PolicyOption> options )
{
this.options = options;
}

public String getDefaultOption()
public PolicyOption getDefaultOption()
{
return defaultOption;
}

public void setDefaultOption( String defaultOption )
public void setDefaultOption( PolicyOption defaultOption )
{
this.defaultOption = defaultOption;
}

+ 9
- 12
archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletProxiedTestCase.java View File

@@ -24,10 +24,7 @@ import com.gargoylesoftware.htmlunit.WebClient;
import org.apache.archiva.common.utils.FileUtils;
import org.apache.archiva.configuration.ProxyConnectorConfiguration;
import org.apache.archiva.configuration.RemoteRepositoryConfiguration;
import org.apache.archiva.policies.CachedFailuresPolicy;
import org.apache.archiva.policies.ChecksumPolicy;
import org.apache.archiva.policies.ReleasesPolicy;
import org.apache.archiva.policies.SnapshotsPolicy;
import org.apache.archiva.policies.*;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jetty.server.HttpConnectionFactory;
import org.eclipse.jetty.server.Server;
@@ -187,16 +184,16 @@ public abstract class AbstractRepositoryServletProxiedTestCase

}

private void setupConnector( String repoId, RemoteRepoInfo remoteRepo, String releasesPolicy,
String snapshotsPolicy )
private void setupConnector( String repoId, RemoteRepoInfo remoteRepo, PolicyOption releasesPolicy,
PolicyOption snapshotsPolicy )
{
ProxyConnectorConfiguration connector = new ProxyConnectorConfiguration();
connector.setSourceRepoId( repoId );
connector.setTargetRepoId( remoteRepo.id );
connector.addPolicy( ProxyConnectorConfiguration.POLICY_RELEASES, releasesPolicy );
connector.addPolicy( ProxyConnectorConfiguration.POLICY_SNAPSHOTS, snapshotsPolicy );
connector.addPolicy( ProxyConnectorConfiguration.POLICY_CHECKSUM, ChecksumPolicy.IGNORE );
connector.addPolicy( ProxyConnectorConfiguration.POLICY_CACHE_FAILURES, CachedFailuresPolicy.NO );
connector.addPolicy( ProxyConnectorConfiguration.POLICY_RELEASES, releasesPolicy.getId() );
connector.addPolicy( ProxyConnectorConfiguration.POLICY_SNAPSHOTS, snapshotsPolicy.getId() );
connector.addPolicy( ProxyConnectorConfiguration.POLICY_CHECKSUM, ChecksumPolicy.IGNORE.getId() );
connector.addPolicy( ProxyConnectorConfiguration.POLICY_CACHE_FAILURES, CachedFailuresPolicy.NO.getId() );

archivaConfiguration.getConfiguration().addProxyConnector( connector );
}
@@ -261,12 +258,12 @@ public abstract class AbstractRepositoryServletProxiedTestCase
setupConnector( repoId, remoteRepo, ReleasesPolicy.ALWAYS, SnapshotsPolicy.ALWAYS );
}

protected void setupReleaseConnector( String managedRepoId, RemoteRepoInfo remoteRepo, String releasePolicy )
protected void setupReleaseConnector( String managedRepoId, RemoteRepoInfo remoteRepo, PolicyOption releasePolicy )
{
setupConnector( managedRepoId, remoteRepo, releasePolicy, SnapshotsPolicy.ALWAYS );
}

protected void setupSnapshotConnector( String managedRepoId, RemoteRepoInfo remoteRepo, String snapshotsPolicy )
protected void setupSnapshotConnector( String managedRepoId, RemoteRepoInfo remoteRepo, PolicyOption snapshotsPolicy )
{
setupConnector( managedRepoId, remoteRepo, ReleasesPolicy.ALWAYS, snapshotsPolicy );
}

+ 3
- 2
archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/RepositoryServletProxiedPluginSnapshotPolicyTest.java View File

@@ -23,6 +23,7 @@ package org.apache.archiva.webdav;
import com.gargoylesoftware.htmlunit.WebRequest;
import com.gargoylesoftware.htmlunit.WebResponse;
import org.apache.archiva.configuration.ProxyConnectorConfiguration;
import org.apache.archiva.policies.PolicyOption;
import org.apache.archiva.policies.SnapshotsPolicy;
import org.junit.Test;

@@ -153,14 +154,14 @@ public class RepositoryServletProxiedPluginSnapshotPolicyTest
assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.ONCE, NO_MANAGED_COPY );
}

private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, String snapshotsPolicy,
private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, PolicyOption snapshotsPolicy,
boolean hasManagedCopy )
throws Exception
{
assertGetProxiedSnapshotsArtifactWithPolicy( expectation, snapshotsPolicy, hasManagedCopy, 0 );
}

private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, String snapshotsPolicy,
private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, PolicyOption snapshotsPolicy,
boolean hasManagedCopy, long deltaManagedToRemoteTimestamp )
throws Exception
{

+ 3
- 2
archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/RepositoryServletProxiedReleasePolicyTest.java View File

@@ -22,6 +22,7 @@ package org.apache.archiva.webdav;
import com.gargoylesoftware.htmlunit.WebRequest;
import com.gargoylesoftware.htmlunit.WebResponse;
import org.apache.archiva.configuration.ProxyConnectorConfiguration;
import org.apache.archiva.policies.PolicyOption;
import org.apache.archiva.policies.ReleasesPolicy;
import org.junit.Test;

@@ -149,14 +150,14 @@ public class RepositoryServletProxiedReleasePolicyTest
assertGetProxiedReleaseArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, ReleasesPolicy.ONCE, NO_MANAGED_COPY );
}

private void assertGetProxiedReleaseArtifactWithPolicy( int expectation, String releasePolicy,
private void assertGetProxiedReleaseArtifactWithPolicy( int expectation, PolicyOption releasePolicy,
boolean hasManagedCopy )
throws Exception
{
assertGetProxiedReleaseArtifactWithPolicy( expectation, releasePolicy, hasManagedCopy, 0 );
}

private void assertGetProxiedReleaseArtifactWithPolicy( int expectation, String releasePolicy,
private void assertGetProxiedReleaseArtifactWithPolicy( int expectation, PolicyOption releasePolicy,
boolean hasManagedCopy, long deltaManagedToRemoteTimestamp )
throws Exception
{

+ 3
- 2
archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/RepositoryServletProxiedSnapshotPolicyTest.java View File

@@ -23,6 +23,7 @@ import com.gargoylesoftware.htmlunit.WebRequest;
import com.gargoylesoftware.htmlunit.WebResponse;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.configuration.ProxyConnectorConfiguration;
import org.apache.archiva.policies.PolicyOption;
import org.apache.archiva.policies.SnapshotsPolicy;
import org.junit.After;
import org.junit.Before;
@@ -174,14 +175,14 @@ public class RepositoryServletProxiedSnapshotPolicyTest
assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.ONCE, NO_MANAGED_COPY );
}

private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, String snapshotsPolicy,
private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, PolicyOption snapshotsPolicy,
boolean hasManagedCopy )
throws Exception
{
assertGetProxiedSnapshotsArtifactWithPolicy( expectation, snapshotsPolicy, hasManagedCopy, 0 );
}

private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, String snapshotsPolicy,
private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, PolicyOption snapshotsPolicy,
boolean hasManagedCopy,
long deltaManagedToRemoteTimestamp )
throws Exception

+ 3
- 2
archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/RepositoryServletProxiedTimestampedSnapshotPolicyTest.java View File

@@ -22,6 +22,7 @@ package org.apache.archiva.webdav;
import com.gargoylesoftware.htmlunit.WebRequest;
import com.gargoylesoftware.htmlunit.WebResponse;
import org.apache.archiva.configuration.ProxyConnectorConfiguration;
import org.apache.archiva.policies.PolicyOption;
import org.apache.archiva.policies.SnapshotsPolicy;
import org.junit.After;
import org.junit.Before;
@@ -170,14 +171,14 @@ public class RepositoryServletProxiedTimestampedSnapshotPolicyTest
assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.ONCE, NO_MANAGED_COPY );
}

private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, String snapshotsPolicy,
private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, PolicyOption snapshotsPolicy,
boolean hasManagedCopy )
throws Exception
{
assertGetProxiedSnapshotsArtifactWithPolicy( expectation, snapshotsPolicy, hasManagedCopy, 0 );
}

private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, String snapshotsPolicy,
private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, PolicyOption snapshotsPolicy,
boolean hasManagedCopy,
long deltaManagedToRemoteTimestamp )
throws Exception

Loading…
Cancel
Save