@@ -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 { |
@@ -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 ); | |||
} |
@@ -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"); | |||
} | |||
} |
@@ -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" ) ) |
@@ -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; | |||
} |
@@ -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; | |||
} | |||
} |
@@ -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; | |||
} |
@@ -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; | |||
} | |||
} |
@@ -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; | |||
} |
@@ -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; | |||
} |
@@ -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; | |||
} |
@@ -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); | |||
} |
@@ -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()); | |||
} | |||
} |
@@ -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; | |||
} |
@@ -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; | |||
} |
@@ -38,7 +38,7 @@ public class ReleasesPolicy | |||
* Defaults to {@link AbstractUpdatePolicy#HOURLY} | |||
*/ | |||
@Override | |||
public String getDefaultOption() | |||
public PolicyOption getDefaultOption() | |||
{ | |||
return AbstractUpdatePolicy.HOURLY; | |||
} |
@@ -39,7 +39,7 @@ public class SnapshotsPolicy | |||
* Defaults to {@link AbstractUpdatePolicy#HOURLY} | |||
*/ | |||
@Override | |||
public String getDefaultOption() | |||
public PolicyOption getDefaultOption() | |||
{ | |||
return AbstractUpdatePolicy.HOURLY; | |||
} |
@@ -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; | |||
} | |||
} |
@@ -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; | |||
} | |||
} |
@@ -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) { |
@@ -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) { |
@@ -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) { |
@@ -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) { |
@@ -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) { |
@@ -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) { |
@@ -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; |
@@ -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(); |
@@ -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, |
@@ -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 ); |
@@ -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 ); |
@@ -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; | |||
} |
@@ -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 ); | |||
} |
@@ -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 | |||
{ |
@@ -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 | |||
{ |
@@ -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 |
@@ -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 |