/******************************************************************************* * Copyright (c) 2010, 2012 Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Sonatype, Inc. - initial API and implementation *******************************************************************************/ package org.eclipse.aether.repository; /** * A policy controlling access to a repository. */ public final class RepositoryPolicy { /** * Never update locally cached data. */ public static final String UPDATE_POLICY_NEVER = "never"; /** * Always update locally cached data. */ public static final String UPDATE_POLICY_ALWAYS = "always"; /** * Update locally cached data once a day. */ public static final String UPDATE_POLICY_DAILY = "daily"; /** * Update locally cached data every X minutes as given by "interval:X". */ public static final String UPDATE_POLICY_INTERVAL = "interval"; /** * Verify checksums and fail the resolution if they do not match. */ public static final String CHECKSUM_POLICY_FAIL = "fail"; /** * Verify checksums and warn if they do not match. */ public static final String CHECKSUM_POLICY_WARN = "warn"; /** * Do not verify checksums. */ public static final String CHECKSUM_POLICY_IGNORE = "ignore"; private final boolean enabled; private final String updatePolicy; private final String checksumPolicy; /** * Creates a new policy with checksum warnings and daily update checks. */ public RepositoryPolicy() { this( true, UPDATE_POLICY_DAILY, CHECKSUM_POLICY_WARN ); } /** * Creates a new policy with the specified settings. * * @param enabled A flag whether the associated repository should be accessed or not. * @param updatePolicy The update interval after which locally cached data from the repository is considered stale * and should be refetched, may be {@code null}. * @param checksumPolicy The way checksum verification should be handled, may be {@code null}. */ public RepositoryPolicy( boolean enabled, String updatePolicy, String checksumPolicy ) { this.enabled = enabled; this.updatePolicy = ( updatePolicy != null ) ? updatePolicy : ""; this.checksumPolicy = ( checksumPolicy != null ) ? checksumPolicy : ""; } /** * Indicates whether the associated repository should be contacted or not. * * @return {@code true} if the repository should be contacted, {@code false} otherwise. */ public boolean isEnabled() { return enabled; } /** * Gets the update policy for locally cached data from the repository. * * @return The update policy, never {@code null}. */ public String getUpdatePolicy() { return updatePolicy; } /** * Gets the policy for checksum validation. * * @return The checksum policy, never {@code null}. */ public String getChecksumPolicy() { return checksumPolicy; } @Override public String toString() { StringBuilder buffer = new StringBuilder( 256 ); buffer.append( "enabled=" ).append( isEnabled() ); buffer.append( ", checksums=" ).append( getChecksumPolicy() ); buffer.append( ", updates=" ).append( getUpdatePolicy() ); return buffer.toString(); } @Override public boolean equals( Object obj ) { if ( this == obj ) { return true; } if ( obj == null || !getClass().equals( obj.getClass() ) ) { return false; } RepositoryPolicy that = (RepositoryPolicy) obj; return enabled == that.enabled && updatePolicy.equals( that.updatePolicy ) && checksumPolicy.equals( that.checksumPolicy ); } @Override public int hashCode() { int hash = 17; hash = hash * 31 + ( enabled ? 1 : 0 ); hash = hash * 31 + updatePolicy.hashCode(); hash = hash * 31 + checksumPolicy.hashCode(); return hash; } }