From 3008e088f5e566000fa5e3a3016517ee73d8bffa Mon Sep 17 00:00:00 2001 From: Brett Porter Date: Wed, 12 Jul 2006 06:18:24 +0000 Subject: [PATCH] improve quick search validation, take some notes git-svn-id: https://svn.apache.org/repos/asf/maven/repository-manager/trunk@421160 13f79535-47bb-0310-9956-ffa450edef68 --- .../manager/web/action/QuickSearchAction.java | 68 +++++++++++-------- .../web/action/admin/ConfigureAction.java | 2 +- .../src/main/resources/xwork.xml | 2 + 3 files changed, 43 insertions(+), 29 deletions(-) diff --git a/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/QuickSearchAction.java b/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/QuickSearchAction.java index 68fe27b8e..35f5de74f 100644 --- a/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/QuickSearchAction.java +++ b/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/QuickSearchAction.java @@ -16,11 +16,13 @@ package org.apache.maven.repository.manager.web.action; * limitations under the License. */ -import com.opensymphony.xwork.Action; +import com.opensymphony.xwork.ActionSupport; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepositoryFactory; import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout; import org.apache.maven.repository.configuration.Configuration; +import org.apache.maven.repository.configuration.ConfigurationStore; +import org.apache.maven.repository.configuration.ConfigurationStoreException; import org.apache.maven.repository.indexing.ArtifactRepositoryIndex; import org.apache.maven.repository.indexing.RepositoryIndexException; import org.apache.maven.repository.indexing.RepositoryIndexSearchException; @@ -38,7 +40,7 @@ import java.util.Map; * @plexus.component role="com.opensymphony.xwork.Action" role-hint="quickSearchAction" */ public class QuickSearchAction - implements Action + extends ActionSupport { /** * Query string. @@ -70,38 +72,48 @@ public class QuickSearchAction */ private Map repositoryLayouts; + /** + * @plexus.requirement + */ + private ConfigurationStore configurationStore; + public String execute() - throws MalformedURLException, RepositoryIndexException, RepositoryIndexSearchException + throws MalformedURLException, RepositoryIndexException, RepositoryIndexSearchException, + ConfigurationStoreException { - if ( q != null && q.length() != 0 ) - { - Configuration configuration = new Configuration(); // TODO! - File indexPath = new File( configuration.getIndexPath() ); - - // TODO: [!] repository should only have been instantiated once - File repositoryDirectory = new File( configuration.getRepositoryDirectory() ); - String repoDir = repositoryDirectory.toURL().toString(); - - ArtifactRepositoryLayout layout = - (ArtifactRepositoryLayout) repositoryLayouts.get( configuration.getRepositoryLayout() ); - ArtifactRepository repository = - repositoryFactory.createArtifactRepository( "test", repoDir, layout, null, null ); - - ArtifactRepositoryIndex index = factory.createArtifactRepositoryIndex( indexPath, repository ); - - searchResult = searchLayer.searchGeneral( q, index ); - - return SUCCESS; - } - else - { - return INPUT; - } + // TODO: give action message if indexing is in progress + + // TODO: return zero results if index doesn't yet exist + + assert q != null && q.length() != 0; + + Configuration configuration = configurationStore.getConfigurationFromStore(); + File indexPath = new File( configuration.getIndexPath() ); + + ArtifactRepository repository = getDefaultRepository( configuration ); + + ArtifactRepositoryIndex index = factory.createArtifactRepositoryIndex( indexPath, repository ); + + searchResult = searchLayer.searchGeneral( q, index ); + + return SUCCESS; + } + + private ArtifactRepository getDefaultRepository( Configuration configuration ) + throws MalformedURLException + { + // TODO: [!] repository should only have been instantiated once + File repositoryDirectory = new File( configuration.getRepositoryDirectory() ); + String repoDir = repositoryDirectory.toURI().toURL().toString(); + + ArtifactRepositoryLayout layout = + (ArtifactRepositoryLayout) repositoryLayouts.get( configuration.getRepositoryLayout() ); + return repositoryFactory.createArtifactRepository( "test", repoDir, layout, null, null ); } public String doInput() { - return SUCCESS; + return INPUT; } public String getQ() diff --git a/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/admin/ConfigureAction.java b/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/admin/ConfigureAction.java index 433d0ee81..6ccb922a3 100644 --- a/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/admin/ConfigureAction.java +++ b/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/admin/ConfigureAction.java @@ -59,7 +59,7 @@ public class ConfigureAction if ( !file.exists() ) { file.mkdirs(); - // TODO: error handling when this fails + // TODO: error handling when this fails, or is not a directory } // TODO: these defaults belong in the model. They shouldn't be stored here, as you want them to re-default diff --git a/maven-repository-webapp/src/main/resources/xwork.xml b/maven-repository-webapp/src/main/resources/xwork.xml index 85390a2df..c7952d0ed 100644 --- a/maven-repository-webapp/src/main/resources/xwork.xml +++ b/maven-repository-webapp/src/main/resources/xwork.xml @@ -18,6 +18,8 @@ "http://www.opensymphony.com/xwork/xwork-1.1.dtd"> + + -- 2.39.5