Author: oching
Date: Mon Jul 28 06:35:38 2008
New Revision: 680352
URL: http://svn.apache.org/viewvc?rev=680352&view=rev
Log:
[MRM-892]
-changed the implementation of search by class, package or method to use
specific keywords 'class:', 'package:' or 'method:' when searching
for them (ex. class:MyClass)
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexContentConsumer.java
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexJavaPublicMethodsConsumer.java
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/search/DefaultCrossRepositorySearch.java
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/search/SearchResults.java
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/search/DefaultCrossRepositorySearchTest.java
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/quickSearchForm.jspf
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexContentConsumer.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexContentConsumer.java?rev=680352&r1=680351&r2=680352&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexContentConsumer.java
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexContentConsumer.java
Mon Jul 28 06:35:38 2008
@@ -171,7 +171,8 @@
{
ArtifactReference ref = repository.toArtifactReference( path );
ArchivaArtifact artifact = new ArchivaArtifact( ref );
- record.setArtifact( artifact );
+ artifact.getModel().setRepositoryId( repository.getId() );
+ record.setArtifact( artifact );
}
catch ( LayoutException e )
{
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexJavaPublicMethodsConsumer.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexJavaPublicMethodsConsumer.java?rev=680352&r1=680351&r2=680352&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexJavaPublicMethodsConsumer.java
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexJavaPublicMethodsConsumer.java
Mon Jul 28 06:35:38 2008
@@ -130,8 +130,7 @@
file.getAbsolutePath().endsWith( ".tar.gz" ) ||
file.getAbsolutePath().endsWith( ".tar.bz2" ) ||
file.getAbsolutePath().endsWith( ".car" ) ||
file.getAbsolutePath().endsWith( ".sar" ) ||
file.getAbsolutePath().endsWith( ".mar" ) ||
file.getAbsolutePath().endsWith( ".rar" ) )
- {
-
+ {
if( file.exists() )
{
List<String> files = readFilesInArchive( file );
@@ -141,6 +140,8 @@
// NOTE: what about public variables? should these be
indexed too?
RepositoryContentIndex bytecodeIndex =
repoIndexFactory.createBytecodeIndex( repoContent.getRepository() );
+ artifact.getModel().setRepositoryId( repoContent.getId() );
+
BytecodeRecord bytecodeRecord = new BytecodeRecord();
bytecodeRecord.setFilename( file.getName() );
bytecodeRecord.setClasses( mapOfClassesAndMethods.get(
CLASSES ) );
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/search/DefaultCrossRepositorySearch.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/search/DefaultCrossRepositorySearch.java?rev=680352&r1=680351&r2=680352&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/search/DefaultCrossRepositorySearch.java
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/search/DefaultCrossRepositorySearch.java
Mon Jul 28 06:35:38 2008
@@ -134,9 +134,7 @@
SearchResultLimits limits,
List<String> previousSearchTerms )
{
List<RepositoryContentIndex> indexes = getFileContentIndexes(
principal, selectedRepos );
- List<RepositoryContentIndex> bytecodeIndices = getBytecodeIndexes(
principal, selectedRepos );
- indexes.addAll( bytecodeIndices );
-
+
try
{
QueryParser parser = new FileContentHandlers().getQueryParser();
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/search/SearchResults.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/search/SearchResults.java?rev=680352&r1=680351&r2=680352&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/search/SearchResults.java
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/search/SearchResults.java
Mon Jul 28 06:35:38 2008
@@ -92,6 +92,7 @@
{
StringBuffer key = new StringBuffer();
+ key.append( StringUtils.defaultString(
artifact.getModel().getRepositoryId() ) ).append( ":" );
key.append( StringUtils.defaultString( artifact.getGroupId() )
).append( ":" );
key.append( StringUtils.defaultString( artifact.getArtifactId() ) );
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/search/DefaultCrossRepositorySearchTest.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/search/DefaultCrossRepositorySearchTest.java?rev=680352&r1=680351&r2=680352&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/search/DefaultCrossRepositorySearchTest.java
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/maven/archiva/indexer/search/DefaultCrossRepositorySearchTest.java
Mon Jul 28 06:35:38 2008
@@ -129,7 +129,7 @@
public void testSearchTerm_Org()
throws Exception
- {
+ {
CrossRepositorySearch search = lookupCrossRepositorySearch();
String expectedRepos[] = new String[] {
@@ -140,12 +140,12 @@
"org","org2","org3","org4","org5","org6","org7"
};
- assertSearchResults( expectedRepos, expectedResults, search, "org",
null );
+ assertSearchResults( expectedRepos, expectedResults, search, "org",
null, false );
}
public void testSearchTerm_Junit()
throws Exception
- {
+ {
CrossRepositorySearch search = lookupCrossRepositorySearch();
String expectedRepos[] = new String[] {
@@ -156,12 +156,12 @@
"junit","junit2","junit3"
};
- assertSearchResults( expectedRepos, expectedResults, search, "junit",
null );
+ assertSearchResults( expectedRepos, expectedResults, search, "junit",
null, false );
}
public void testSearchInvalidTerm()
throws Exception
- {
+ {
CrossRepositorySearch search = lookupCrossRepositorySearch();
String expectedRepos[] = new String[] {
@@ -172,12 +172,12 @@
// Nothing.
};
- assertSearchResults( expectedRepos, expectedResults, search,
"monosodium", null );
+ assertSearchResults( expectedRepos, expectedResults, search,
"monosodium", null, false );
}
public void testSearchWithinSearchResults()
throws Exception
- {
+ {
CrossRepositorySearch search = lookupCrossRepositorySearch();
String expectedRepos[] = new String[] {
@@ -189,7 +189,7 @@
};
// first search
- assertSearchResults( expectedRepos, expectedResults, search, "org",
null );
+ assertSearchResults( expectedRepos, expectedResults, search, "org",
null, false );
List<String> previousSearchTerms = new ArrayList<String>();
previousSearchTerms.add( "org" );
@@ -197,12 +197,12 @@
"org.apache.maven.archiva.record",
"org.apache.maven.archiva.record2",
"org.apache.maven.archiva.record3",
"org.apache.maven.archiva.record4",
"org.apache.maven.archiva.record5",
"org.apache.maven.archiva.record6",
- "org.apache.maven.archiva.record7"
+ "org.apache.maven.archiva.record7"
};
//second search
assertSearchResults( expectedRepos, secondSearchExpectedResults,
search, "org.apache.maven.archiva.record",
- previousSearchTerms );
+ previousSearchTerms, false );
previousSearchTerms.add( "org.apache.maven.archiva.record" );
String thirdSearchExpectedResults[] = new String[] {
@@ -210,11 +210,40 @@
};
//third search
- assertSearchResults( expectedRepos, thirdSearchExpectedResults,
search, "junit", previousSearchTerms );
+ assertSearchResults( expectedRepos, thirdSearchExpectedResults,
search, "junit", previousSearchTerms, false );
+ }
+
+ public void testSearchForClassesAndPackages()
+ throws Exception
+ {
+ CrossRepositorySearch search = lookupCrossRepositorySearch();
+
+ String expectedRepos[] = new String[] {
+ TEST_DEFAULT_REPO_ID
+ };
+
+ String expectedResults[] = new String[] {
+ "archiva-common-1.0.jar"
+ };
+
+ // class with packagename search
+ assertSearchResults( expectedRepos, expectedResults, search,
+ "org.apache.maven.archiva.common.utils.BaseFile",
null, true );
+ // class name search
+ assertSearchResults( expectedRepos, expectedResults, search,
+ "BaseFile", null, true );
+
+ String expectedMethodSearchResults[] = new String[] {
+ "continuum-webapp-1.0.3-SNAPSHOT.war"
+ };
+
+ // method search
+ assertSearchResults( expectedRepos, expectedMethodSearchResults,
search,
+
"org.apache.maven.continuum.web.action.BuildDefinitionAction.isBuildFresh",
null, true );
}
private void assertSearchResults( String expectedRepos[], String
expectedResults[], CrossRepositorySearch search,
- String term, List<String>
previousSearchTerms )
+ String term, List<String>
previousSearchTerms, boolean bytecode )
throws Exception
{
SearchResultLimits limits = new SearchResultLimits( 0 );
@@ -226,7 +255,14 @@
SearchResults results = null;
if( previousSearchTerms == null )
{
- results = search.searchForTerm( "guest", selectedRepos, term,
limits );
+ if( bytecode )
+ {
+ results = search.searchForBytecode( "guest", selectedRepos,
term, limits );
+ }
+ else
+ {
+ results = search.searchForTerm( "guest", selectedRepos, term,
limits );
+ }
}
else
{
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java?rev=680352&r1=680351&r2=680352&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java
Mon Jul 28 06:35:38 2008
@@ -90,6 +90,8 @@
private String completeQueryString;
private static final String COMPLETE_QUERY_STRING_SEPARATOR = ";";
+
+ private static final String[] BYTECODE_KEYWORDS = new String[] { "class:",
"package:", "method:" };
public String quickSearch()
throws MalformedURLException, RepositoryIndexException,
RepositoryIndexSearchException
@@ -110,14 +112,21 @@
return GlobalResults.ACCESS_TO_NO_REPOS;
}
- if( searchResultsOnly && !completeQueryString.equals( "" ) )
- {
- results = crossRepoSearch.searchForTerm( getPrincipal(),
selectedRepos, q, limits, parseCompleteQueryString() );
+ if( isBytecodeSearch( q ) )
+ {
+ results = crossRepoSearch.searchForBytecode( getPrincipal(),
selectedRepos, removeKeywords( q ), limits );
}
else
{
- completeQueryString = "";
- results = crossRepoSearch.searchForTerm( getPrincipal(),
selectedRepos, q, limits );
+ if( searchResultsOnly && !completeQueryString.equals( "" ) )
+ {
+ results = crossRepoSearch.searchForTerm( getPrincipal(),
selectedRepos, q, limits, parseCompleteQueryString() );
+ }
+ else
+ {
+ completeQueryString = "";
+ results = crossRepoSearch.searchForTerm( getPrincipal(),
selectedRepos, q, limits );
+ }
}
if ( results.isEmpty() )
@@ -310,4 +319,25 @@
{
this.completeQueryString = completeQueryString;
}
+
+ private boolean isBytecodeSearch( String queryString )
+ {
+ if( queryString.startsWith( BYTECODE_KEYWORDS[0] ) ||
queryString.startsWith( BYTECODE_KEYWORDS[1] ) ||
+ queryString.startsWith( BYTECODE_KEYWORDS[2] ) )
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ private String removeKeywords( String queryString )
+ {
+ String qString = StringUtils.uncapitalize( queryString );
+ qString = StringUtils.removeStart( queryString, BYTECODE_KEYWORDS[0] );
+ qString = StringUtils.removeStart( qString, BYTECODE_KEYWORDS[1] );
+ qString = StringUtils.removeStart( qString, BYTECODE_KEYWORDS[2] );
+
+ return qString;
+ }
}
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/quickSearchForm.jspf
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/quickSearchForm.jspf?rev=680352&r1=680351&r2=680352&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/quickSearchForm.jspf
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/quickSearchForm.jspf
Mon Jul 28 06:35:38 2008
@@ -32,7 +32,9 @@
</script>
<p>
- Enter your search terms. A variety of data will be searched for your
keywords.
+ Enter your search terms. A variety of data will be searched for your
keywords.<br/>
+ To search for java classes, packages or methods, append the keywords
"<i>class:</i>",
+ "<i>package:</i>" or "<i>method:</i>" before your query. Example,
class:MyClass
<ww:actionerror/>
</p>
</div>
\ No newline at end of file