Pārlūkot izejas kodu

Some progress in repository abstraction

pull/46/head
Martin Stockhammer pirms 6 gadiem
vecāks
revīzija
1b89266820
12 mainītis faili ar 1202 papildinājumiem un 57 dzēšanām
  1. 64
    0
      archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractManagedRepository.java
  2. 164
    0
      archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRemoteRepository.java
  3. 290
    0
      archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRepository.java
  4. 32
    0
      archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableManagedRepository.java
  5. 91
    0
      archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableRemoteRepository.java
  6. 164
    0
      archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableRepository.java
  7. 0
    57
      archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RemoteRepository.java
  8. 131
    0
      archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/StandardCapabilities.java
  9. 51
    0
      archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/UnsupportedURIException.java
  10. 81
    0
      archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java
  11. 74
    0
      archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java
  12. 60
    0
      archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java

+ 64
- 0
archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractManagedRepository.java Parādīt failu

@@ -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;
}
}

+ 164
- 0
archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRemoteRepository.java Parādīt failu

@@ -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;
}
}

+ 290
- 0
archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRepository.java Parādīt failu

@@ -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();
}


}

+ 32
- 0
archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableManagedRepository.java Parādīt failu

@@ -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);
}

+ 91
- 0
archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableRemoteRepository.java Parādīt failu

@@ -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);

}

+ 164
- 0
archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableRepository.java Parādīt failu

@@ -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();


}

+ 0
- 57
archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RemoteRepository.java Parādīt failu

@@ -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);
}

+ 131
- 0
archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/StandardCapabilities.java Parādīt failu

@@ -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;
}
}

+ 51
- 0
archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/UnsupportedURIException.java Parādīt failu

@@ -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 );
}
}

+ 81
- 0
archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java Parādīt failu

@@ -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;
}
}

+ 74
- 0
archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java Parādīt failu

@@ -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;
}
}

+ 60
- 0
archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java Parādīt failu

@@ -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;
}
}

Notiek ielāde…
Atcelt
Saglabāt