http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryCredentials.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryCredentials.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryCredentials.java new file mode 100644 index 0000000..2751bc0 --- /dev/null +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryCredentials.java @@ -0,0 +1,31 @@ +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. + */ + + +/** + * Credentials used to login to a remote repository. + */ +public interface RepositoryCredentials { + + +} + +
http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryException.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryException.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryException.java new file mode 100644 index 0000000..b9dca95 --- /dev/null +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryException.java @@ -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. + */ + +/** + * RepositoryException + * + * + */ +public class RepositoryException + extends Exception +{ + + public RepositoryException() + { + super(); + } + + public RepositoryException( String message, Throwable cause ) + { + super( message, cause ); + } + + public RepositoryException( String message ) + { + super( message ); + } + + public RepositoryException( Throwable cause ) + { + super( cause ); + } + +} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryNotFoundException.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryNotFoundException.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryNotFoundException.java new file mode 100644 index 0000000..ad4ad9b --- /dev/null +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryNotFoundException.java @@ -0,0 +1,49 @@ +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. + */ + +/** + * RepositoryNotFoundException + * + * + */ +public class RepositoryNotFoundException + extends RepositoryException +{ + + public RepositoryNotFoundException() + { + } + + public RepositoryNotFoundException( String message, Throwable cause ) + { + super( message, cause ); + } + + public RepositoryNotFoundException( String message ) + { + super( message ); + } + + public RepositoryNotFoundException( Throwable cause ) + { + super( cause ); + } +} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryProvider.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryProvider.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryProvider.java new file mode 100644 index 0000000..a501514 --- /dev/null +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryProvider.java @@ -0,0 +1,139 @@ +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.configuration.ManagedRepositoryConfiguration; +import org.apache.archiva.configuration.RemoteRepositoryConfiguration; + +import java.util.Set; + +/** + * + * This interface must be implemented by the repository implementations. The repository provider knows all + * about the repositories and should be the only part that uses the repository specific classes and libraries + * (e.g. the maven libraries). + * + * Newly created instances should always be filled with default values that make sense. null values should + * be avoided. + * + * References like staging repositories must not be set. + * + * + */ +public interface RepositoryProvider +{ + + /** + * Returns the types of repositories this provider can handle. + * + * @return the set of supported repository types + */ + Set<RepositoryType> provides(); + + /** + * Creates a editable managed repository instance. The provider must not check the uniqueness of the + * id parameter and must not track the already created instances. Each call to this method will create + * a new instance. + * + * @param id the repository identifier + * @param name the repository name + * @return a new created managed repository instance + */ + EditableManagedRepository createManagedInstance(String id, String name); + + /** + * Creates a editable remote repository instance. The provider must not check the uniqueness of the + * id parameter and must not track the already created instances. Each call to this method will create + * a new instance. + * + * @param id the repository identifier + * @param name the repository name + * @return a new created remote repository instance + */ + EditableRemoteRepository createRemoteInstance(String id, String name); + + /** + * Creates a new managed repository instance from the given configuration. All attributes are filled from the + * provided configuration object. + * + * @param configuration the repository configuration that contains the repository data + * @return a new created managed repository instance + * @throws RepositoryException if some of the configuration values are not valid + */ + ManagedRepository createManagedInstance( ManagedRepositoryConfiguration configuration) throws RepositoryException; + + /** + * Updates the given managed repository instance from the given configuration. All attributes are filled from the + * provided configuration object. + * + * @param repo the repository instance that should be updated + * @param configuration the repository configuration that contains the repository data + * @throws RepositoryException if some of the configuration values are not valid + */ + void updateManagedInstance( EditableManagedRepository repo, ManagedRepositoryConfiguration configuration) throws RepositoryException; + + /** + * Creates a new managed staging repository instance from the given configuration. All attributes are filled from the + * provided configuration object. + * + * @param baseConfiguration the repository configuration of the base repository that references the staging repository + * @return a new created managed staging repository instance + * @throws RepositoryException if some of the configuration values are not valid + */ + ManagedRepository createStagingInstance(ManagedRepositoryConfiguration baseConfiguration) throws RepositoryException; + + /** + * Creates a new remote repository instance from the given configuration. All attributes are filled from the + * provided configuration object. + * + * @param configuration the repository configuration that contains the repository data + * @return a new created remote repository instance + * @throws RepositoryException if some of the configuration values are not valid + */ + RemoteRepository createRemoteInstance( RemoteRepositoryConfiguration configuration) throws RepositoryException; + + /** + * Updates the given remote repository instance from the given configuration. All attributes are filled from the + * provided configuration object. + * + * @param repo the repository instance that should be updated + * @param configuration the repository configuration that contains the repository data + * @throws RepositoryException if some of the configuration values are not valid + */ + void updateRemoteInstance(EditableRemoteRepository repo, RemoteRepositoryConfiguration configuration) throws RepositoryException; + + /** + * Returns a configuration object from the given remote repository instance. + * + * @param remoteRepository the remote repository instance + * @return the repository configuration with all the data that is stored in the repository instance + * @throws RepositoryException if the data cannot be converted + */ + RemoteRepositoryConfiguration getRemoteConfiguration(RemoteRepository remoteRepository) throws RepositoryException; + + /** + * Returns a configuration object from the given managed repository instance. + * + * @param managedRepository the managed repository instance + * @return the repository configuration with all the data that is stored in the repository instance + * @throws RepositoryException if the data cannot be converted + */ + ManagedRepositoryConfiguration getManagedConfiguration(ManagedRepository managedRepository) throws RepositoryException; +} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryType.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryType.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryType.java new file mode 100644 index 0000000..f60c657 --- /dev/null +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryType.java @@ -0,0 +1,29 @@ +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 repository types that are known to the system. + */ +public enum RepositoryType { + + MAVEN, NPM +} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/StandardCapabilities.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/StandardCapabilities.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/StandardCapabilities.java new file mode 100644 index 0000000..0a41c04 --- /dev/null +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/StandardCapabilities.java @@ -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; + } +} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/UnsupportedFeatureException.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/UnsupportedFeatureException.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/UnsupportedFeatureException.java new file mode 100644 index 0000000..112f307 --- /dev/null +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/UnsupportedFeatureException.java @@ -0,0 +1,47 @@ +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. + */ + +/** + * This exception is thrown if a given feature is not supported by the repository. + * This is a runtime exception. + * + */ +public class UnsupportedFeatureException extends RuntimeException { + + public UnsupportedFeatureException() { + } + + public UnsupportedFeatureException(String message) { + super(message); + } + + public UnsupportedFeatureException(String message, Throwable cause) { + super(message, cause); + } + + public UnsupportedFeatureException(Throwable cause) { + super(cause); + } + + public UnsupportedFeatureException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/UnsupportedRepositoryTypeException.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/UnsupportedRepositoryTypeException.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/UnsupportedRepositoryTypeException.java new file mode 100644 index 0000000..9bfc02e --- /dev/null +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/UnsupportedRepositoryTypeException.java @@ -0,0 +1,45 @@ +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. + */ + +/** + * This is a fatal exception and should not happen. It is thrown if the implementation + * does not have certain classes to support this repository type. + */ +public class UnsupportedRepositoryTypeException extends RuntimeException { + + private static final String MESSAGE = "The repository type is not supported: "; + + public UnsupportedRepositoryTypeException(RepositoryType type) { + super(MESSAGE+type.name()); + } + + public UnsupportedRepositoryTypeException(RepositoryType type, Throwable cause) { + super(MESSAGE+type.name(), cause); + } + + public UnsupportedRepositoryTypeException(Throwable cause) { + super(cause); + } + + protected UnsupportedRepositoryTypeException(RepositoryType type, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(MESSAGE+type.name(), cause, enableSuppression, writableStackTrace); + } +} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/UnsupportedURIException.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/UnsupportedURIException.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/UnsupportedURIException.java new file mode 100644 index 0000000..5f7f96f --- /dev/null +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/UnsupportedURIException.java @@ -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 ); + } +} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/features/RepositoryFeature.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/features/RepositoryFeature.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/features/RepositoryFeature.java new file mode 100644 index 0000000..a4df8a2 --- /dev/null +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/features/RepositoryFeature.java @@ -0,0 +1,41 @@ +package org.apache.archiva.repository.features; + +/* + * 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. + */ + + +/** + * Created by martin on 30.09.17. + */ +public interface RepositoryFeature<T extends RepositoryFeature<T>> { + + default String getId() { + return this.getClass().getName(); + } + + default boolean isFeature(String featureId) { + return this.getClass().getName().equals(featureId); + } + + default <K extends RepositoryFeature<K>> boolean isFeature(Class<K> clazz) { + return this.getClass().equals(clazz); + } + + T get(); +} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-api/src/main/resources/META-INF/spring-context.xml ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/resources/META-INF/spring-context.xml b/archiva-modules/archiva-base/archiva-repository-api/src/main/resources/META-INF/spring-context.xml new file mode 100644 index 0000000..ce334de --- /dev/null +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/resources/META-INF/spring-context.xml @@ -0,0 +1,39 @@ +<?xml version="1.0"?> + +<!-- + ~ 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. + --> + +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:context="http://www.springframework.org/schema/context" + xmlns:task="http://www.springframework.org/schema/task" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-3.0.xsd + http://www.springframework.org/schema/context + http://www.springframework.org/schema/context/spring-context-3.0.xsd + http://www.springframework.org/schema/task + http://www.springframework.org/schema/task/spring-task-3.0.xsd" + default-lazy-init="false"> + + <context:annotation-config/> + <context:component-scan base-package="org.apache.archiva.indexer.search,org.apache.archiva.indexer.merger"/> + + + +</beans> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-layer/pom.xml ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-layer/pom.xml b/archiva-modules/archiva-base/archiva-repository-layer/pom.xml index 8f21534..2b03400 100644 --- a/archiva-modules/archiva-base/archiva-repository-layer/pom.xml +++ b/archiva-modules/archiva-base/archiva-repository-layer/pom.xml @@ -43,6 +43,10 @@ </dependency> <dependency> <groupId>org.apache.archiva</groupId> + <artifactId>archiva-repository-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> <artifactId>archiva-configuration</artifactId> </dependency> <dependency> http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRepository.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRepository.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRepository.java index 0ff3cb1..ab1c3fa 100644 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRepository.java +++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRepository.java @@ -23,6 +23,7 @@ import com.cronutils.model.CronType; import com.cronutils.model.definition.CronDefinition; import com.cronutils.model.definition.CronDefinitionBuilder; import com.cronutils.parser.CronParser; +import org.apache.archiva.indexer.ArchivaIndexingContext; import org.apache.archiva.repository.features.RepositoryFeature; import java.net.URI; @@ -237,4 +238,10 @@ public abstract class AbstractRepository implements EditableRepository protected <T extends RepositoryFeature<T>> void addFeature(RepositoryFeature<T> feature) { featureMap.put( (Class<? extends RepositoryFeature<?>>) feature.getClass(), feature); } + + @Override + public ArchivaIndexingContext getIndexingContext() { + // TODO: Implement + return null; + } } http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ContentNotFoundException.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ContentNotFoundException.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ContentNotFoundException.java deleted file mode 100644 index 7579deb..0000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ContentNotFoundException.java +++ /dev/null @@ -1,50 +0,0 @@ -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. - */ - -/** - * ContentNotFoundException is thrown in response for requests for content that is not the repository. - * - * - */ -public class ContentNotFoundException - extends RepositoryException -{ - - public ContentNotFoundException() - { - super(); - } - - public ContentNotFoundException( String message, Throwable cause ) - { - super( message, cause ); - } - - public ContentNotFoundException( String message ) - { - super( message ); - } - - public ContentNotFoundException( Throwable cause ) - { - super( cause ); - } -} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableManagedRepository.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableManagedRepository.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableManagedRepository.java deleted file mode 100644 index 4596201..0000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableManagedRepository.java +++ /dev/null @@ -1,56 +0,0 @@ -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); - - /** - * Sets the content - * @param content - */ - void setContent(ManagedRepositoryContent content); - - /** - * 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(); - -} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableRemoteRepository.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableRemoteRepository.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableRemoteRepository.java deleted file mode 100644 index f8a054f..0000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableRemoteRepository.java +++ /dev/null @@ -1,82 +0,0 @@ -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 content. - * @param content - */ - void setContent(RemoteRepositoryContent content); -} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableRepository.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableRepository.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableRepository.java deleted file mode 100644 index b275492..0000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/EditableRepository.java +++ /dev/null @@ -1,124 +0,0 @@ -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; - - /** - * Sets the base uri for relative location uris. - * - * @param baseUri - */ - void setBaseUri(URI baseUri); - - /** - * 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); - - /** - * Sets the scheduling definition, that defines the times, when the regular repository - * jobs are started. The <code>cronExpression</code> must be a valid - * quartz cron definition. - * - * @See http://www.quartz-scheduler.org/api/2.2.1/org/quartz/CronExpression.html - * - * @param cronExpression the cron expression. - * @throws IllegalArgumentException if the cron expression is not valid. - */ - void setSchedulingDefinition(String cronExpression) throws IllegalArgumentException; - - /** - * Sets the layout string. - * @param layout - */ - void setLayout(String layout); - - -} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ManagedRepository.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ManagedRepository.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ManagedRepository.java deleted file mode 100644 index b4ab89d..0000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ManagedRepository.java +++ /dev/null @@ -1,49 +0,0 @@ -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.Set; - -/** - * Represents a managed repository, that is readable and writable. - */ -public interface ManagedRepository extends Repository { - - /** - * Returns the interface to access the contents of this repository. - * - * @return The repository content. - */ - ManagedRepositoryContent getContent(); - - /** - * Returns true, if repeated deployments of the same artifact with the same version throws exceptions. - * @return - */ - boolean blocksRedeployments(); - - /** - * Returns the release schemes that are active by this repository. E.g. for maven repositories - * this may either be a release repository, a snapshot repository or a combined repository. - * @return - */ - Set<ReleaseScheme> getActiveReleaseSchemes(); -} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java deleted file mode 100644 index 5baf32f..0000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java +++ /dev/null @@ -1,226 +0,0 @@ -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.model.ArchivaArtifact; -import org.apache.archiva.model.ArtifactReference; -import org.apache.archiva.model.ProjectReference; -import org.apache.archiva.model.VersionedReference; -import org.apache.archiva.repository.layout.LayoutException; - -import java.nio.file.Path; -import java.util.Set; - -/** - * ManagedRepositoryContent interface for interacting with a managed repository in an abstract way, - * without the need for processing based on filesystem paths, or working with the database. - */ -public interface ManagedRepositoryContent extends RepositoryContent -{ - - - - /** - * Delete from the managed repository all files / directories associated with the - * provided version reference. - * - * @param reference the version reference to delete. - * @throws ContentNotFoundException - */ - void deleteVersion( VersionedReference reference ) - throws ContentNotFoundException; - - /** - * delete a specified artifact from the repository - * - * @param artifactReference - * @throws ContentNotFoundException - */ - void deleteArtifact( ArtifactReference artifactReference ) - throws ContentNotFoundException; - - /** - * @param groupId - * @throws ContentNotFoundException - * @since 1.4-M3 - */ - void deleteGroupId( String groupId ) - throws ContentNotFoundException; - - /** - * - * @param namespace groupId for maven - * @param projectId artifactId for maven - * @throws ContentNotFoundException - */ - void deleteProject( String namespace, String projectId ) - throws RepositoryException; - - /** - * <p> - * Convenience method to get the repository id. - * </p> - * <p> - * Equivalent to calling <code>.getRepository().getId()</code> - * </p> - * - * @return the repository id. - */ - String getId(); - - /** - * <p> - * Gather up the list of related artifacts to the ArtifactReference provided. - * This typically inclues the pom files, and those things with - * classifiers (such as doc, source code, test libs, etc...) - * </p> - * <p> - * <strong>NOTE:</strong> Some layouts (such as maven 1 "legacy") are not compatible with this query. - * </p> - * - * @param reference the reference to work off of. - * @return the set of ArtifactReferences for related artifacts. - * @throws ContentNotFoundException if the initial artifact reference does not exist within the repository. - */ - Set<ArtifactReference> getRelatedArtifacts( ArtifactReference reference ) - throws ContentNotFoundException; - - /** - * <p> - * Convenience method to get the repository (on disk) root directory. - * </p> - * <p> - * Equivalent to calling <code>.getRepository().getLocation()</code> - * </p> - * - * @return the repository (on disk) root directory. - */ - String getRepoRoot(); - - /** - * Get the repository configuration associated with this - * repository content. - * - * @return the repository that is associated with this repository content. - */ - ManagedRepository getRepository(); - - /** - * Given a specific {@link ProjectReference}, return the list of available versions for - * that project reference. - * - * @param reference the project reference to work off of. - * @return the list of versions found for that project reference. - * @throws ContentNotFoundException if the project reference does nto exist within the repository. - * @throws LayoutException - */ - Set<String> getVersions( ProjectReference reference ) - throws ContentNotFoundException, LayoutException; - - /** - * <p> - * Given a specific {@link VersionedReference}, return the list of available versions for that - * versioned reference. - * </p> - * <p> - * <strong>NOTE:</strong> This is really only useful when working with SNAPSHOTs. - * </p> - * - * @param reference the versioned reference to work off of. - * @return the set of versions found. - * @throws ContentNotFoundException if the versioned reference does not exist within the repository. - */ - Set<String> getVersions( VersionedReference reference ) - throws ContentNotFoundException; - - /** - * Determines if the artifact referenced exists in the repository. - * - * @param reference the artifact reference to check for. - * @return true if the artifact referenced exists. - */ - boolean hasContent( ArtifactReference reference ); - - /** - * Determines if the project referenced exists in the repository. - * - * @param reference the project reference to check for. - * @return true it the project referenced exists. - */ - boolean hasContent( ProjectReference reference ); - - /** - * Determines if the version reference exists in the repository. - * - * @param reference the version reference to check for. - * @return true if the version referenced exists. - */ - boolean hasContent( VersionedReference reference ); - - /** - * Set the repository configuration to associate with this - * repository content. - * - * @param repo the repository to associate with this repository content. - */ - void setRepository( org.apache.archiva.repository.ManagedRepository repo ); - - /** - * Given an {@link ArtifactReference}, return the file reference to the artifact. - * - * @param reference the artifact reference to use. - * @return the relative path to the artifact. - */ - Path toFile( ArtifactReference reference ); - - /** - * Given an {@link ArchivaArtifact}, return the file reference to the artifact. - * - * @param reference the archiva artifact to use. - * @return the relative path to the artifact. - */ - Path toFile( ArchivaArtifact reference ); - - /** - * Given a {@link ProjectReference}, return the path to the metadata for - * the project. - * - * @param reference the reference to use. - * @return the path to the metadata file, or null if no metadata is appropriate. - */ - String toMetadataPath( ProjectReference reference ); - - /** - * Given a {@link VersionedReference}, return the path to the metadata for - * the specific version of the project. - * - * @param reference the reference to use. - * @return the path to the metadata file, or null if no metadata is appropriate. - */ - String toMetadataPath( VersionedReference reference ); - - /** - * Given an {@link ArchivaArtifact}, return the relative path to the artifact. - * - * @param reference the archiva artifact to use. - * @return the relative path to the artifact. - */ - String toPath( ArchivaArtifact reference ); -} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ReleaseScheme.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ReleaseScheme.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ReleaseScheme.java deleted file mode 100644 index 0868d35..0000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/ReleaseScheme.java +++ /dev/null @@ -1,27 +0,0 @@ -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. - */ - -/** - * Repository release schemes that change the handling of artifacts - */ -public enum ReleaseScheme { - RELEASE,SNAPSHOT -} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RemoteRepository.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RemoteRepository.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RemoteRepository.java deleted file mode 100644 index 5a7c1e8..0000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RemoteRepository.java +++ /dev/null @@ -1,73 +0,0 @@ -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; - -/** - * This represents a repository that is not fully managed by archiva. Its some kind of proxy that - * forwards requests to the remote repository and is able to cache artifacts locally. - */ -public interface RemoteRepository extends Repository { - - /** - * Returns the interface to access the content of the repository. - * @return - */ - RemoteRepositoryContent getContent(); - - /** - * Returns the credentials used to login to the remote repository. - * @return the credentials, null if not set. - */ - RepositoryCredentials getLoginCredentials(); - - /** - * Returns the path relative to the root url of the repository that should be used - * to check the availability of the repository. - * @return The check path, null if not set. - */ - String getCheckPath(); - - - /** - * Returns additional parameters, that are used for accessing the remote repository. - * @return A map of key, value pairs. - */ - Map<String,String> getExtraParameters(); - - - /** - * Returns extra headers that are added to the request to the remote repository. - * @return - */ - Map<String,String> getExtraHeaders(); - - /** - * Returns the time duration, after that the request is aborted and a error is returned, if the remote repository - * does not respond. - * @return The timeout. - */ - Duration getTimeout(); - - -} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RemoteRepositoryContent.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RemoteRepositoryContent.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RemoteRepositoryContent.java deleted file mode 100644 index 7002d7e..0000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RemoteRepositoryContent.java +++ /dev/null @@ -1,83 +0,0 @@ -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.model.ArtifactReference; -import org.apache.archiva.model.RepositoryURL; -import org.apache.archiva.repository.layout.LayoutException; - -/** - * RemoteRepositoryContent interface for interacting with a remote repository in an abstract way, - * without the need for processing based on URLs, or working with the database. - * - * - */ -public interface RemoteRepositoryContent extends RepositoryContent -{ - /** - * <p> - * Convenience method to get the repository id. - * </p> - * - * <p> - * Equivalent to calling <code>.getRepository().getId()</code> - * </p> - * - * @return the repository id. - */ - String getId(); - - /** - * Get the repository configuration associated with this - * repository content. - * - * @return the repository that is associated with this repository content. - */ - RemoteRepository getRepository(); - - /** - * <p> - * Convenience method to get the repository url. - * </p> - * - * <p> - * Equivalent to calling <code>new RepositoryURL( this.getRepository().getUrl() )</code> - * </p> - * - * @return the repository url. - */ - RepositoryURL getURL(); - - /** - * Set the repository configuration to associate with this - * repository content. - * - * @param repo the repository to associate with this repository content. - */ - void setRepository( RemoteRepository repo ); - - /** - * Given an ArtifactReference, return the url to the artifact. - * - * @param reference the artifact reference to use. - * @return the relative path to the artifact. - */ - RepositoryURL toURL( ArtifactReference reference ); -} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/Repository.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/Repository.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/Repository.java deleted file mode 100644 index 68c00d6..0000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/Repository.java +++ /dev/null @@ -1,162 +0,0 @@ -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.List; -import java.util.Locale; -import java.util.Set; - -/** - * - * Base interface for repositories. - * - * Created by Martin Stockhammer on 21.09.17. - */ -public interface Repository { - - /** - * Return the identifier of the repository. Repository identifier should be unique at least - * for the same type. - * @return The identifier. - */ - String getId(); - - /** - * This is the display name of the repository. This string is presented in the user interface. - * - * @return The display name of the repository - */ - String getName(); - - /** - * Returns the name in the given locale. - * @param locale - * @return - */ - String getName(Locale locale); - - /** - * Returns a description of this repository. - * @return The description. - */ - String getDescription(); - - /** - * Returns the description for the given locale. - * @param locale - * @return - */ - String getDescription(Locale locale); - - /** - * This identifies the type of repository. Archiva does only support certain types of repositories. - * - * @return A unique identifier for the repository type. - */ - RepositoryType getType(); - - - /** - * Returns the location of this repository. For local repositories this might be a file URI, for - * remote repositories a http URL or some very repository specific schemes. - * Each repository has only one unique location. - * - * @return The repository location. - */ - URI getLocation(); - - /** - * This returns the absolute location uri of this repository. Some repository locations may be relative to - * the base repository directory or uri. This returns the absolute path of the repository. - * If the location is absolute already this method returns the same URI as getLocation(). - * - * @return the absolute uri of the location. - */ - URI getAbsoluteLocation(); - - /** - * A repository may allow additional locations that can be used, if the primary location is not available. - * @return - */ - Set<URI> getFailoverLocations(); - - /** - * True, if this repository is scanned regularly. - */ - boolean isScanned(); - - /** - * Returns the definition, when the repository jobs are executed. - * This must return a valid a cron string. - * - * @See http://www.quartz-scheduler.org/api/2.2.1/org/quartz/CronExpression.html - * - * @return - */ - String getSchedulingDefinition(); - - /** - * Returns true, if this repository has a index available - * @return - */ - boolean hasIndex(); - - /** - * Returns a layout definition. The returned string may be implementation specific and is not - * standardized. - * - * @return - */ - String getLayout(); - - - /** - * Returns the capabilities of the repository implementation. - * @return - */ - RepositoryCapabilities getCapabilities(); - - - /** - * Extension method that allows to provide different features that are not supported by all - * repository types. - * - * @param clazz The feature class that is requested - * @param <T> This is the class of the feature - * @return The feature implementation for this repository instance, if it is supported - * @throws UnsupportedFeatureException if the feature is not supported by this repository type - */ - <T extends RepositoryFeature<T>> RepositoryFeature<T> getFeature(Class<T> clazz) throws UnsupportedFeatureException; - - - /** - * Returns true, if the requested feature is supported by this repository. - * - * @param clazz The requested feature class - * @param <T> The requested feature class - * @return True, if the feature is supported, otherwise false. - */ - <T extends RepositoryFeature<T>> boolean supportsFeature(Class<T> clazz); - - -} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryCapabilities.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryCapabilities.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryCapabilities.java deleted file mode 100644 index 525d521..0000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryCapabilities.java +++ /dev/null @@ -1,99 +0,0 @@ -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.Set; - -/** - * Describe the capabilities a repository implementation supports. - */ -public interface RepositoryCapabilities { - - /** - * Returns true, if this repository has a mechanism for indexes - * @return true, if this repository is indexable, otherwise false. - */ - default boolean isIndexable() { - return true; - } - - /** - * Returns true, if this repository type is storing its artifacts on the filesystem. - * @return true, if this is a file based repository, otherwise false. - */ - default boolean isFileBased() { - return true; - } - - /** - * Returns true, if this repository allows to block redeployments to prevent overriding - * released artifacts - * @return true, if this repo can block redeployments, otherwise false. - */ - default boolean canBlockRedeployments() { - return true; - } - - /** - * Returns true, if the artifacts can be scanned for metadata retrieval or maintenance tasks - * @return true, if this repository can be scanned regularily, otherwise false. - */ - default boolean isScannable() { - return true; - } - - /** - * Returns true, if this repository can use failover repository urls - * @return true, if there is a failover mechanism for repository access, otherwise false. - */ - default boolean allowsFailover() { - return false; - } - - /** - * Returns the release schemes this repository type can handle - */ - Set<ReleaseScheme> supportedReleaseSchemes(); - - /** - * Returns the layouts this repository type can provide - * @return The list of layouts supported by this repository. - */ - Set<String> supportedLayouts(); - - /** - * Returns additional capabilities, that this repository type implements. - * @return A list of custom capabilities. - */ - Set<String> customCapabilities(); - - /** - * Returns the supported features this repository type supports. This method returns - * string that corresponds to fully qualified class names. - * We use string representation to allow implementations provide their own feature - * implementations if necessary and to avoid class errors. - * - * @return The list of supported features as string values. - */ - Set<String> supportedFeatures(); - - -} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContent.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContent.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContent.java deleted file mode 100644 index 2ceedec..0000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContent.java +++ /dev/null @@ -1,52 +0,0 @@ -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.model.ArtifactReference; -import org.apache.archiva.model.VersionedReference; -import org.apache.archiva.repository.layout.LayoutException; - - -/** - * Common aspects of content provider interfaces - */ -public interface RepositoryContent -{ - - - /** - * Given a repository relative path to a filename, return the {@link VersionedReference} object suitable for the path. - * - * @param path the path relative to the repository base dir for the artifact. - * @return the {@link ArtifactReference} representing the path. (or null if path cannot be converted to - * a {@link ArtifactReference}) - * @throws LayoutException if there was a problem converting the path to an artifact. - */ - ArtifactReference toArtifactReference( String path ) - throws LayoutException; - - /** - * Given an {@link ArtifactReference}, return the relative path to the artifact. - * - * @param reference the artifact reference to use. - * @return the relative path to the artifact. - */ - String toPath( ArtifactReference reference ); -} http://git-wip-us.apache.org/repos/asf/archiva/blob/e2cdbc2b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContentFactory.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContentFactory.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContentFactory.java deleted file mode 100644 index 65d54e6..0000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryContentFactory.java +++ /dev/null @@ -1,216 +0,0 @@ -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.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.ConfigurationNames; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.configuration.RemoteRepositoryConfiguration; -import org.apache.archiva.redback.components.registry.Registry; -import org.apache.archiva.redback.components.registry.RegistryListener; -import org.springframework.context.ApplicationContext; -import org.springframework.stereotype.Service; - -import javax.annotation.PostConstruct; -import javax.inject.Inject; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * RepositoryContentRequest - */ -@Service( "repositoryContentFactory#default" ) -public class RepositoryContentFactory - implements RegistryListener -{ - /** - * - */ - @Inject - private ArchivaConfiguration archivaConfiguration; - - @Inject - private ApplicationContext applicationContext; - - @Inject - private List<RepositoryContentProvider> repositoryContentProviders; - - private final Map<String, ManagedRepositoryContent> managedContentMap; - - private final Map<String, RemoteRepositoryContent> remoteContentMap; - - - public RepositoryContentFactory( ) - { - managedContentMap = new ConcurrentHashMap<String, ManagedRepositoryContent>( ); - remoteContentMap = new ConcurrentHashMap<String, RemoteRepositoryContent>( ); - } - - /** - * Get the ManagedRepositoryContent object for the repository Id specified. - * - * @param repoId the repository id to fetch. - * @return the ManagedRepositoryContent object associated with the repository id. - * @throws RepositoryNotFoundException if the repository id does not exist within the configuration. - * @throws RepositoryException the repository content object cannot be loaded due to configuration issue. - */ - public ManagedRepositoryContent getManagedRepositoryContent( String repoId ) - throws RepositoryException - { - ManagedRepositoryContent repo = managedContentMap.get( repoId ); - - if ( repo != null ) - { - return repo; - } - else - { - throw new RepositoryNotFoundException( - "Unable to find managed repository configuration for id " + repoId ); - } - - } - - private RepositoryContentProvider getProvider(final String layout, final RepositoryType repoType) throws RepositoryException - { - return repositoryContentProviders.stream().filter(p->p.supports( repoType ) && p.supportsLayout( layout )). - findFirst().orElseThrow( ( ) -> new RepositoryException( "Could not find content provider for repository type "+repoType+" and layout "+layout ) ); - } - - public ManagedRepositoryContent getManagedRepositoryContent( org.apache.archiva.repository.ManagedRepository mRepo ) - throws RepositoryException - { - final String id = mRepo.getId(); - ManagedRepositoryContent content = managedContentMap.get( id ); - - if ( content != null && content.getRepository()==mRepo) - { - return content; - } - - RepositoryContentProvider contentProvider = getProvider( mRepo.getLayout( ), mRepo.getType( ) ); - content = contentProvider.createManagedContent( mRepo ); - if (content==null) { - throw new RepositoryException( "Could not create repository content instance for "+mRepo.getId() ); - } - ManagedRepositoryContent previousContent = managedContentMap.put( id, content ); - if (previousContent!=null) { - previousContent.setRepository( null ); - } - - return content; - } - - public RemoteRepositoryContent getRemoteRepositoryContent( String repoId ) - throws RepositoryException - { - RemoteRepositoryContent repo = remoteContentMap.get( repoId ); - - if ( repo != null ) - { - return repo; - } - else - { - throw new RepositoryNotFoundException( - "Unable to find remote repository configuration for id:" + repoId ); - } - - } - - public RemoteRepositoryContent getRemoteRepositoryContent( RemoteRepository mRepo ) - throws RepositoryException - { - final String id = mRepo.getId(); - RemoteRepositoryContent content = remoteContentMap.get( id ); - - if ( content != null && content.getRepository()==mRepo) - { - return content; - } - - RepositoryContentProvider contentProvider = getProvider( mRepo.getLayout( ), mRepo.getType( ) ); - content = contentProvider.createRemoteContent( mRepo ); - if (content==null) { - throw new RepositoryException( "Could not create repository content instance for "+mRepo.getId() ); - } - RemoteRepositoryContent previousContent = remoteContentMap.put( id, content ); - if (previousContent!=null) { - previousContent.setRepository( null ); - } - return content; - } - - - @Override - public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue ) - { - if ( ConfigurationNames.isManagedRepositories( propertyName ) || ConfigurationNames.isRemoteRepositories( - propertyName ) ) - { - initMaps( ); - } - } - - @Override - public void beforeConfigurationChange( Registry registry, String propertyName, Object propertyValue ) - { - /* do nothing */ - } - - @PostConstruct - public void initialize( ) - { - archivaConfiguration.addChangeListener( this ); - } - - private void initMaps( ) - { - // olamy we use concurent so no need of synchronize - //synchronized ( managedContentMap ) - //{ - managedContentMap.clear( ); - //} - - //synchronized ( remoteContentMap ) - //{ - remoteContentMap.clear( ); - //} - } - - public ArchivaConfiguration getArchivaConfiguration( ) - { - return archivaConfiguration; - } - - public void setArchivaConfiguration( ArchivaConfiguration archivaConfiguration ) - { - this.archivaConfiguration = archivaConfiguration; - } - - public void setRepositoryContentProviders(List<RepositoryContentProvider> providers) { - this.repositoryContentProviders = providers; - } - - public List<RepositoryContentProvider> getRepositoryContentProviders() { - return repositoryContentProviders; - } -}
