Author: oching
Date: Fri Jan 30 07:32:35 2009
New Revision: 739197
URL: http://svn.apache.org/viewvc?rev=739197&view=rev
Log:
[MRM-749]
o wire search action to use nexus repository search (quick search)
Added:
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/plexus/
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/plexus/components.xml
Modified:
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-configuration/src/main/resources/spring-context.xml
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/resources/META-INF/spring-context.xml
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/pom.xml
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java
Modified:
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-configuration/src/main/resources/spring-context.xml
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-configuration/src/main/resources/spring-context.xml?rev=739197&r1=739196&r2=739197&view=diff
==============================================================================
---
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-configuration/src/main/resources/spring-context.xml
(original)
+++
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-configuration/src/main/resources/spring-context.xml
Fri Jan 30 07:32:35 2009
@@ -4,7 +4,7 @@
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="nexusRepositorySearch"
class="org.apache.archiva.indexer.search.NexusRepositorySearch">
- <constructor-arg ref="nexusIndexer"/>
+ <constructor-arg ref="nexusIndexer#archiva"/>
<constructor-arg ref="archivaConfiguration"/>
</bean>
</beans>
\ No newline at end of file
Modified:
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/resources/META-INF/spring-context.xml
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/resources/META-INF/spring-context.xml?rev=739197&r1=739196&r2=739197&view=diff
==============================================================================
---
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/resources/META-INF/spring-context.xml
(original)
+++
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/resources/META-INF/spring-context.xml
Fri Jan 30 07:32:35 2009
@@ -4,7 +4,7 @@
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="indexerConsumer"
class="org.apache.archiva.consumers.lucene.NexusIndexerConsumer">
- <constructor-arg ref="nexusIndexer"/>
+ <constructor-arg ref="nexusIndexer#archiva"/>
<constructor-arg ref="indexPacker"/>
<constructor-arg ref="indexerEngine"/>
</bean>
Modified:
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/pom.xml
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/pom.xml?rev=739197&r1=739196&r2=739197&view=diff
==============================================================================
---
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/pom.xml
(original)
+++
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/pom.xml
Fri Jan 30 07:32:35 2009
@@ -83,6 +83,24 @@
</check>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>merge</id>
+ <goals>
+ <goal>merge-descriptors</goal>
+ </goals>
+ <configuration>
+ <descriptors>
+
<descriptor>${basedir}/src/main/resources/META-INF/plexus/components.xml</descriptor>
+
<descriptor>${project.build.directory}/generated-resources/plexus/META-INF/plexus/components.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
</project>
Modified:
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java?rev=739197&r1=739196&r2=739197&view=diff
==============================================================================
---
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
(original)
+++
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
Fri Jan 30 07:32:35 2009
@@ -62,6 +62,9 @@
this.archivaConfig = archivaConfig;
}
+ /**
+ * @see RepositorySearch#search(String, List, String, SearchResultLimits)
+ */
public SearchResults search( String principal, List<String> selectedRepos,
String term, SearchResultLimits limits )
throws RepositorySearchException
{
@@ -120,7 +123,10 @@
}
}
}
-
+
+ /**
+ * @see RepositorySearch#search(String, SearchFields, SearchResultLimits)
+ */
public SearchResults search( String principal, SearchFields searchFields,
SearchResultLimits limits )
throws RepositorySearchException
{
@@ -219,13 +225,17 @@
private SearchResults paginate( SearchResultLimits limits, SearchResults
results )
{
- SearchResults paginated = new SearchResults();
-
+ SearchResults paginated = new SearchResults();
int fetchCount = limits.getPageSize();
int offset = ( limits.getSelectedPage() * limits.getPageSize() );
-
+
+ if( fetchCount > results.getTotalHits() )
+ {
+ fetchCount = results.getTotalHits();
+ }
+
// Goto offset.
- if ( offset <= results.getTotalHits() )
+ if ( offset < results.getTotalHits() )
{
// only process if the offset is within the hit count.
for ( int i = 0; i < fetchCount; i++ )
@@ -236,7 +246,7 @@
break;
}
- SearchResultHit hit = results.getHits().get( ( offset + i ) -
1 );
+ SearchResultHit hit = results.getHits().get( ( offset + i ) );
if( hit != null )
{
String id = SearchUtil.getHitId( hit.getGroupId(),
hit.getArtifactId() );
Added:
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/plexus/components.xml
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/plexus/components.xml?rev=739197&view=auto
==============================================================================
---
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/plexus/components.xml
(added)
+++
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/plexus/components.xml
Fri Jan 30 07:32:35 2009
@@ -0,0 +1,55 @@
+<?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.
+ -->
+
+<component-set>
+ <components>
+ <component>
+ <role>org.sonatype.nexus.index.NexusIndexer</role>
+ <role-hint>archiva</role-hint>
+
<implementation>org.sonatype.nexus.index.DefaultNexusIndexer</implementation>
+ <description>The default nexus indexer implementation.</description>
+ <instantiation-strategy>per-lookup</instantiation-strategy>
+ <isolated-realm>false</isolated-realm>
+ <requirements>
+ <requirement>
+ <role>org.sonatype.nexus.index.scan.Scanner</role>
+ <role-hint>default</role-hint>
+ <field-name>scanner</field-name>
+ </requirement>
+ <requirement>
+ <role>org.sonatype.nexus.index.search.SearchEngine</role>
+ <role-hint>default</role-hint>
+ <field-name>searcher</field-name>
+ </requirement>
+ <requirement>
+ <role>org.sonatype.nexus.index.creator.IndexerEngine</role>
+ <role-hint>default</role-hint>
+ <field-name>indexerEngine</field-name>
+ </requirement>
+ <requirement>
+ <role>org.sonatype.nexus.index.QueryCreator</role>
+ <role-hint>default</role-hint>
+ <field-name>queryCreator</field-name>
+ </requirement>
+ </requirements>
+ </component>
+ </components>
+
+</component-set>
Modified:
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml?rev=739197&r1=739196&r2=739197&view=diff
==============================================================================
---
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml
(original)
+++
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml
Fri Jan 30 07:32:35 2009
@@ -4,7 +4,7 @@
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="nexusSearch"
class="org.apache.archiva.indexer.search.NexusRepositorySearch">
- <constructor-arg ref="nexusIndexer"/>
+ <constructor-arg ref="nexusIndexer#archiva"/>
<constructor-arg ref="archivaConfiguration"/>
</bean>
</beans>
\ No newline at end of file
Modified:
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java?rev=739197&r1=739196&r2=739197&view=diff
==============================================================================
---
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java
(original)
+++
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java
Fri Jan 30 07:32:35 2009
@@ -189,7 +189,7 @@
selectedRepos.add( TEST_REPO_1 );
// page 1
- SearchResultLimits limits = new SearchResultLimits( 1 );
+ SearchResultLimits limits = new SearchResultLimits( 0 );
limits.setPageSize( 1 );
archivaConfigControl.expectAndReturn(
archivaConfig.getConfiguration(), config );
@@ -206,7 +206,7 @@
archivaConfigControl.reset();
// page 2
- limits = new SearchResultLimits( 2 );
+ limits = new SearchResultLimits( 1 );
limits.setPageSize( 1 );
archivaConfigControl.expectAndReturn(
archivaConfig.getConfiguration(), config );
Modified:
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java?rev=739197&r1=739196&r2=739197&view=diff
==============================================================================
---
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java
(original)
+++
archiva/branches/archiva-nexus-indexer/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java
Fri Jan 30 07:32:35 2009
@@ -25,6 +25,8 @@
import java.util.List;
import java.util.Map;
+import org.apache.archiva.indexer.search.RepositorySearch;
+import org.apache.archiva.indexer.search.RepositorySearchException;
import org.apache.archiva.indexer.util.SearchUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
@@ -49,6 +51,9 @@
import org.apache.maven.archiva.common.utils.VersionUtil;
import org.apache.maven.archiva.database.constraints.UniqueVersionConstraint;
import org.apache.maven.archiva.indexer.search.SearchResultHit;
+import org.apache.struts2.ServletActionContext;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.WebApplicationContextUtils;
/**
* Search all indexed fields by the given criteria.
@@ -130,6 +135,8 @@
private boolean fromResultsPage;
+ private RepositorySearch nexusSearch;
+
public boolean isFromResultsPage()
{
return fromResultsPage;
@@ -255,7 +262,16 @@
else
{
completeQueryString = "";
- results = crossRepoSearch.searchForTerm( getPrincipal(),
selectedRepos, q, limits );
+ //results = crossRepoSearch.searchForTerm( getPrincipal(),
selectedRepos, q, limits );
+ try
+ {
+ results = getNexusSearch().search( getPrincipal(),
selectedRepos, q, limits );
+ }
+ catch ( RepositorySearchException e )
+ {
+ addActionError( e.getMessage() );
+ return ERROR;
+ }
}
}
@@ -579,4 +595,20 @@
{
this.className = className;
}
+
+ public RepositorySearch getNexusSearch()
+ {
+ if( nexusSearch == null )
+ {
+ WebApplicationContext wac =
+ WebApplicationContextUtils.getRequiredWebApplicationContext(
ServletActionContext.getServletContext() );
+ nexusSearch = ( RepositorySearch ) wac.getBean( "nexusSearch" );
+ }
+ return nexusSearch;
+ }
+
+ public void setNexusSearch( RepositorySearch nexusSearch )
+ {
+ this.nexusSearch = nexusSearch;
+ }
}