@@ -0,0 +1,64 @@ | |||
package org.apache.archiva.repository; | |||
/* | |||
* 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. | |||
*/ | |||
import java.util.Locale; | |||
/** | |||
* Simple implementation of a managed repository. | |||
*/ | |||
public abstract class AbstractManagedRepository extends AbstractRepository implements EditableManagedRepository | |||
{ | |||
private boolean blocksRedeployment = false; | |||
private ManagedRepositoryContent content; | |||
public AbstractManagedRepository( RepositoryType type, String id, String name ) | |||
{ | |||
super( type, id, name ); | |||
} | |||
public AbstractManagedRepository( Locale primaryLocale, RepositoryType type, String id, String name ) | |||
{ | |||
super( primaryLocale, type, id, name ); | |||
} | |||
@Override | |||
public ManagedRepositoryContent getContent( ) | |||
{ | |||
return content; | |||
} | |||
protected void setContent(ManagedRepositoryContent content) { | |||
this.content = content; | |||
} | |||
@Override | |||
public void setBlocksRedeployment( boolean blocksRedeployment ) | |||
{ | |||
this.blocksRedeployment = blocksRedeployment; | |||
} | |||
@Override | |||
public boolean blocksRedeployments( ) | |||
{ | |||
return blocksRedeployment; | |||
} | |||
} |
@@ -0,0 +1,164 @@ | |||
package org.apache.archiva.repository; | |||
/* | |||
* 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. | |||
*/ | |||
import java.time.Duration; | |||
import java.util.Collections; | |||
import java.util.HashMap; | |||
import java.util.Locale; | |||
import java.util.Map; | |||
/** | |||
* Abstract implementation of a remote repository. Abstract classes must implement the | |||
* features and capabilities by themselves. | |||
*/ | |||
public abstract class AbstractRemoteRepository extends AbstractRepository implements EditableRemoteRepository | |||
{ | |||
private RepositoryCredentials credentials; | |||
private String checkPath; | |||
private Map<String,String> extraParameters = new HashMap<>( ); | |||
private Map<String,String> uExtraParameters = Collections.unmodifiableMap( extraParameters ); | |||
private Map<String,String> extraHeaders = new HashMap<>( ); | |||
private Map<String,String> uExtraHeaders = Collections.unmodifiableMap( extraHeaders ); | |||
private Duration timeout; | |||
private Duration downloadTimeout; | |||
private String proxyId; | |||
private RemoteRepositoryContent content; | |||
public AbstractRemoteRepository( RepositoryType type, String id, String name ) | |||
{ | |||
super( type, id, name ); | |||
} | |||
public AbstractRemoteRepository( Locale primaryLocale, RepositoryType type, String id, String name ) | |||
{ | |||
super( primaryLocale, type, id, name ); | |||
} | |||
@Override | |||
public void setCredentials( RepositoryCredentials credentials ) | |||
{ | |||
this.credentials = credentials; | |||
} | |||
@Override | |||
public void setCheckPath( String path ) | |||
{ | |||
this.checkPath = path; | |||
} | |||
@Override | |||
public void setExtraParameters( Map<String, String> params ) | |||
{ | |||
this.extraParameters.clear(); | |||
this.extraParameters.putAll(params); | |||
} | |||
@Override | |||
public void addExtraParameter( String key, String value ) | |||
{ | |||
this.extraParameters.put(key, value); | |||
} | |||
@Override | |||
public void setExtraHeaders( Map<String, String> headers ) | |||
{ | |||
this.extraHeaders.clear(); | |||
this.extraHeaders.putAll(headers); | |||
} | |||
@Override | |||
public void addExtraHeader( String header, String value ) | |||
{ | |||
this.extraHeaders.put(header, value); | |||
} | |||
@Override | |||
public void setTimeout( Duration duration ) | |||
{ | |||
this.timeout = duration; | |||
} | |||
@Override | |||
public void setDownloadTimeout( Duration duration ) | |||
{ | |||
this.downloadTimeout=duration; | |||
} | |||
@Override | |||
public void setProxyId( String proxyId ) | |||
{ | |||
this.proxyId = proxyId; | |||
} | |||
@Override | |||
public RemoteRepositoryContent getContent( ) | |||
{ | |||
return content; | |||
} | |||
protected void setContent(RemoteRepositoryContent content) { | |||
this.content = content; | |||
} | |||
@Override | |||
public RepositoryCredentials getLoginCredentials( ) | |||
{ | |||
return credentials; | |||
} | |||
@Override | |||
public String getCheckPath( ) | |||
{ | |||
return checkPath; | |||
} | |||
@Override | |||
public Map<String, String> getExtraParameters( ) | |||
{ | |||
return uExtraParameters; | |||
} | |||
@Override | |||
public Map<String, String> getExtraHeaders( ) | |||
{ | |||
return uExtraHeaders; | |||
} | |||
@Override | |||
public Duration getTimeout( ) | |||
{ | |||
return timeout; | |||
} | |||
@Override | |||
public Duration getDownloadTimeout( ) | |||
{ | |||
return downloadTimeout; | |||
} | |||
@Override | |||
public String getProxyId( ) | |||
{ | |||
return proxyId; | |||
} | |||
} |
@@ -0,0 +1,290 @@ | |||
package org.apache.archiva.repository; | |||
/* | |||
* 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. | |||
*/ | |||
import org.apache.archiva.repository.features.RepositoryFeature; | |||
import java.net.URI; | |||
import java.util.ArrayList; | |||
import java.util.Collections; | |||
import java.util.HashMap; | |||
import java.util.HashSet; | |||
import java.util.List; | |||
import java.util.Locale; | |||
import java.util.Map; | |||
import java.util.Set; | |||
/** | |||
* Implementation of a repository with the necessary fields for a bare repository. | |||
* No features are provided. Capabilities and features must be implemented by concrete classes. | |||
* | |||
*/ | |||
public abstract class AbstractRepository implements EditableRepository | |||
{ | |||
private final RepositoryType type; | |||
private final String id; | |||
private Map<Locale, String> names = new HashMap<>( ); | |||
private Map<Locale, String> descriptions = new HashMap<>( ); | |||
private Locale primaryLocale = new Locale("en_US"); | |||
private URI location; | |||
private Set<URI> failoverLocations = new HashSet<>( ); | |||
private Set<URI> uFailoverLocations = Collections.unmodifiableSet( failoverLocations ); | |||
private boolean scanned = true; | |||
private List<ScheduleDefinition> schedulingTimes = new ArrayList<>( ); | |||
private List<ScheduleDefinition> uSchedulingTimes = Collections.unmodifiableList( schedulingTimes ); | |||
private boolean index; | |||
private URI indexPath; | |||
private String layout; | |||
private Set<ReleaseScheme> activeReleaseSchemes = new HashSet<>( ); | |||
private Set<ReleaseScheme> uActiveReleaseSchemes = Collections.unmodifiableSet( activeReleaseSchemes ); | |||
public AbstractRepository(RepositoryType type, String id, String name) { | |||
this.id = id; | |||
this.names.put( primaryLocale, name); | |||
this.type = type; | |||
} | |||
public AbstractRepository(Locale primaryLocale, RepositoryType type, String id, String name) { | |||
setPrimaryLocale( primaryLocale ); | |||
this.id = id; | |||
this.names.put( primaryLocale, name); | |||
this.type = type; | |||
} | |||
protected void setPrimaryLocale(Locale locale) { | |||
this.primaryLocale = locale; | |||
} | |||
@Override | |||
public String getId( ) | |||
{ | |||
return id; | |||
} | |||
@Override | |||
public String getName( ) | |||
{ | |||
return getName( primaryLocale ); | |||
} | |||
@Override | |||
public String getName( Locale locale ) | |||
{ | |||
return names.get(locale); | |||
} | |||
@Override | |||
public String getDescription( ) | |||
{ | |||
return getDescription( primaryLocale ); | |||
} | |||
@Override | |||
public String getDescription( Locale locale ) | |||
{ | |||
return descriptions.get(primaryLocale); | |||
} | |||
@Override | |||
public RepositoryType getType( ) | |||
{ | |||
return type; | |||
} | |||
@Override | |||
public URI getLocation( ) | |||
{ | |||
return location; | |||
} | |||
@Override | |||
public Set<URI> getFailoverLocations( ) | |||
{ | |||
return uFailoverLocations; | |||
} | |||
@Override | |||
public boolean isScanned( ) | |||
{ | |||
return scanned; | |||
} | |||
@Override | |||
public List<ScheduleDefinition> getSchedulingTimes( ) | |||
{ | |||
return uSchedulingTimes; | |||
} | |||
@Override | |||
public boolean hasIndex( ) | |||
{ | |||
return index; | |||
} | |||
@Override | |||
public URI getIndexPath( ) | |||
{ | |||
return indexPath; | |||
} | |||
@Override | |||
public String getLayout( ) | |||
{ | |||
return layout; | |||
} | |||
@Override | |||
public Set<ReleaseScheme> getActiveReleaseSchemes( ) | |||
{ | |||
return uActiveReleaseSchemes; | |||
} | |||
@Override | |||
public abstract RepositoryCapabilities getCapabilities( ); | |||
@Override | |||
public <T extends RepositoryFeature<T>> RepositoryFeature<T> getFeature( Class<T> clazz ) throws UnsupportedFeatureException | |||
{ | |||
throw new UnsupportedFeatureException( "Feature "+clazz+" not supported" ); | |||
} | |||
@Override | |||
public <T extends RepositoryFeature<T>> boolean supportsFeature( Class<T> clazz ) | |||
{ | |||
return false; | |||
} | |||
@Override | |||
public Locale getPrimaryLocale( ) | |||
{ | |||
return primaryLocale; | |||
} | |||
@Override | |||
public void setName( Locale locale, String name ) | |||
{ | |||
names.put(locale, name); | |||
} | |||
@Override | |||
public void setDescription( Locale locale, String description ) | |||
{ | |||
descriptions.put(locale, description); | |||
} | |||
@Override | |||
public void setLocation( URI location ) | |||
{ | |||
this.location = location; | |||
} | |||
@Override | |||
public void addFailoverLocation( URI location ) | |||
{ | |||
this.failoverLocations.add(location); | |||
} | |||
@Override | |||
public void removeFailoverLocation( URI location ) | |||
{ | |||
this.failoverLocations.remove( location ); | |||
} | |||
@Override | |||
public void clearFailoverLocations( ) | |||
{ | |||
this.failoverLocations.clear(); | |||
} | |||
@Override | |||
public void setScanned( boolean scanned ) | |||
{ | |||
this.scanned = scanned; | |||
} | |||
@Override | |||
public void addSchedulingTime( int index, ScheduleDefinition scheduleDefinition ) | |||
{ | |||
this.schedulingTimes.add( index, scheduleDefinition ); | |||
} | |||
@Override | |||
public void addSchedulingTime( ScheduleDefinition scheduleDefinition ) | |||
{ | |||
this.schedulingTimes.add(scheduleDefinition); | |||
} | |||
@Override | |||
public void removeSchedulingTime( ScheduleDefinition scheduleDefinition ) | |||
{ | |||
this.schedulingTimes.remove(scheduleDefinition); | |||
} | |||
@Override | |||
public void removeSchedulingTime(int index) { | |||
this.schedulingTimes.remove(index); | |||
} | |||
@Override | |||
public void clearSchedulingTimes( ) | |||
{ | |||
this.schedulingTimes.clear(); | |||
} | |||
@Override | |||
public void setIndex( boolean hasIndex ) | |||
{ | |||
this.index = hasIndex; | |||
} | |||
@Override | |||
public void setIndexPath( URI indexPath ) | |||
{ | |||
this.indexPath = indexPath; | |||
} | |||
@Override | |||
public void setLayout( String layout ) | |||
{ | |||
this.layout = layout; | |||
} | |||
@Override | |||
public void addActiveReleaseScheme( ReleaseScheme scheme ) | |||
{ | |||
this.activeReleaseSchemes.add(scheme); | |||
} | |||
@Override | |||
public void removeActiveReleaseScheme( ReleaseScheme scheme ) | |||
{ | |||
this.activeReleaseSchemes.remove(scheme); | |||
} | |||
@Override | |||
public void clearActiveReleaseSchemes( ) | |||
{ | |||
this.activeReleaseSchemes.clear(); | |||
} | |||
} |
@@ -0,0 +1,32 @@ | |||
package org.apache.archiva.repository; | |||
/* | |||
* 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. | |||
*/ | |||
/** | |||
* The editable part of a managed repository. | |||
*/ | |||
public interface EditableManagedRepository extends EditableRepository, ManagedRepository | |||
{ | |||
/** | |||
* If true, the repository blocks redeployments of artifacts with the same version. | |||
* @param blocksRedeployment The flag for blocking redeployments. | |||
*/ | |||
void setBlocksRedeployment(boolean blocksRedeployment); | |||
} |
@@ -0,0 +1,91 @@ | |||
package org.apache.archiva.repository; | |||
/* | |||
* 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. | |||
*/ | |||
import java.time.Duration; | |||
import java.util.Map; | |||
/** | |||
* The editable part of a remote repository | |||
*/ | |||
public interface EditableRemoteRepository extends EditableRepository, RemoteRepository | |||
{ | |||
/** | |||
* Sets the login credentials for login to the remote repository. | |||
* @param credentials | |||
*/ | |||
void setCredentials(RepositoryCredentials credentials); | |||
/** | |||
* Sets the path relative to the root url of the repository that should be used to check | |||
* the availability of the repository. | |||
* | |||
* @param path The path string. | |||
*/ | |||
void setCheckPath(String path); | |||
/** | |||
* Sets additional parameters to be used to access the remote repository. | |||
* @param params A map of parameters, may not be null. | |||
*/ | |||
void setExtraParameters(Map<String,String> params); | |||
/** | |||
* Adds an additional parameter. | |||
* @param key The key of the parameter | |||
* @param value The value of the parameter | |||
*/ | |||
void addExtraParameter(String key, String value); | |||
/** | |||
* Sets the extra headers, that are added to the requests to the remote repository. | |||
*/ | |||
void setExtraHeaders(Map<String,String> headers); | |||
/** | |||
* Adds an extra header. | |||
* @param header The header name | |||
* @param value The header value | |||
*/ | |||
void addExtraHeader(String header, String value); | |||
/** | |||
* Sets the timeout for requests to the remote repository. | |||
* | |||
* @param duration The amount of time, after that the request is aborted. | |||
*/ | |||
void setTimeout(Duration duration); | |||
/** | |||
* Sets the maximum duration for downloads from the remote repository. | |||
* | |||
* @param duration The amount of time after that a download is aborted. | |||
*/ | |||
void setDownloadTimeout(Duration duration); | |||
/** | |||
* Sets the proxy id that is used for requests to the remote repository. | |||
* | |||
* @param proxyId The id of the proxy. | |||
*/ | |||
void setProxyId(String proxyId); | |||
} |
@@ -0,0 +1,164 @@ | |||
package org.apache.archiva.repository; | |||
/* | |||
* 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. | |||
*/ | |||
import java.net.URI; | |||
import java.util.Locale; | |||
/** | |||
* This is the editable part of a repository. | |||
* Normally a repository should also implement this interface but it is not | |||
* required. | |||
* | |||
* Capabilities and features are a integral part of the implementation and not | |||
* provided here by the interface. | |||
* Feature setting methods are provided by the features itself. | |||
* | |||
*/ | |||
public interface EditableRepository extends Repository | |||
{ | |||
/** | |||
* Returns the primary locale used for setting the default values for | |||
* name and description. | |||
* | |||
* @return The locale used for name and description when they are not set | |||
*/ | |||
Locale getPrimaryLocale(); | |||
/** | |||
* Sets the name for the given locale | |||
* | |||
* @param locale the locale for which the name is set | |||
* @param name The name value in the language that matches the locale | |||
*/ | |||
void setName( Locale locale, String name); | |||
/** | |||
* Sets the description for the given locale | |||
* | |||
* @param locale the locale for which the description is set | |||
* @param description The description in the language that matches the locale. | |||
*/ | |||
void setDescription(Locale locale, String description); | |||
/** | |||
* Sets the location of the repository. May be a URI that is suitable for the | |||
* repository implementation. Not all implementations will accept the same URI schemes. | |||
* @param location the location URI | |||
* @throws UnsupportedURIException if the URI scheme is not supported by the repository type. | |||
*/ | |||
void setLocation(URI location) throws UnsupportedURIException; | |||
/** | |||
* Adds a failover location for the repository. | |||
* | |||
* @param location The location that should be used as failover. | |||
* @throws UnsupportedURIException if the URI scheme is not supported by the repository type. | |||
*/ | |||
void addFailoverLocation(URI location) throws UnsupportedURIException; | |||
/** | |||
* Removes a failover location from the set. | |||
* | |||
* @param location the location uri to remove | |||
*/ | |||
void removeFailoverLocation(URI location); | |||
/** | |||
* Clears the failover location set. | |||
*/ | |||
void clearFailoverLocations(); | |||
/** | |||
* Sets the flag for scanning the repository. If true, the repository will be scanned. | |||
* You have to set the scheduling times, if you set this to true. | |||
* | |||
* @param scanned if true, the repository is scanned regulary. | |||
*/ | |||
void setScanned(boolean scanned); | |||
/** | |||
* Adds a scheduling time at the given index. | |||
* @param index the index where time should be set | |||
* @param scheduleDefinition the scheduling definition to add | |||
*/ | |||
void addSchedulingTime(int index, ScheduleDefinition scheduleDefinition); | |||
/** | |||
* Adds a scheduling time to the end of the list. | |||
* @param scheduleDefinition the scheduling definition to set | |||
*/ | |||
void addSchedulingTime(ScheduleDefinition scheduleDefinition); | |||
/** | |||
* Removes the scheduling time definition from the list. | |||
* @param scheduleDefinition the scheduling definition to remove. | |||
*/ | |||
void removeSchedulingTime(ScheduleDefinition scheduleDefinition); | |||
/** | |||
* Removes the scheduling time definition add the given index. | |||
* | |||
* @param index the index to remove | |||
*/ | |||
void removeSchedulingTime(int index); | |||
/** | |||
* Clears the list of scheduling definitions. | |||
*/ | |||
void clearSchedulingTimes(); | |||
/** | |||
* Set true, if the repository has indexes stored. | |||
* @param hasIndex true, if the repository has indexes, otherwise false. | |||
*/ | |||
void setIndex(boolean hasIndex); | |||
/** | |||
* Sets the path to the index directory. May be a relative or absolute URI. | |||
* @param indexPath the path | |||
*/ | |||
void setIndexPath(URI indexPath); | |||
/** | |||
* Sets the layout string. | |||
* @param layout | |||
*/ | |||
void setLayout(String layout); | |||
/** | |||
* Adds an active release scheme. Release schemes may be combined. | |||
* @param scheme the scheme to add. | |||
*/ | |||
void addActiveReleaseScheme(ReleaseScheme scheme); | |||
/** | |||
* Removes an active release scheme from the set. | |||
* @param scheme the scheme to remove. | |||
*/ | |||
void removeActiveReleaseScheme(ReleaseScheme scheme); | |||
/** | |||
* Clears all active release schemes. | |||
*/ | |||
void clearActiveReleaseSchemes(); | |||
} |
@@ -41,12 +41,6 @@ public interface RemoteRepository extends Repository { | |||
*/ | |||
RepositoryCredentials getLoginCredentials(); | |||
/** | |||
* Sets the login credentials for login to the remote repository. | |||
* @param credentials | |||
*/ | |||
void setCredentials(RepositoryCredentials credentials); | |||
/** | |||
* Returns the path relative to the root url of the repository that should be used | |||
* to check the availability of the repository. | |||
@@ -54,13 +48,6 @@ public interface RemoteRepository extends Repository { | |||
*/ | |||
String getCheckPath(); | |||
/** | |||
* Sets the path relative to the root url of the repository that should be used to check | |||
* the availability of the repository. | |||
* | |||
* @param path The path string. | |||
*/ | |||
void setCheckPath(String path); | |||
/** | |||
* Returns additional parameters, that are used for accessing the remote repository. | |||
@@ -68,18 +55,6 @@ public interface RemoteRepository extends Repository { | |||
*/ | |||
Map<String,String> getExtraParameters(); | |||
/** | |||
* Sets additional parameters to be used to access the remote repository. | |||
* @param params A map of parameters, may not be null. | |||
*/ | |||
void setExtraParameters(Map<String,String> params); | |||
/** | |||
* Adds an additional parameter. | |||
* @param key The key of the parameter | |||
* @param value The value of the parameter | |||
*/ | |||
void addExtraParameter(String key, String value); | |||
/** | |||
* Returns extra headers that are added to the request to the remote repository. | |||
@@ -87,18 +62,6 @@ public interface RemoteRepository extends Repository { | |||
*/ | |||
Map<String,String> getExtraHeaders(); | |||
/** | |||
* Sets the extra headers, that are added to the requests to the remote repository. | |||
*/ | |||
void setExtraHeaders(Map<String,String> headers); | |||
/** | |||
* Adds an extra header. | |||
* @param header The header name | |||
* @param value The header value | |||
*/ | |||
void addExtraHeader(String header, String value); | |||
/** | |||
* Returns the time duration, after that the request is aborted and a error is returned, if the remote repository | |||
* does not respond. | |||
@@ -106,36 +69,16 @@ public interface RemoteRepository extends Repository { | |||
*/ | |||
Duration getTimeout(); | |||
/** | |||
* Sets the timeout for requests to the remote repository. | |||
* | |||
* @param duration The amount of time, after that the request is aborted. | |||
*/ | |||
void setTimeout(Duration duration); | |||
/** | |||
* Returns the time duration after that downloads from the remote repository are aborted. | |||
* @return | |||
*/ | |||
Duration getDownloadTimeout(); | |||
/** | |||
* Sets the maximum duration for downloads from the remote repository. | |||
* | |||
* @param duration The amount of time after that a download is aborted. | |||
*/ | |||
void setDownloadTimeout(Duration duration); | |||
/** | |||
* Returns the id of the proxy, that is used for accessing the remote repository. | |||
* @return The proxy id. | |||
*/ | |||
String getProxyId(); | |||
/** | |||
* Sets the proxy id that is used for requests to the remote repository. | |||
* | |||
* @param proxyId The id of the proxy. | |||
*/ | |||
void setProxyId(String proxyId); | |||
} |
@@ -0,0 +1,131 @@ | |||
package org.apache.archiva.repository; | |||
/* | |||
* 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. | |||
*/ | |||
import java.util.Collections; | |||
import java.util.HashSet; | |||
import java.util.Set; | |||
/** | |||
* Capability implementation. | |||
*/ | |||
public class StandardCapabilities implements RepositoryCapabilities | |||
{ | |||
private final Set<ReleaseScheme> supportedReleaseSchemes; | |||
private final Set<ReleaseScheme> uSupportedReleaseSchemes; | |||
private final Set<String> supportedLayouts; | |||
private final Set<String> uSupportedLayouts; | |||
private final Set<String> customCapabilities; | |||
private final Set<String> uCustomCapabilities; | |||
private final Set<String> supportedFeatures; | |||
private final Set<String> uSupportedFeatures; | |||
private final boolean indexable; | |||
private final boolean fileBased; | |||
private final boolean canBlockRedeployments; | |||
private final boolean scannable; | |||
private final boolean allowsFailover; | |||
public StandardCapabilities( ReleaseScheme[] supportedReleaseSchemes, String[] supportedLayouts, | |||
String[] customCapabilities, String[] supportedFeatures, | |||
boolean indexable, boolean fileBased, | |||
boolean canBlockRedeployments, boolean scannable, boolean allowsFailover ) | |||
{ | |||
this.supportedReleaseSchemes = new HashSet(); | |||
for (ReleaseScheme scheme : supportedReleaseSchemes) { | |||
this.supportedReleaseSchemes.add(scheme); | |||
} | |||
this.uSupportedReleaseSchemes = Collections.unmodifiableSet( this.supportedReleaseSchemes); | |||
this.supportedLayouts = new HashSet<>( ); | |||
for (String layout : supportedLayouts) { | |||
this.supportedLayouts.add(layout); | |||
} | |||
this.uSupportedLayouts = Collections.unmodifiableSet( this.supportedLayouts ); | |||
this.customCapabilities = new HashSet<>( ); | |||
for (String cap : customCapabilities) { | |||
this.customCapabilities.add(cap); | |||
} | |||
this.uCustomCapabilities = Collections.unmodifiableSet( this.customCapabilities ); | |||
this.supportedFeatures = new HashSet<>( ); | |||
for (String feature : supportedFeatures) { | |||
this.supportedFeatures.add(feature); | |||
} | |||
this.uSupportedFeatures = Collections.unmodifiableSet( this.supportedFeatures ); | |||
this.indexable = indexable; | |||
this.fileBased = fileBased; | |||
this.canBlockRedeployments = canBlockRedeployments; | |||
this.scannable = scannable; | |||
this.allowsFailover = allowsFailover; | |||
} | |||
@Override | |||
public Set<ReleaseScheme> supportedReleaseSchemes( ) | |||
{ | |||
return uSupportedReleaseSchemes; | |||
} | |||
@Override | |||
public Set<String> supportedLayouts( ) | |||
{ | |||
return uSupportedLayouts; | |||
} | |||
@Override | |||
public Set<String> customCapabilities( ) | |||
{ | |||
return uCustomCapabilities; | |||
} | |||
@Override | |||
public Set<String> supportedFeatures( ) | |||
{ | |||
return uSupportedFeatures; | |||
} | |||
@Override | |||
public boolean isIndexable( ) | |||
{ | |||
return indexable; | |||
} | |||
@Override | |||
public boolean isFileBased( ) | |||
{ | |||
return fileBased; | |||
} | |||
@Override | |||
public boolean canBlockRedeployments( ) | |||
{ | |||
return canBlockRedeployments; | |||
} | |||
@Override | |||
public boolean isScannable( ) | |||
{ | |||
return scannable; | |||
} | |||
@Override | |||
public boolean allowsFailover( ) | |||
{ | |||
return allowsFailover; | |||
} | |||
} |
@@ -0,0 +1,51 @@ | |||
package org.apache.archiva.repository; | |||
/* | |||
* 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. | |||
*/ | |||
/** | |||
* Exception is thrown, if the URI is syntactically correct, but is not | |||
* supported by the underlying repository implementation | |||
*/ | |||
public class UnsupportedURIException extends Exception | |||
{ | |||
public UnsupportedURIException( ) | |||
{ | |||
} | |||
public UnsupportedURIException( String message ) | |||
{ | |||
super( message ); | |||
} | |||
public UnsupportedURIException( String message, Throwable cause ) | |||
{ | |||
super( message, cause ); | |||
} | |||
public UnsupportedURIException( Throwable cause ) | |||
{ | |||
super( cause ); | |||
} | |||
public UnsupportedURIException( String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace ) | |||
{ | |||
super( message, cause, enableSuppression, writableStackTrace ); | |||
} | |||
} |
@@ -0,0 +1,81 @@ | |||
package org.apache.archiva.repository.maven2; | |||
/* | |||
* 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. | |||
*/ | |||
import org.apache.archiva.repository.AbstractManagedRepository; | |||
import org.apache.archiva.repository.ManagedRepositoryContent; | |||
import org.apache.archiva.repository.ReleaseScheme; | |||
import org.apache.archiva.repository.RepositoryCapabilities; | |||
import org.apache.archiva.repository.RepositoryType; | |||
import org.apache.archiva.repository.StandardCapabilities; | |||
import org.apache.archiva.repository.features.ArtifactCleanupFeature; | |||
import org.apache.archiva.repository.features.IndexCreationFeature; | |||
import org.apache.archiva.repository.features.StagingRepositoryFeature; | |||
import java.util.Locale; | |||
/** | |||
* Maven2 managed repository implementation. | |||
*/ | |||
public class MavenManagedRepository extends AbstractManagedRepository | |||
{ | |||
public static final String DEFAULT_LAYOUT = "default"; | |||
public static final String LEGACY_LAYOUT = "legacy"; | |||
private ManagedRepositoryContent content; | |||
private static final RepositoryCapabilities CAPABILITIES = new StandardCapabilities( | |||
new ReleaseScheme[] { ReleaseScheme.RELEASE, ReleaseScheme.SNAPSHOT }, | |||
new String[] { DEFAULT_LAYOUT, LEGACY_LAYOUT}, | |||
new String[] {}, | |||
new String[] {ArtifactCleanupFeature.class.getName(), IndexCreationFeature.class.getName(), | |||
StagingRepositoryFeature.class.getName()}, | |||
true, | |||
true, | |||
true, | |||
true, | |||
false | |||
); | |||
public MavenManagedRepository( RepositoryType type, String id, String name ) | |||
{ | |||
super( type, id, name ); | |||
} | |||
public MavenManagedRepository( Locale primaryLocale, RepositoryType type, String id, String name ) | |||
{ | |||
super( primaryLocale, type, id, name ); | |||
} | |||
protected void setContent(ManagedRepositoryContent content) { | |||
this.content = content; | |||
} | |||
@Override | |||
public ManagedRepositoryContent getContent( ) | |||
{ | |||
return content; | |||
} | |||
@Override | |||
public RepositoryCapabilities getCapabilities( ) | |||
{ | |||
return CAPABILITIES; | |||
} | |||
} |
@@ -0,0 +1,74 @@ | |||
package org.apache.archiva.repository.maven2; | |||
import org.apache.archiva.repository.AbstractRemoteRepository; | |||
import org.apache.archiva.repository.AbstractRepository; | |||
import org.apache.archiva.repository.ReleaseScheme; | |||
import org.apache.archiva.repository.RemoteRepository; | |||
import org.apache.archiva.repository.RemoteRepositoryContent; | |||
import org.apache.archiva.repository.RepositoryCapabilities; | |||
import org.apache.archiva.repository.RepositoryCredentials; | |||
import org.apache.archiva.repository.RepositoryType; | |||
import org.apache.archiva.repository.StandardCapabilities; | |||
import org.apache.archiva.repository.features.ArtifactCleanupFeature; | |||
import org.apache.archiva.repository.features.IndexCreationFeature; | |||
import org.apache.archiva.repository.features.RemoteIndexFeature; | |||
import org.apache.archiva.repository.features.StagingRepositoryFeature; | |||
import java.time.Duration; | |||
import java.util.Locale; | |||
import java.util.Map; | |||
/* | |||
* 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. | |||
*/ | |||
/** | |||
* Maven2 remote repository implementation | |||
*/ | |||
public class MavenRemoteRepository extends AbstractRemoteRepository | |||
implements RemoteRepository | |||
{ | |||
private static final RepositoryCapabilities CAPABILITIES = new StandardCapabilities( | |||
new ReleaseScheme[] { ReleaseScheme.RELEASE, ReleaseScheme.SNAPSHOT }, | |||
new String[] { MavenManagedRepository.DEFAULT_LAYOUT, MavenManagedRepository.LEGACY_LAYOUT}, | |||
new String[] {}, | |||
new String[] {ArtifactCleanupFeature.class.getName(), IndexCreationFeature.class.getName(), | |||
StagingRepositoryFeature.class.getName(), RemoteIndexFeature.class.getName()}, | |||
true, | |||
true, | |||
true, | |||
true, | |||
false | |||
); | |||
public MavenRemoteRepository( RepositoryType type, String id, String name ) | |||
{ | |||
super( type, id, name ); | |||
} | |||
public MavenRemoteRepository( Locale primaryLocale, RepositoryType type, String id, String name ) | |||
{ | |||
super( primaryLocale, type, id, name ); | |||
} | |||
@Override | |||
public RepositoryCapabilities getCapabilities( ) | |||
{ | |||
return CAPABILITIES; | |||
} | |||
} |
@@ -0,0 +1,60 @@ | |||
package org.apache.archiva.repository.maven2; | |||
/* | |||
* 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. | |||
*/ | |||
import org.apache.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.archiva.configuration.RemoteRepositoryConfiguration; | |||
import org.apache.archiva.repository.ManagedRepository; | |||
import org.apache.archiva.repository.RemoteRepository; | |||
import org.apache.archiva.repository.RepositoryProvider; | |||
import org.apache.archiva.repository.RepositoryType; | |||
import java.util.HashSet; | |||
import java.util.Set; | |||
/** | |||
* Provider for the maven2 repository implementations | |||
*/ | |||
public class MavenRepositoryProvider implements RepositoryProvider | |||
{ | |||
static final Set<RepositoryType> TYPES = new HashSet<>( ); | |||
static { | |||
TYPES.add( RepositoryType.MAVEN); | |||
} | |||
@Override | |||
public Set<RepositoryType> provides( ) | |||
{ | |||
return TYPES; | |||
} | |||
@Override | |||
public ManagedRepository createManagedInstance( ManagedRepositoryConfiguration configuration ) | |||
{ | |||
MavenManagedRepository repo = new MavenManagedRepository( null, null ,null ); | |||
return null; | |||
} | |||
@Override | |||
public RemoteRepository createRemoteInstance( RemoteRepositoryConfiguration configuration ) | |||
{ | |||
return null; | |||
} | |||
} |