You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ma...@apache.org on 2018/03/24 16:46:28 UTC
[2/4] archiva git commit: Switching repository admin and dependent
classes to RepositoryRegistry
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicManagedRepository.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicManagedRepository.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicManagedRepository.java
index 6c1a285..8df9883 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicManagedRepository.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicManagedRepository.java
@@ -19,10 +19,14 @@ package org.apache.archiva.repository;
* under the License.
*/
+import org.apache.archiva.indexer.ArchivaIndexingContext;
import org.apache.archiva.repository.features.ArtifactCleanupFeature;
import org.apache.archiva.repository.features.IndexCreationFeature;
import org.apache.archiva.repository.features.StagingRepositoryFeature;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.io.IOException;
import java.nio.file.Path;
import java.util.Locale;
@@ -35,8 +39,8 @@ import java.util.Locale;
public class BasicManagedRepository extends AbstractManagedRepository
{
+ Logger log = LoggerFactory.getLogger(BasicManagedRepository.class);
ArtifactCleanupFeature artifactCleanupFeature = new ArtifactCleanupFeature( );
- IndexCreationFeature indexCreationFeature = new IndexCreationFeature( );
StagingRepositoryFeature stagingRepositoryFeature = new StagingRepositoryFeature( );
@@ -60,6 +64,7 @@ public class BasicManagedRepository extends AbstractManagedRepository
}
private void initFeatures() {
+ IndexCreationFeature indexCreationFeature = new IndexCreationFeature(this.getId(), this);
addFeature( artifactCleanupFeature );
addFeature( indexCreationFeature );
addFeature( stagingRepositoryFeature );
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicRemoteRepository.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicRemoteRepository.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicRemoteRepository.java
index 64b705c..70c38a5 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicRemoteRepository.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicRemoteRepository.java
@@ -19,8 +19,13 @@ package org.apache.archiva.repository;
* under the License.
*/
+import org.apache.archiva.indexer.ArchivaIndexingContext;
+import org.apache.archiva.repository.features.IndexCreationFeature;
import org.apache.archiva.repository.features.RemoteIndexFeature;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.io.IOException;
import java.nio.file.Path;
import java.util.Locale;
@@ -33,13 +38,17 @@ import java.util.Locale;
public class BasicRemoteRepository extends AbstractRemoteRepository
{
+ Logger log = LoggerFactory.getLogger(BasicRemoteRepository.class);
+
RemoteIndexFeature remoteIndexFeature = new RemoteIndexFeature();
+ IndexCreationFeature indexCreationFeature = new IndexCreationFeature(true);
static final StandardCapabilities CAPABILITIES = new StandardCapabilities( new ReleaseScheme[] {
ReleaseScheme.RELEASE, ReleaseScheme.SNAPSHOT
}, new String[] {"default"}, new String[0], new String[] {
- RemoteIndexFeature.class.toString()
+ RemoteIndexFeature.class.toString(),
+ IndexCreationFeature.class.toString()
}, true, true, true, true, true );
public BasicRemoteRepository( String id, String name, Path basePath )
@@ -56,6 +65,7 @@ public class BasicRemoteRepository extends AbstractRemoteRepository
private void initFeatures() {
addFeature( remoteIndexFeature );
+ addFeature( indexCreationFeature );
}
@Override
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryRegistry.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryRegistry.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryRegistry.java
index 557ee9e..17a08f7 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryRegistry.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryRegistry.java
@@ -26,24 +26,22 @@ import org.apache.archiva.configuration.ConfigurationListener;
import org.apache.archiva.configuration.IndeterminateConfigurationException;
import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.archiva.configuration.RemoteRepositoryConfiguration;
-import org.apache.archiva.indexer.ArchivaIndexingContext;
-import org.apache.archiva.indexer.IndexManagerFactory;
+import org.apache.archiva.indexer.*;
import org.apache.archiva.redback.components.registry.RegistryException;
import org.apache.archiva.repository.features.ArtifactCleanupFeature;
+import org.apache.archiva.repository.features.IndexCreationEvent;
+import org.apache.archiva.repository.features.IndexCreationFeature;
import org.apache.archiva.repository.features.StagingRepositoryFeature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.inject.Named;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.io.IOException;
+import java.util.*;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -58,7 +56,7 @@ import java.util.stream.Stream;
* TODO: Audit events should be sent, but we don't want dependency to the repsitory-metadata-api
*/
@Service( "repositoryRegistry" )
-public class RepositoryRegistry implements ConfigurationListener {
+public class RepositoryRegistry implements ConfigurationListener, RepositoryEventHandler, RepositoryEventListener {
private static final Logger log = LoggerFactory.getLogger( RepositoryRegistry.class );
@@ -78,6 +76,7 @@ public class RepositoryRegistry implements ConfigurationListener {
@Named("repositoryContentFactory#default")
RepositoryContentFactory repositoryContentFactory;
+ private List<RepositoryEventListener> listeners = new ArrayList<>();
private Map<String, ManagedRepository> managedRepositories = new HashMap<>( );
@@ -98,8 +97,15 @@ public class RepositoryRegistry implements ConfigurationListener {
rwLock.writeLock( ).lock( );
try
{
+ log.debug("Initializing repository registry");
+ for(ManagedRepository rep : managedRepositories.values()) {
+ rep.close();
+ }
managedRepositories.clear( );
managedRepositories.putAll( getManagedRepositoriesFromConfig( ) );
+ for (RemoteRepository repo : remoteRepositories.values()) {
+ repo.close();
+ }
remoteRepositories.clear( );
remoteRepositories.putAll( getRemoteRepositoriesFromConfig( ) );
// archivaConfiguration.addChangeListener(this);
@@ -111,6 +117,18 @@ public class RepositoryRegistry implements ConfigurationListener {
}
}
+ @PreDestroy
+ public void destroy() {
+ for(ManagedRepository rep : managedRepositories.values()) {
+ rep.close();
+ }
+ for (RemoteRepository repo : remoteRepositories.values()) {
+ repo.close();
+ }
+ }
+
+
+
private Map<RepositoryType, RepositoryProvider> createProviderMap( )
{
Map<RepositoryType, RepositoryProvider> map = new HashMap<>( );
@@ -173,7 +191,9 @@ public class RepositoryRegistry implements ConfigurationListener {
private ManagedRepository createNewManagedRepository( RepositoryProvider provider, ManagedRepositoryConfiguration cfg ) throws RepositoryException
{
+ log.debug("Creating repo {}", cfg.getId());
ManagedRepository repo = provider.createManagedInstance( cfg );
+ repo.addListener(this);
updateRepositoryReferences( provider, repo, cfg , null);
return repo;
@@ -181,6 +201,7 @@ public class RepositoryRegistry implements ConfigurationListener {
private void updateRepositoryReferences(RepositoryProvider provider, ManagedRepository repo, ManagedRepositoryConfiguration cfg, Configuration configuration) throws RepositoryException
{
+ log.debug("Updating references of repo {}",repo.getId());
if ( repo.supportsFeature( StagingRepositoryFeature.class ) )
{
StagingRepositoryFeature feature = repo.getFeature( StagingRepositoryFeature.class ).get( );
@@ -194,9 +215,33 @@ public class RepositoryRegistry implements ConfigurationListener {
}
}
}
- if ( repo instanceof EditableManagedRepository && repo.getContent() == null)
+ if ( repo instanceof EditableManagedRepository)
{
- ( (EditableManagedRepository) repo ).setContent( repositoryContentFactory.getManagedRepositoryContent( repo ) );
+ EditableManagedRepository editableRepo = (EditableManagedRepository) repo;
+ if (repo.getContent()==null) {
+ editableRepo.setContent(repositoryContentFactory.getManagedRepositoryContent(repo));
+ }
+ log.debug("Index repo: "+repo.hasIndex());
+ if (repo.hasIndex() && repo.getIndexingContext()==null) {
+ log.debug("Creating indexing context for {}", repo.getId());
+ createIndexingContext(editableRepo);
+ }
+ }
+
+ }
+
+ private ArchivaIndexManager getIndexManager(RepositoryType type) {
+ return indexManagerFactory.getIndexManager(type);
+ }
+
+ private void createIndexingContext(EditableRepository editableRepo) throws RepositoryException {
+ if (editableRepo.supportsFeature(IndexCreationFeature.class)) {
+ ArchivaIndexManager idxManager = getIndexManager(editableRepo.getType());
+ try {
+ editableRepo.setIndexingContext(idxManager.createContext(editableRepo));
+ } catch (IndexCreationFailedException e) {
+ throw new RepositoryException("Could not create index for repository "+editableRepo.getId()+": "+e.getMessage(),e);
+ }
}
}
@@ -263,7 +308,9 @@ public class RepositoryRegistry implements ConfigurationListener {
private RemoteRepository createNewRemoteRepository( RepositoryProvider provider, RemoteRepositoryConfiguration cfg ) throws RepositoryException
{
+ log.debug("Creating remote repo {}", cfg.getId());
RemoteRepository repo = provider.createRemoteInstance( cfg );
+ repo.addListener(this);
updateRepositoryReferences( provider, repo, cfg , null);
return repo;
@@ -273,7 +320,13 @@ public class RepositoryRegistry implements ConfigurationListener {
{
if ( repo instanceof EditableRemoteRepository && repo.getContent() == null)
{
- ( (EditableRemoteRepository) repo ).setContent( repositoryContentFactory.getRemoteRepositoryContent( repo ) );
+ EditableRemoteRepository editableRepo = (EditableRemoteRepository) repo;
+ if (repo.getContent()==null) {
+ editableRepo.setContent( repositoryContentFactory.getRemoteRepositoryContent( repo ) );
+ }
+ if (repo.supportsFeature(IndexCreationFeature.class) && repo.getIndexingContext()==null ) {
+ createIndexingContext(editableRepo);
+ }
}
}
@@ -346,12 +399,15 @@ public class RepositoryRegistry implements ConfigurationListener {
rwLock.readLock( ).lock( );
try
{
+ log.debug("getRepository {}", repoId);
if ( managedRepositories.containsKey( repoId ) )
{
+ log.debug("Managed repo");
return managedRepositories.get( repoId );
}
else
{
+ log.debug("Remote repo");
return remoteRepositories.get( repoId );
}
}
@@ -422,6 +478,9 @@ public class RepositoryRegistry implements ConfigurationListener {
ManagedRepository originRepo = managedRepositories.put( id, managedRepository );
try
{
+ if (originRepo!=null) {
+ originRepo.close();
+ }
RepositoryProvider provider = getProvider( managedRepository.getType() );
ManagedRepositoryConfiguration newCfg = provider.getManagedConfiguration( managedRepository );
Configuration configuration = getArchivaConfiguration( ).getConfiguration( );
@@ -521,6 +580,7 @@ public class RepositoryRegistry implements ConfigurationListener {
} else
{
repo = getProvider( repoType ).createManagedInstance( managedRepositoryConfiguration );
+ repo.addListener(this);
managedRepositories.put(id, repo);
}
updateRepositoryReferences( getProvider( repoType ), repo, managedRepositoryConfiguration, configuration );
@@ -563,6 +623,9 @@ public class RepositoryRegistry implements ConfigurationListener {
RemoteRepositoryConfiguration newCfg=null;
try
{
+ if (originRepo!=null) {
+ originRepo.close();
+ }
final RepositoryProvider provider = getProvider( remoteRepository.getType() );
newCfg = provider.getRemoteConfiguration( remoteRepository );
updateRepositoryReferences( provider, remoteRepository, newCfg, configuration );
@@ -698,6 +761,7 @@ public class RepositoryRegistry implements ConfigurationListener {
} else
{
repo = getProvider( repoType ).createRemoteInstance( remoteRepositoryConfiguration );
+ repo.addListener(this);
remoteRepositories.put(id, repo);
}
updateRepositoryReferences( getProvider( repoType ), repo, remoteRepositoryConfiguration, configuration );
@@ -712,6 +776,12 @@ public class RepositoryRegistry implements ConfigurationListener {
}
+ public void removeRepository(String repoId) throws RepositoryException {
+ Repository repo = getRepository(repoId);
+ if (repo!=null) {
+ removeRepository(repo);
+ }
+ }
public void removeRepository(Repository repo) throws RepositoryException
{
if (repo instanceof RemoteRepository ) {
@@ -739,6 +809,7 @@ public class RepositoryRegistry implements ConfigurationListener {
try {
repo = managedRepositories.remove( id );
if (repo!=null) {
+ repo.close();
Configuration configuration = getArchivaConfiguration().getConfiguration();
ManagedRepositoryConfiguration cfg = configuration.findManagedRepositoryById( id );
if (cfg!=null) {
@@ -754,8 +825,7 @@ public class RepositoryRegistry implements ConfigurationListener {
log.error("Could not save config after repository removal: {}", e.getMessage(), e);
managedRepositories.put(repo.getId(), repo);
throw new RepositoryException( "Could not save configuration after repository removal: "+e.getMessage() );
- }
- finally
+ } finally
{
rwLock.writeLock().unlock();
}
@@ -771,13 +841,13 @@ public class RepositoryRegistry implements ConfigurationListener {
try {
repo = managedRepositories.remove( id );
if (repo!=null) {
+ repo.close();
ManagedRepositoryConfiguration cfg = configuration.findManagedRepositoryById( id );
if (cfg!=null) {
configuration.removeManagedRepository( cfg );
}
}
- }
- finally
+ } finally
{
rwLock.writeLock().unlock();
}
@@ -800,7 +870,9 @@ public class RepositoryRegistry implements ConfigurationListener {
rwLock.writeLock().lock();
try {
repo = remoteRepositories.remove( id );
+
if (repo!=null) {
+ repo.close();
Configuration configuration = getArchivaConfiguration().getConfiguration();
RemoteRepositoryConfiguration cfg = configuration.findRemoteRepositoryById( id );
if (cfg!=null) {
@@ -816,8 +888,7 @@ public class RepositoryRegistry implements ConfigurationListener {
log.error("Could not save config after repository removal: {}", e.getMessage(), e);
remoteRepositories.put(repo.getId(), repo);
throw new RepositoryException( "Could not save configuration after repository removal: "+e.getMessage() );
- }
- finally
+ } finally
{
rwLock.writeLock().unlock();
}
@@ -833,13 +904,13 @@ public class RepositoryRegistry implements ConfigurationListener {
try {
repo = remoteRepositories.remove( id );
if (repo!=null) {
+ repo.close();
RemoteRepositoryConfiguration cfg = configuration.findRemoteRepositoryById( id );
if (cfg!=null) {
configuration.removeRemoteRepository( cfg );
}
}
- }
- finally
+ } finally
{
rwLock.writeLock().unlock();
}
@@ -854,6 +925,20 @@ public class RepositoryRegistry implements ConfigurationListener {
initialize();
}
+ /**
+ * Resets the indexing context of a given repository.
+ *
+ * @param repo
+ * @throws IndexUpdateFailedException
+ */
+ public void resetIndexingContext(Repository repo) throws IndexUpdateFailedException {
+ if (repo.hasIndex() && repo instanceof EditableRepository) {
+ EditableRepository eRepo = (EditableRepository) repo;
+ ArchivaIndexingContext newCtx = getIndexManager(repo.getType()).reset(repo.getIndexingContext());
+ eRepo.setIndexingContext(newCtx);
+ }
+ }
+
/**
* Creates a new repository instance with the same settings as this one. The cloned repository is not
@@ -871,6 +956,7 @@ public class RepositoryRegistry implements ConfigurationListener {
ManagedRepositoryConfiguration cfg = provider.getManagedConfiguration(repo);
cfg.setId(newId);
ManagedRepository cloned = provider.createManagedInstance(cfg);
+ cloned.addListener(this);
return cloned;
}
@@ -900,6 +986,7 @@ public class RepositoryRegistry implements ConfigurationListener {
RemoteRepositoryConfiguration cfg = provider.getRemoteConfiguration(repo);
cfg.setId(newId);
RemoteRepository cloned = provider.createRemoteInstance(cfg);
+ cloned.addListener(this);
return cloned;
}
@@ -910,5 +997,41 @@ public class RepositoryRegistry implements ConfigurationListener {
}
+ @Override
+ public void addListener(RepositoryEventListener listener) {
+ if (!this.listeners.contains(listener)) {
+ this.listeners.add(listener);
+ }
+ }
+
+ @Override
+ public void removeListener(RepositoryEventListener listener) {
+ this.listeners.remove(listener);
+ }
+
+ @Override
+ public void clearListeners() {
+ this.listeners.clear();
+ }
+ @Override
+ public <T> void raise(RepositoryEvent<T> event) {
+ if (event.getType().equals(IndexCreationEvent.Index.URI_CHANGE)) {
+ if (managedRepositories.containsKey(event.getRepositoryId()) ||
+ remoteRepositories.containsKey(event.getRepositoryId())) {
+ EditableRepository repo = (EditableRepository) getRepository(event.getRepositoryId());
+ if (repo != null && repo.getIndexingContext()!=null) {
+ try {
+ ArchivaIndexingContext newCtx = getIndexManager(repo.getType()).move(repo.getIndexingContext(), repo);
+ repo.setIndexingContext(newCtx);
+ } catch (IndexCreationFailedException e) {
+ log.error("Could not move index to new directory {}", e.getMessage(), e);
+ }
+ }
+ }
+ }
+ for(RepositoryEventListener listener : listeners) {
+ listener.raise(event);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/AbstractFeature.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/AbstractFeature.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/AbstractFeature.java
new file mode 100644
index 0000000..2f5831f
--- /dev/null
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/AbstractFeature.java
@@ -0,0 +1,66 @@
+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.
+ */
+
+import org.apache.archiva.repository.RepositoryEvent;
+import org.apache.archiva.repository.RepositoryEventListener;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+public class AbstractFeature {
+ private List<RepositoryEventListener> listener = new ArrayList<>();
+
+ AbstractFeature() {
+
+ }
+
+ AbstractFeature(RepositoryEventListener listener) {
+ this.listener.add(listener);
+ }
+
+ AbstractFeature(Collection<RepositoryEventListener> listeners) {
+ this.listener.addAll(listeners);
+ }
+
+ public void addListener(RepositoryEventListener listener) {
+ if (!this.listener.contains(listener)) {
+ this.listener.add(listener);
+ }
+ this.listener.add(listener);
+ }
+
+ public void removeListener(RepositoryEventListener listener) {
+ this.listener.remove(listener);
+ }
+
+ public void clearListeners() {
+ this.listener.clear();
+ }
+
+ protected void raiseEvent(RepositoryEvent event) {
+ for(RepositoryEventListener listr : listener) {
+ listr.raise(event);
+ }
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/IndexCreationEvent.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/IndexCreationEvent.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/IndexCreationEvent.java
new file mode 100644
index 0000000..f871dc9
--- /dev/null
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/IndexCreationEvent.java
@@ -0,0 +1,35 @@
+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.
+ */
+
+import org.apache.archiva.repository.RepositoryEvent;
+
+import java.net.URI;
+
+public class IndexCreationEvent extends RepositoryEvent<URI> {
+
+ public enum Index implements EventType {
+ URI_CHANGE
+ }
+
+ IndexCreationEvent(String repo, URI oldValue, URI value) {
+ super(Index.URI_CHANGE, repo, oldValue, value);
+ }
+}
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/IndexCreationFeature.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/IndexCreationFeature.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/IndexCreationFeature.java
index 9c6b70c..eaf532f 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/IndexCreationFeature.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/IndexCreationFeature.java
@@ -20,26 +20,36 @@ package org.apache.archiva.repository.features;
*/
+import org.apache.archiva.repository.Repository;
+import org.apache.archiva.repository.RepositoryEventListener;
import org.apache.commons.lang.StringUtils;
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.EventListener;
+import java.util.List;
/**
*
* This feature provides some information about index creation.
*
*/
-public class IndexCreationFeature implements RepositoryFeature<IndexCreationFeature> {
+public class IndexCreationFeature extends AbstractFeature implements RepositoryFeature<IndexCreationFeature>{
+
private boolean skipPackedIndexCreation = false;
private URI indexPath;
- public IndexCreationFeature() {
+ private String repo;
+
+ public IndexCreationFeature(String repoId, RepositoryEventListener listener) {
+ super(listener);
+ this.repo = repoId;
try
{
- this.indexPath = new URI(".indexer");
+ setIndexPath(new URI(".indexer"));
}
catch ( URISyntaxException e )
{
@@ -89,7 +99,10 @@ public class IndexCreationFeature implements RepositoryFeature<IndexCreationFeat
*/
public void setIndexPath( URI indexPath )
{
+ URI oldVal = this.indexPath;
this.indexPath = indexPath;
+ raiseEvent(new IndexCreationEvent(repo, oldVal, this.indexPath));
+
}
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ArchivaIndexManagerMock.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ArchivaIndexManagerMock.java b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ArchivaIndexManagerMock.java
new file mode 100644
index 0000000..e81bcff
--- /dev/null
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ArchivaIndexManagerMock.java
@@ -0,0 +1,85 @@
+package org.apache.archiva.repository.mock;
+
+/*
+ * 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.indexer.ArchivaIndexManager;
+import org.apache.archiva.indexer.ArchivaIndexingContext;
+import org.apache.archiva.indexer.IndexCreationFailedException;
+import org.apache.archiva.indexer.IndexUpdateFailedException;
+import org.apache.archiva.repository.Repository;
+import org.apache.archiva.repository.RepositoryType;
+import org.springframework.stereotype.Service;
+
+import java.net.URI;
+import java.util.Collection;
+
+/**
+ * @author Martin Stockhammer <ma...@apache.org>
+ */
+@Service("archivaIndexManager#maven")
+public class ArchivaIndexManagerMock implements ArchivaIndexManager {
+
+
+
+ @Override
+ public void pack(ArchivaIndexingContext context) throws IndexUpdateFailedException {
+
+ }
+
+ @Override
+ public void scan(ArchivaIndexingContext context) throws IndexUpdateFailedException {
+
+ }
+
+ @Override
+ public void update(ArchivaIndexingContext context, boolean fullUpdate) throws IndexUpdateFailedException {
+
+ }
+
+ @Override
+ public void addArtifactsToIndex(ArchivaIndexingContext context, Collection<URI> artifactReference) throws IndexUpdateFailedException {
+
+ }
+
+ @Override
+ public void removeArtifactsFromIndex(ArchivaIndexingContext context, Collection<URI> artifactReference) throws IndexUpdateFailedException {
+
+ }
+
+ @Override
+ public boolean supportsRepository(RepositoryType type) {
+ return true;
+ }
+
+ @Override
+ public ArchivaIndexingContext createContext(Repository repository) throws IndexCreationFailedException {
+ return null;
+ }
+
+ @Override
+ public ArchivaIndexingContext reset(ArchivaIndexingContext context) throws IndexUpdateFailedException {
+ return null;
+ }
+
+ @Override
+ public ArchivaIndexingContext move(ArchivaIndexingContext context, Repository repo) throws IndexCreationFailedException {
+ return null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java
index d4a78a6..82e1047 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java
@@ -21,18 +21,7 @@ package org.apache.archiva.repository.mock;
import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.archiva.configuration.RemoteRepositoryConfiguration;
-import org.apache.archiva.repository.BasicManagedRepository;
-import org.apache.archiva.repository.BasicRemoteRepository;
-import org.apache.archiva.repository.EditableManagedRepository;
-import org.apache.archiva.repository.EditableRemoteRepository;
-import org.apache.archiva.repository.ManagedRepository;
-import org.apache.archiva.repository.PasswordCredentials;
-import org.apache.archiva.repository.ReleaseScheme;
-import org.apache.archiva.repository.RemoteRepository;
-import org.apache.archiva.repository.RepositoryCredentials;
-import org.apache.archiva.repository.RepositoryException;
-import org.apache.archiva.repository.RepositoryProvider;
-import org.apache.archiva.repository.RepositoryType;
+import org.apache.archiva.repository.*;
import org.apache.archiva.repository.features.ArtifactCleanupFeature;
import org.apache.archiva.repository.features.IndexCreationFeature;
import org.apache.archiva.repository.features.RemoteIndexFeature;
@@ -230,4 +219,8 @@ public class RepositoryProviderMock implements RepositoryProvider
return configuration;
}
+ @Override
+ public <T> void raise(RepositoryEvent<T> event) {
+
+ }
}
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/pom.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/pom.xml b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/pom.xml
index 2f2c624..66e6e5e 100644
--- a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/pom.xml
+++ b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/pom.xml
@@ -184,6 +184,12 @@
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.archiva</groupId>
+ <artifactId>archiva-maven2-indexer</artifactId>
+ <scope>test</scope>
+ </dependency>
+
</dependencies>
<build>
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
index 1bab921..4893bcd 100644
--- a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
+++ b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
@@ -22,6 +22,8 @@ package org.apache.archiva.scheduler.indexing;
import org.apache.archiva.admin.model.RepositoryAdminException;
import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin;
+import org.apache.archiva.indexer.ArchivaIndexingContext;
+import org.apache.archiva.indexer.UnsupportedBaseContextException;
import org.apache.archiva.redback.components.taskqueue.Task;
import org.apache.archiva.redback.components.taskqueue.execution.TaskExecutionException;
import org.apache.archiva.redback.components.taskqueue.execution.TaskExecutor;
@@ -86,7 +88,16 @@ public class ArchivaIndexingTaskExecutor
ArtifactIndexingTask indexingTask = (ArtifactIndexingTask) task;
ManagedRepository repository = indexingTask.getRepository( );
- IndexingContext context = indexingTask.getContext( );
+ ArchivaIndexingContext archivaContext = indexingTask.getContext( );
+ IndexingContext context = null;
+ try {
+ context = archivaContext.getBaseContext(IndexingContext.class);
+ } catch (UnsupportedBaseContextException e) {
+ throw new TaskExecutionException("Bad repository type.", e);
+ }
+ if (!nexusIndexer.getIndexingContexts().containsKey(context.getId())) {
+ nexusIndexer.addIndexingContext(context);
+ }
if ( ArtifactIndexingTask.Action.FINISH.equals( indexingTask.getAction( ) )
&& indexingTask.isExecuteOnEntireRepo( ) )
@@ -117,9 +128,10 @@ public class ArchivaIndexingTaskExecutor
( indexingTask.getResourceFile( ) == null
? "none"
: indexingTask.getResourceFile( ) ) );
- context = managedRepositoryAdmin.createIndexContext( repository );
+ archivaContext = repository.getIndexingContext();
+ context = archivaContext.getBaseContext(IndexingContext.class);
}
- catch ( RepositoryAdminException e )
+ catch ( UnsupportedBaseContextException e )
{
log.error( "Error occurred while creating context: {}", e.getMessage( ) );
throw new TaskExecutionException( "Error occurred while creating context: " + e.getMessage( ), e );
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArtifactIndexingTask.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArtifactIndexingTask.java b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArtifactIndexingTask.java
index d2ca16e..dcf7428 100644
--- a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArtifactIndexingTask.java
+++ b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArtifactIndexingTask.java
@@ -19,9 +19,9 @@ package org.apache.archiva.scheduler.indexing;
* under the License.
*/
+import org.apache.archiva.indexer.ArchivaIndexingContext;
import org.apache.archiva.redback.components.taskqueue.Task;
import org.apache.archiva.repository.ManagedRepository;
-import org.apache.maven.index.context.IndexingContext;
import java.nio.file.Path;
@@ -42,7 +42,7 @@ public class ArtifactIndexingTask
private final Action action;
- private final IndexingContext context;
+ private final ArchivaIndexingContext context;
private boolean executeOnEntireRepo = true;
@@ -52,7 +52,7 @@ public class ArtifactIndexingTask
private boolean onlyUpdate = false;
public ArtifactIndexingTask( ManagedRepository repository, Path resourceFile, Action action,
- IndexingContext context )
+ ArchivaIndexingContext context )
{
this.repository = repository;
this.resourceFile = resourceFile;
@@ -61,14 +61,14 @@ public class ArtifactIndexingTask
}
public ArtifactIndexingTask( ManagedRepository repository, Path resourceFile, Action action,
- IndexingContext context, boolean executeOnEntireRepo )
+ ArchivaIndexingContext context, boolean executeOnEntireRepo )
{
this( repository, resourceFile, action, context );
this.executeOnEntireRepo = executeOnEntireRepo;
}
public ArtifactIndexingTask( ManagedRepository repository, Path resourceFile, Action action,
- IndexingContext context, boolean executeOnEntireRepo, boolean onlyUpdate )
+ ArchivaIndexingContext context, boolean executeOnEntireRepo, boolean onlyUpdate )
{
this( repository, resourceFile, action, context, executeOnEntireRepo );
this.onlyUpdate = onlyUpdate;
@@ -111,7 +111,7 @@ public class ArtifactIndexingTask
return repository;
}
- public IndexingContext getContext()
+ public ArchivaIndexingContext getContext()
{
return context;
}
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/DefaultDownloadRemoteIndexScheduler.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/DefaultDownloadRemoteIndexScheduler.java b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/DefaultDownloadRemoteIndexScheduler.java
index b1f3955..d936bdd 100644
--- a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/DefaultDownloadRemoteIndexScheduler.java
+++ b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/DefaultDownloadRemoteIndexScheduler.java
@@ -29,7 +29,10 @@ import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.configuration.ConfigurationEvent;
import org.apache.archiva.configuration.ConfigurationListener;
+import org.apache.archiva.indexer.UnsupportedBaseContextException;
import org.apache.archiva.proxy.common.WagonFactory;
+import org.apache.archiva.repository.RepositoryRegistry;
+import org.apache.archiva.repository.features.RemoteIndexFeature;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.index.NexusIndexer;
import org.apache.maven.index.context.IndexingContext;
@@ -67,6 +70,9 @@ public class DefaultDownloadRemoteIndexScheduler
private TaskScheduler taskScheduler;
@Inject
+ RepositoryRegistry repositoryRegistry;
+
+ @Inject
private ArchivaConfiguration archivaConfiguration;
@Inject
@@ -95,24 +101,25 @@ public class DefaultDownloadRemoteIndexScheduler
@PostConstruct
public void startup()
- throws ArchivaException, RepositoryAdminException, PlexusSisuBridgeException, IOException,
- UnsupportedExistingLuceneIndexException, DownloadRemoteIndexException
- {
+ throws ArchivaException, RepositoryAdminException, PlexusSisuBridgeException, IOException,
+ UnsupportedExistingLuceneIndexException, DownloadRemoteIndexException, UnsupportedBaseContextException {
archivaConfiguration.addListener( this );
// TODO add indexContexts even if null
- for ( RemoteRepository remoteRepository : remoteRepositoryAdmin.getRemoteRepositories() )
+ for ( org.apache.archiva.repository.RemoteRepository remoteRepository : repositoryRegistry.getRemoteRepositories() )
{
String contextKey = "remote-" + remoteRepository.getId();
- IndexingContext context = nexusIndexer.getIndexingContexts().get( contextKey );
+ IndexingContext context = remoteRepository.getIndexingContext().getBaseContext(IndexingContext.class);
if ( context == null )
{
continue;
}
+ RemoteIndexFeature rif = remoteRepository.getFeature(RemoteIndexFeature.class).get();
+
// TODO record jobs from configuration
- if ( remoteRepository.isDownloadRemoteIndex() && StringUtils.isNotEmpty(
- remoteRepository.getCronExpression() ) )
+ if ( rif.isDownloadRemoteIndex() && StringUtils.isNotEmpty(
+ remoteRepository.getSchedulingDefinition() ) )
{
boolean fullDownload = context.getIndexDirectoryFile().list().length == 0;
scheduleDownloadRemote( remoteRepository.getId(), false, fullDownload );
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutorTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutorTest.java b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutorTest.java
index d0e6532..ebfcb55 100644
--- a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutorTest.java
+++ b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutorTest.java
@@ -22,9 +22,9 @@ package org.apache.archiva.scheduler.indexing;
import junit.framework.TestCase;
import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin;
import org.apache.archiva.common.utils.PathUtil;
-import org.apache.archiva.repository.BasicManagedRepository;
-import org.apache.archiva.repository.ManagedRepository;
-import org.apache.archiva.repository.ReleaseScheme;
+import org.apache.archiva.indexer.ArchivaIndexingContext;
+import org.apache.archiva.indexer.UnsupportedBaseContextException;
+import org.apache.archiva.repository.*;
import org.apache.archiva.repository.features.ArtifactCleanupFeature;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
import org.apache.maven.index.ArtifactInfo;
@@ -57,6 +57,7 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Locale;
+import java.util.Map;
import java.util.Set;
/**
@@ -76,10 +77,7 @@ public class ArchivaIndexingTaskExecutorTest
private NexusIndexer indexer;
@Inject
- List<IndexCreator> indexCreators;
-
- @Inject
- ManagedRepositoryAdmin managedRepositoryAdmin;
+ RepositoryRegistry repositoryRegistry;
@Inject
private IndexUpdater indexUpdater;
@@ -99,7 +97,7 @@ public class ArchivaIndexingTaskExecutorTest
repositoryConfig.setScanned( true );
repositoryConfig.addActiveReleaseScheme( ReleaseScheme.RELEASE );
repositoryConfig.removeActiveReleaseScheme( ReleaseScheme.SNAPSHOT );
- managedRepositoryAdmin.createIndexContext( repositoryConfig );
+ repositoryRegistry.putRepository(repositoryConfig);
}
@After
@@ -112,6 +110,7 @@ public class ArchivaIndexingTaskExecutorTest
{
indexer.removeIndexingContext( indexingContext, true );
}
+ repositoryRegistry.destroy();
/*
removeIndexingContext with true cleanup files.
// delete created index in the repository
@@ -126,9 +125,12 @@ public class ArchivaIndexingTaskExecutorTest
super.tearDown();
}
- protected IndexingContext getIndexingContext()
- {
- return indexer.getIndexingContexts().get( repositoryConfig.getId() );
+ protected IndexingContext getIndexingContext() throws UnsupportedBaseContextException {
+ Repository repo = repositoryRegistry.getRepository(repositoryConfig.getId());
+ assert repo != null;
+ ArchivaIndexingContext ctx = repo.getIndexingContext();
+ assert ctx != null;
+ return ctx.getBaseContext(IndexingContext.class);
}
@Test
@@ -139,12 +141,14 @@ public class ArchivaIndexingTaskExecutorTest
Path artifactFile = basePath.resolve(
"org/apache/archiva/archiva-index-methods-jar-test/1.0/archiva-index-methods-jar-test-1.0.jar" );
+ ManagedRepository repo = repositoryRegistry.getManagedRepository(repositoryConfig.getId());
ArtifactIndexingTask task =
new ArtifactIndexingTask( repositoryConfig, artifactFile, ArtifactIndexingTask.Action.ADD,
- getIndexingContext() );
+ repo.getIndexingContext());
indexingExecutor.executeTask( task );
+ Map<String, IndexingContext> ctxs = indexer.getIndexingContexts();
BooleanQuery q = new BooleanQuery();
q.add( indexer.constructQuery( MAVEN.GROUP_ID, new StringSearchExpression( "org.apache.archiva" ) ),
BooleanClause.Occur.SHOULD );
@@ -152,17 +156,6 @@ public class ArchivaIndexingTaskExecutorTest
indexer.constructQuery( MAVEN.ARTIFACT_ID, new StringSearchExpression( "archiva-index-methods-jar-test" ) ),
BooleanClause.Occur.SHOULD );
- if ( !indexer.getIndexingContexts().containsKey( repositoryConfig.getId() ) )
- {
- IndexingContext context = indexer.addIndexingContext( repositoryConfig.getId(), //
- repositoryConfig.getId(), //
- basePath.toFile(), //
- basePath.resolve(".indexer" ).toFile()
- //
- , null, null, indexCreators );
- context.setSearchable( true );
- }
-
FlatSearchRequest request = new FlatSearchRequest( q );
FlatSearchResponse response = indexer.searchFlat( request );
@@ -187,9 +180,10 @@ public class ArchivaIndexingTaskExecutorTest
Path artifactFile = basePath.resolve(
"org/apache/archiva/archiva-index-methods-jar-test/1.0/archiva-index-methods-jar-test-1.0.jar" );
+ ManagedRepository repo = repositoryRegistry.getManagedRepository(repositoryConfig.getId());
ArtifactIndexingTask task =
new ArtifactIndexingTask( repositoryConfig, artifactFile, ArtifactIndexingTask.Action.ADD,
- getIndexingContext() );
+ repo.getIndexingContext() );
indexingExecutor.executeTask( task );
indexingExecutor.executeTask( task );
@@ -201,7 +195,7 @@ public class ArchivaIndexingTaskExecutorTest
indexer.constructQuery( MAVEN.ARTIFACT_ID, new StringSearchExpression( "archiva-index-methods-jar-test" ) ),
BooleanClause.Occur.SHOULD );
- IndexingContext ctx = indexer.getIndexingContexts().get( repositoryConfig.getId() );
+ IndexingContext ctx = getIndexingContext();
IndexSearcher searcher = ctx.acquireIndexSearcher();
TopDocs topDocs = searcher.search( q, null, 10 );
@@ -224,9 +218,10 @@ public class ArchivaIndexingTaskExecutorTest
Path artifactFile = basePath.resolve(
"org/apache/archiva/archiva-index-methods-jar-test/1.0/archiva-index-methods-jar-test-1.0.jar" );
+ ManagedRepository repo = repositoryRegistry.getManagedRepository(repositoryConfig.getId());
ArtifactIndexingTask task =
new ArtifactIndexingTask( repositoryConfig, artifactFile, ArtifactIndexingTask.Action.ADD,
- getIndexingContext() );
+ repo.getIndexingContext() );
// add artifact to index
indexingExecutor.executeTask( task );
@@ -251,11 +246,11 @@ public class ArchivaIndexingTaskExecutorTest
// remove added artifact from index
task = new ArtifactIndexingTask( repositoryConfig, artifactFile, ArtifactIndexingTask.Action.DELETE,
- getIndexingContext() );
+ repo.getIndexingContext());
indexingExecutor.executeTask( task );
task = new ArtifactIndexingTask( repositoryConfig, artifactFile, ArtifactIndexingTask.Action.FINISH,
- getIndexingContext() );
+ repo.getIndexingContext() );
indexingExecutor.executeTask( task );
q = new BooleanQuery();
@@ -301,16 +296,16 @@ public class ArchivaIndexingTaskExecutorTest
Path artifactFile = basePath.resolve(
"org/apache/archiva/archiva-index-methods-jar-test/1.0/archiva-index-methods-jar-test-1.0.jar" );
-
+ ManagedRepository repo = repositoryRegistry.getManagedRepository(repositoryConfig.getId());
ArtifactIndexingTask task =
new ArtifactIndexingTask( repositoryConfig, artifactFile, ArtifactIndexingTask.Action.ADD,
- getIndexingContext() );
+ repo.getIndexingContext() );
task.setExecuteOnEntireRepo( false );
indexingExecutor.executeTask( task );
task = new ArtifactIndexingTask( repositoryConfig, null, ArtifactIndexingTask.Action.FINISH,
- getIndexingContext() );
+ repo.getIndexingContext() );
task.setExecuteOnEntireRepo( false );
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/DownloadRemoteIndexTaskTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/DownloadRemoteIndexTaskTest.java b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/DownloadRemoteIndexTaskTest.java
index 0c80cd4..aeeaa67 100644
--- a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/DownloadRemoteIndexTaskTest.java
+++ b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/DownloadRemoteIndexTaskTest.java
@@ -21,11 +21,10 @@ package org.apache.archiva.scheduler.indexing;
import org.apache.archiva.admin.model.beans.RemoteRepository;
import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin;
import org.apache.archiva.common.utils.FileUtils;
+import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
-import org.apache.maven.index.FlatSearchRequest;
-import org.apache.maven.index.FlatSearchResponse;
-import org.apache.maven.index.MAVEN;
-import org.apache.maven.index.NexusIndexer;
+import org.apache.maven.index.*;
+import org.apache.maven.index.context.IndexingContext;
import org.apache.maven.index.expr.StringSearchExpression;
import org.apache.maven.index_shaded.lucene.search.BooleanClause;
import org.apache.maven.index_shaded.lucene.search.BooleanQuery;
@@ -77,12 +76,27 @@ public class DownloadRemoteIndexTaskTest
DefaultDownloadRemoteIndexScheduler downloadRemoteIndexScheduler;
@Inject
+ Indexer indexer;
+
+ @Inject
+ RepositoryRegistry repositoryRegistry;
+
+ @Inject
NexusIndexer nexusIndexer;
@Before
public void initialize()
throws Exception
{
+ Path cfgFile = Paths.get("target/appserver-base/conf/archiva.xml");
+ if (Files.exists(cfgFile)) {
+ Files.delete(cfgFile);
+ }
+ try {
+ remoteRepositoryAdmin.deleteRemoteRepository("test-repo-re", null);
+ } catch (Exception e) {
+ // Ignore
+ }
server = new Server( );
serverConnector = new ServerConnector( server, new HttpConnectionFactory());
server.addConnector( serverConnector );
@@ -108,7 +122,13 @@ public class DownloadRemoteIndexTaskTest
public void tearDown()
throws Exception
{
- server.stop();
+ if (server!=null) {
+ server.stop();
+ }
+ Path cfgFile = Paths.get("target/appserver-base/conf/archiva.xml");
+ if (Files.exists(cfgFile)) {
+ Files.delete(cfgFile);
+ }
}
@Test
@@ -121,23 +141,24 @@ public class DownloadRemoteIndexTaskTest
downloadRemoteIndexScheduler.startup();
- downloadRemoteIndexScheduler.scheduleDownloadRemote( "test-repo", true, true );
+ downloadRemoteIndexScheduler.scheduleDownloadRemote( "test-repo-re", true, true );
( (ThreadPoolTaskScheduler) downloadRemoteIndexScheduler.getTaskScheduler() ).getScheduledExecutor().awaitTermination(
10, TimeUnit.SECONDS );
- remoteRepositoryAdmin.deleteRemoteRepository( "test-repo", null );
+ remoteRepositoryAdmin.deleteRemoteRepository( "test-repo-re", null );
// search
BooleanQuery iQuery = new BooleanQuery();
- iQuery.add( nexusIndexer.constructQuery( MAVEN.GROUP_ID, new StringSearchExpression( "commons-logging" ) ),
+ iQuery.add( indexer.constructQuery( MAVEN.GROUP_ID, new StringSearchExpression( "commons-logging" ) ),
BooleanClause.Occur.SHOULD );
+ remoteRepositoryAdmin.addRemoteRepository(remoteRepository, null);
FlatSearchRequest rq = new FlatSearchRequest( iQuery );
rq.setContexts(
- Arrays.asList( nexusIndexer.getIndexingContexts().get( "remote-" + getRemoteRepository().getId() ) ) );
+ Arrays.asList( repositoryRegistry.getRemoteRepository(remoteRepository.getId()).getIndexingContext().getBaseContext(IndexingContext.class) ) );
- FlatSearchResponse response = nexusIndexer.searchFlat( rq );
+ FlatSearchResponse response = indexer.searchFlat(rq);
log.info( "returned hit count:{}", response.getReturnedHitsCount() );
assertThat( response.getReturnedHitsCount() ).isEqualTo( 8 );
@@ -155,9 +176,10 @@ public class DownloadRemoteIndexTaskTest
remoteRepository.setName( "foo" );
remoteRepository.setIndexDirectory( indexDirectory.toAbsolutePath().toString() );
remoteRepository.setDownloadRemoteIndex( true );
- remoteRepository.setId( "test-repo" );
+ remoteRepository.setId( "test-repo-re" );
remoteRepository.setUrl( "http://localhost:" + port );
remoteRepository.setRemoteIndexUrl( "http://localhost:" + port + "/index-updates/" );
+
return remoteRepository;
}
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/resources/spring-context.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/resources/spring-context.xml b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/resources/spring-context.xml
index fc6f65a..3c9ef40 100644
--- a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/resources/spring-context.xml
+++ b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/resources/spring-context.xml
@@ -25,7 +25,7 @@
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
default-lazy-init="true">
- <context:component-scan base-package="org.apache.archiva.repository.content.maven2" />
+ <context:component-scan base-package="org.apache.archiva.repository.content.maven2,org.apache.archiva.indexer.maven" />
<bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler">
<property name="properties">
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/mock/MockManagedRepositoryAdmin.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/mock/MockManagedRepositoryAdmin.java b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/mock/MockManagedRepositoryAdmin.java
index 22aea17..3f28ddd 100644
--- a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/mock/MockManagedRepositoryAdmin.java
+++ b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/mock/MockManagedRepositoryAdmin.java
@@ -121,16 +121,5 @@ public class MockManagedRepositoryAdmin
this.archivaConfiguration = archivaConfiguration;
}
- @Override
- public IndexingContext createIndexContext( ManagedRepository repository )
- throws RepositoryAdminException
- {
- return null;
- }
- @Override
- public IndexingContext createIndexContext( org.apache.archiva.repository.ManagedRepository repository ) throws RepositoryAdminException
- {
- return null;
- }
}
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml
index 74a963a..28c507e 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml
@@ -439,7 +439,10 @@
<include>**/*Tests.java</include>
<include>**/*Test.java</include>
</includes>
+ <!--
<argLine>-Xms1024m -Xmx3072m -server -XX:MaxPermSize=256m @{jacocoproperty}</argLine>
+ -->
+ <argLine>-Xms1024m -Xmx3072m -server -XX:MaxPermSize=256m</argLine>
<systemPropertyVariables>
<appserver.base>${project.build.directory}/appserver-base</appserver.base>
<plexus.home>${project.build.directory}/appserver-base</plexus.home>
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
index 155546d..eaf37c3 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
@@ -200,10 +200,9 @@ public class DefaultRepositoriesService
org.apache.archiva.repository.ManagedRepository repository = repositoryRegistry.getManagedRepository( repositoryId );
- IndexingContext context = managedRepositoryAdmin.createIndexContext( repository );
ArtifactIndexingTask task =
- new ArtifactIndexingTask( repository, null, ArtifactIndexingTask.Action.FINISH, context );
+ new ArtifactIndexingTask( repository, null, ArtifactIndexingTask.Action.FINISH, repository.getIndexingContext() );
task.setExecuteOnEntireRepo( true );
task.setOnlyUpdate( !fullScan );
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
index c055aee..c4247c0 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
@@ -448,7 +448,7 @@ public abstract class AbstractArchivaRestTest
managedRepository.setLocation( Paths.get( repoPath ).toString() );
managedRepository.setIndexDirectory(
- System.getProperty( "java.io.tmpdir" ) + "/target/.index-" + Long.toString( new Date().getTime() ) );
+ System.getProperty( "java.io.tmpdir" ) + "/.index-" + Long.toString( new Date().getTime() ) );
managedRepository.setStageRepoNeeded( stageNeeded );
managedRepository.setSnapshots( true );
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/resources/log4j2-test.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/resources/log4j2-test.xml b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/resources/log4j2-test.xml
index 1c258ef..0da8a7f 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/resources/log4j2-test.xml
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/resources/log4j2-test.xml
@@ -24,17 +24,29 @@
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} [%L] [%t] %-5level %logger{3} - %msg%n}" />
</Console>
+ <RollingRandomAccessFile name="rolling" fileName="/tmp/archiva.log"
+ filePattern="/tmp/archiva-%d{yyyyMMdd}.log"
+ immediateFlush="true" append="true">
+ <PatternLayout>
+ <pattern>%d [%t] %-5p %c %x - %m%n</pattern>
+ </PatternLayout>
+ <Policies>
+ <TimeBasedTriggeringPolicy />
+ </Policies>
+ </RollingRandomAccessFile>
</appenders>
+
<loggers>
<logger name="org.apache.archiva.redback.rest.services" level="error"/>
<logger name="JPOX" level="error"/>
<logger name="org.apache.archiva.rest.services" level="info"/>
- <logger name="org.springframework" level="error"/>
- <logger name="org.apache.commons.configuration" level="error"/>
+ <logger name="org.springframework" level="info"/>
+ <logger name="org.apache.commons.configuration" level="info"/>
<root level="info">
<appender-ref ref="console"/>
+ <appender-ref ref="rolling" />
</root>
</loggers>
</configuration>
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-web/archiva-security/pom.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-security/pom.xml b/archiva-modules/archiva-web/archiva-security/pom.xml
index 913d6ed..6e6a1da 100644
--- a/archiva-modules/archiva-web/archiva-security/pom.xml
+++ b/archiva-modules/archiva-web/archiva-security/pom.xml
@@ -197,6 +197,11 @@
<artifactId>xercesImpl</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.archiva</groupId>
+ <artifactId>archiva-maven2-indexer</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
<plugins>
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/AbstractSecurityTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/AbstractSecurityTest.java b/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/AbstractSecurityTest.java
index 25b0ed6..b58aae8 100644
--- a/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/AbstractSecurityTest.java
+++ b/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/AbstractSecurityTest.java
@@ -96,9 +96,8 @@ public abstract class AbstractSecurityTest
repoConfig.setLocation( Paths.get( "target/test-repo/" + repoId ).toString() );
if ( !archivaConfiguration.getConfiguration().getManagedRepositoriesAsMap().containsKey( repoId ) )
{
- archivaConfiguration.getConfiguration().addManagedRepository( repoConfig );
+ repositoryRegistry.putRepository( repoConfig );
}
- repositoryRegistry.reload();
// Add repo roles to security.
userRepos.createMissingRepositoryRoles( repoId );
@@ -152,6 +151,9 @@ public abstract class AbstractSecurityTest
// Setup Guest User.
User guestUser = createUser( USER_GUEST, "Guest User" );
roleManager.assignRole( ArchivaRoleConstants.TEMPLATE_GUEST, guestUser.getUsername() );
+
+ repositoryRegistry.setArchivaConfiguration(archivaConfiguration);
+ repositoryRegistry.reload();
}
protected void restoreGuestInitialValues( String userId )
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/DefaultUserRepositoriesTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/DefaultUserRepositoriesTest.java b/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/DefaultUserRepositoriesTest.java
index cef6887..c92dc43 100644
--- a/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/DefaultUserRepositoriesTest.java
+++ b/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/DefaultUserRepositoriesTest.java
@@ -73,7 +73,7 @@ public class DefaultUserRepositoriesTest
assertRepoIds( new String[]{ "central", "corporate" }, userRepos.getObservableRepositoryIds( USER_ALPACA ) );
assertRepoIds( new String[]{ "coporate" }, userRepos.getObservableRepositoryIds( USER_GUEST ) );
- assertRepoIds( new String[]{ "central", "internal", "corporate", "snapshots", "secret" },
+ assertRepoIds( new String[]{ "central", "internal","corporate", "snapshots", "secret" },
userRepos.getObservableRepositoryIds( USER_ADMIN ) );
}
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-web/archiva-web-common/pom.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/pom.xml b/archiva-modules/archiva-web/archiva-web-common/pom.xml
index 92c056d..0f4d583 100644
--- a/archiva-modules/archiva-web/archiva-web-common/pom.xml
+++ b/archiva-modules/archiva-web/archiva-web-common/pom.xml
@@ -495,7 +495,10 @@
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<reuseForks>false</reuseForks>
+<!--
<argLine>-Xms1024m -Xmx2048m -server -XX:MaxPermSize=256m @{jacocoproperty}</argLine>
+-->
+ <argLine>-Xms1024m -Xmx2048m -server -XX:MaxPermSize=256m</argLine>
<systemPropertyVariables>
<appserver.base>${project.build.directory}/appserver-base</appserver.base>
<plexus.home>${project.build.directory}/appserver-base</plexus.home>
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-web/archiva-webdav/pom.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-webdav/pom.xml b/archiva-modules/archiva-web/archiva-webdav/pom.xml
index adfa9ac..0dc99c9 100644
--- a/archiva-modules/archiva-web/archiva-webdav/pom.xml
+++ b/archiva-modules/archiva-web/archiva-webdav/pom.xml
@@ -257,6 +257,7 @@
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>
+
</dependencies>
<build>
<plugins>
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletTestCase.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletTestCase.java b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletTestCase.java
index ce2d851..1a65a35 100644
--- a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletTestCase.java
+++ b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletTestCase.java
@@ -142,8 +142,6 @@ public abstract class AbstractRepositoryServletTestCase
createManagedRepository( REPOID_INTERNAL, "Internal Test Repo", repoRootInternal, true ) );
repositoryRegistry.reload();
- managedRepositoryAdmin.createIndexContext( managedRepositoryAdmin.getManagedRepository( REPOID_INTERNAL ) );
-
config.getProxyConnectors().clear();
config.getRemoteRepositories().clear();
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/RepositoryServletBrowseTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/RepositoryServletBrowseTest.java b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/RepositoryServletBrowseTest.java
index a453021..90e13c4 100644
--- a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/RepositoryServletBrowseTest.java
+++ b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/RepositoryServletBrowseTest.java
@@ -67,7 +67,7 @@ public class RepositoryServletBrowseTest
// dumpResponse( response );
- List<String> expectedLinks = Arrays.asList( ".indexer/", "commons-lang/", "net/", "org/" );
+ List<String> expectedLinks = Arrays.asList( "commons-lang/", "net/", "org/" );
Document document = Jsoup.parse( response.getContentAsString() );
Elements elements = document.getElementsByTag( "a" );
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java
----------------------------------------------------------------------
diff --git a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java
index 4678950..62089c8 100644
--- a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java
+++ b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java
@@ -20,10 +20,8 @@ package org.apache.archiva.metadata.repository.storage.maven2;
*/
import org.apache.archiva.admin.model.RepositoryAdminException;
-import org.apache.archiva.admin.model.beans.ManagedRepository;
import org.apache.archiva.admin.model.beans.NetworkProxy;
import org.apache.archiva.admin.model.beans.ProxyConnector;
-import org.apache.archiva.admin.model.beans.RemoteRepository;
import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin;
import org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin;
import org.apache.archiva.admin.model.proxyconnector.ProxyConnectorAdmin;
@@ -45,9 +43,10 @@ import org.apache.archiva.model.SnapshotVersion;
import org.apache.archiva.policies.ProxyDownloadException;
import org.apache.archiva.proxy.common.WagonFactory;
import org.apache.archiva.proxy.model.RepositoryProxyConnectors;
-import org.apache.archiva.repository.ManagedRepositoryContent;
+import org.apache.archiva.repository.*;
import org.apache.archiva.repository.content.PathParser;
-import org.apache.archiva.repository.LayoutException;
+import org.apache.archiva.repository.features.RepositoryFeature;
+import org.apache.archiva.repository.features.StagingRepositoryFeature;
import org.apache.archiva.xml.XMLException;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
@@ -99,10 +98,7 @@ public class Maven2RepositoryStorage
private ModelBuilder builder;
@Inject
- private RemoteRepositoryAdmin remoteRepositoryAdmin;
-
- @Inject
- private ManagedRepositoryAdmin managedRepositoryAdmin;
+ RepositoryRegistry repositoryRegistry;
@Inject
private ProxyConnectorAdmin proxyConnectorAdmin;
@@ -155,8 +151,9 @@ public class Maven2RepositoryStorage
{
try
{
- ManagedRepository managedRepository =
- managedRepositoryAdmin.getManagedRepository( readMetadataRequest.getRepositoryId() );
+ ManagedRepository managedRepository = repositoryRegistry.getManagedRepository(readMetadataRequest.getRepositoryId());
+ boolean isReleases = managedRepository.getActiveReleaseSchemes().contains(ReleaseScheme.RELEASE);
+ boolean isSnapshots = managedRepository.getActiveReleaseSchemes().contains(ReleaseScheme.SNAPSHOT);
String artifactVersion = readMetadataRequest.getProjectVersion();
// olamy: in case of browsing via the ui we can mix repos (parent of a SNAPSHOT can come from release repo)
if ( !readMetadataRequest.isBrowsingRequest() )
@@ -164,7 +161,7 @@ public class Maven2RepositoryStorage
if ( VersionUtil.isSnapshot( artifactVersion ) )
{
// skygo trying to improve speed by honoring managed configuration MRM-1658
- if ( managedRepository.isReleases() && !managedRepository.isSnapshots() )
+ if ( isReleases && !isSnapshots )
{
throw new RepositoryStorageRuntimeException( "lookforsnaponreleaseonly",
"managed repo is configured for release only" );
@@ -172,7 +169,7 @@ public class Maven2RepositoryStorage
}
else
{
- if ( !managedRepository.isReleases() && managedRepository.isSnapshots() )
+ if ( !isReleases && isSnapshots)
{
throw new RepositoryStorageRuntimeException( "lookforsreleaseonsneponly",
"managed repo is configured for snapshot only" );
@@ -231,7 +228,7 @@ public class Maven2RepositoryStorage
for ( ProxyConnector proxyConnector : proxyConnectors )
{
RemoteRepository remoteRepoConfig =
- remoteRepositoryAdmin.getRemoteRepository( proxyConnector.getTargetRepoId() );
+ repositoryRegistry.getRemoteRepository( proxyConnector.getTargetRepoId() );
if ( remoteRepoConfig != null )
{
@@ -253,7 +250,7 @@ public class Maven2RepositoryStorage
// can have released parent pom
if ( readMetadataRequest.isBrowsingRequest() )
{
- remoteRepositories.addAll( remoteRepositoryAdmin.getRemoteRepositories() );
+ remoteRepositories.addAll( repositoryRegistry.getRemoteRepositories() );
}
ModelBuildingRequest req =
@@ -516,16 +513,9 @@ public class Maven2RepositoryStorage
private Path getRepositoryBasedir( String repoId )
throws RepositoryStorageRuntimeException
{
- try
- {
- ManagedRepository repositoryConfiguration = managedRepositoryAdmin.getManagedRepository( repoId );
+ ManagedRepository repositoryConfiguration = repositoryRegistry.getManagedRepository( repoId );
- return Paths.get( repositoryConfiguration.getLocation() );
- }
- catch ( RepositoryAdminException e )
- {
- throw new RepositoryStorageRuntimeException( "repo-admin", e.getMessage(), e );
- }
+ return Paths.get( repositoryConfiguration.getLocation() );
}
@Override
http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
----------------------------------------------------------------------
diff --git a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
index b769fb2..a6c3c24 100644
--- a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
+++ b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
@@ -19,9 +19,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
* under the License.
*/
-import org.apache.archiva.admin.model.beans.ManagedRepository;
import org.apache.archiva.admin.model.beans.NetworkProxy;
-import org.apache.archiva.admin.model.beans.RemoteRepository;
import org.apache.archiva.common.utils.VersionUtil;
import org.apache.archiva.maven2.metadata.MavenMetadataReader;
import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
@@ -30,8 +28,13 @@ import org.apache.archiva.model.SnapshotVersion;
import org.apache.archiva.proxy.common.WagonFactory;
import org.apache.archiva.proxy.common.WagonFactoryException;
import org.apache.archiva.proxy.common.WagonFactoryRequest;
+import org.apache.archiva.repository.ManagedRepository;
+import org.apache.archiva.repository.RemoteRepository;
+import org.apache.archiva.repository.RepositoryCredentials;
+import org.apache.archiva.repository.features.RemoteIndexFeature;
import org.apache.archiva.xml.XMLException;
import org.apache.commons.lang.StringUtils;
+import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.maven.model.Repository;
import org.apache.maven.model.building.FileModelSource;
import org.apache.maven.model.building.ModelSource;
@@ -53,6 +56,7 @@ import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.Map;
@@ -228,15 +232,15 @@ public class RepositoryModelResolver
Path tmpSha1 = null;
Path tmpResource = null;
String artifactPath = pathTranslator.toPath( groupId, artifactId, version, filename );
- Path resource = Paths.get( targetRepository.getLocation(), artifactPath );
+ Path resource = Paths.get(targetRepository.getLocation()).resolve( artifactPath );
- Path workingDirectory = createWorkingDirectory( targetRepository.getLocation() );
+ Path workingDirectory = createWorkingDirectory( targetRepository.getLocation().toString() );
try
{
Wagon wagon = null;
try
{
- String protocol = getProtocol( remoteRepository.getUrl() );
+ String protocol = getProtocol( remoteRepository.getLocation().toString() );
final NetworkProxy networkProxy = this.networkProxyMap.get( remoteRepository.getId() );
wagon = wagonFactory.getWagon(
@@ -357,7 +361,7 @@ public class RepositoryModelResolver
networkProxy.setPassword( proxyConnector.getPassword() );
String msg = "Using network proxy " + networkProxy.getHost() + ":" + networkProxy.getPort()
- + " to connect to remote repository " + remoteRepository.getUrl();
+ + " to connect to remote repository " + remoteRepository.getLocation();
if ( networkProxy.getNonProxyHosts() != null )
{
msg += "; excluding hosts: " + networkProxy.getNonProxyHosts();
@@ -372,19 +376,24 @@ public class RepositoryModelResolver
}
AuthenticationInfo authInfo = null;
- String username = remoteRepository.getUserName();
- String password = remoteRepository.getPassword();
+ RepositoryCredentials creds = remoteRepository.getLoginCredentials();
+ String username = "";
+ String password = "";
+ if (creds instanceof UsernamePasswordCredentials) {
+ UsernamePasswordCredentials c = (UsernamePasswordCredentials) creds;
+ username = c.getUserName();
+ password = c.getPassword();
+ }
if ( StringUtils.isNotBlank( username ) && StringUtils.isNotBlank( password ) )
{
- log.debug( "Using username {} to connect to remote repository {}", username, remoteRepository.getUrl() );
+ log.debug( "Using username {} to connect to remote repository {}", username, remoteRepository.getLocation() );
authInfo = new AuthenticationInfo();
authInfo.setUserName( username );
authInfo.setPassword( password );
}
- // Convert seconds to milliseconds
- int timeoutInMilliseconds = remoteRepository.getTimeout() * 1000;
+ int timeoutInMilliseconds = ((int)remoteRepository.getTimeout().getSeconds())*1000;
// FIXME olamy having 2 config values
// Set timeout
wagon.setReadTimeout( timeoutInMilliseconds );
@@ -393,7 +402,7 @@ public class RepositoryModelResolver
try
{
org.apache.maven.wagon.repository.Repository wagonRepository =
- new org.apache.maven.wagon.repository.Repository( remoteRepository.getId(), remoteRepository.getUrl() );
+ new org.apache.maven.wagon.repository.Repository( remoteRepository.getId(), remoteRepository.getLocation().toString() );
if ( networkProxy != null )
{
wagon.connect( wagonRepository, authInfo, networkProxy );