]> source.dussan.org Git - archiva.git/commitdiff
include osgi fields for advanced search action
authorOlivier Lamy <olamy@apache.org>
Sat, 1 Oct 2011 14:21:34 +0000 (14:21 +0000)
committerOlivier Lamy <olamy@apache.org>
Sat, 1 Oct 2011 14:21:34 +0000 (14:21 +0000)
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1177992 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-web/archiva-webapp/pom.xml
archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/SearchAction.java
pom.xml

index 342fba1931c6fd1d1bcf6fc2fc8830d6f8a223ff..b6d45be6e3512b5bdb508a0c257d2bc139a7387b 100644 (file)
         </plugins>
       </build>
     </profile>
+    <profile>
+      <!-- olamy profile to test tomcat plugin dev -->
+      <id>tdev</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.tomcat.maven</groupId>
+            <artifactId>tomcat6-maven-plugin</artifactId>
+            <version>2.0-SNAPSHOT</version>
+            <configuration>
+              <port>9091</port>
+              <path>/archiva</path>
+              <contextFile>${basedir}/src/test/tomcat/tomcat-context-archiva.xml</contextFile>
+              <systemProperties>
+                <plexus.home>${basedir}/appserver-base</plexus.home>
+                <appserver.base>${basedir}/appserver-base</appserver.base>
+                <appserver.home>${project.build.directory}/appserver-home</appserver.home>
+                <derby.system.home>${basedir}/appserver-base/logs</derby.system.home>
+                <redback.admin.creation.file>${basedir}/target/auto-admin-creation.properties</redback.admin.creation.file>
+              </systemProperties>
+            </configuration>
+            <dependencies>
+              <dependency>
+                <groupId>org.apache.derby</groupId>
+                <artifactId>derby</artifactId>
+                <version>10.1.3.1</version>
+              </dependency>
+              <dependency>
+                <groupId>javax.mail</groupId>
+                <artifactId>mail</artifactId>
+                <version>1.4</version>
+              </dependency>
+            </dependencies>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
   </profiles>
 </project>
index 13c74caf9b2ab90463be3dabed52f3867ab2f038..c107c9182461a48cd98e288c30ada056ff58a154 100644 (file)
@@ -86,7 +86,7 @@ public class SearchAction
 
     private static final String COMPLETE_QUERY_STRING_SEPARATOR = ";";
 
-    private List<String> managedRepositoryList = new ArrayList<String>();
+    private List<String> managedRepositoryList = new ArrayList<String>( );
 
     private String groupId;
 
@@ -96,6 +96,48 @@ public class SearchAction
 
     private String className;
 
+    /**
+     * contains osgi metadata Bundle-Version if available
+     *
+     * @since 1.4
+     */
+    private String bundleVersion;
+
+    /**
+     * contains osgi metadata Bundle-SymbolicName if available
+     *
+     * @since 1.4
+     */
+    private String bundleSymbolicName;
+
+    /**
+     * contains osgi metadata Export-Package if available
+     *
+     * @since 1.4
+     */
+    private String bundleExportPackage;
+
+    /**
+     * contains osgi metadata import package if available
+     *
+     * @since 1.4
+     */
+    private String bundleImportPackage;
+
+    /**
+     * contains osgi metadata name if available
+     *
+     * @since 1.4
+     */
+    private String bundleName;
+
+    /**
+     * contains osgi metadata Export-Service if available
+     *
+     * @since 1.4
+     */
+    private String bundleExportService;
+
     private int rowCount = 30;
 
     private String repositoryId;
@@ -113,7 +155,7 @@ public class SearchAction
 
     private String infoMessage;
 
-    public boolean isFromResultsPage()
+    public boolean isFromResultsPage( )
     {
         return fromResultsPage;
     }
@@ -123,7 +165,7 @@ public class SearchAction
         this.fromResultsPage = fromResultsPage;
     }
 
-    public boolean isFromFilterSearch()
+    public boolean isFromFilterSearch( )
     {
         return fromFilterSearch;
     }
@@ -133,27 +175,33 @@ public class SearchAction
         this.fromFilterSearch = fromFilterSearch;
     }
 
-    public void prepare()
+    public void prepare( )
     {
-        managedRepositoryList = getObservableRepos();
+        managedRepositoryList = getObservableRepos( );
 
-        if ( managedRepositoryList.size() > 0 )
+        if ( managedRepositoryList.size( ) > 0 )
         {
             managedRepositoryList.add( "all" );
         }
 
-        searchFields = new LinkedHashMap<String, String>();
+        searchFields = new LinkedHashMap<String, String>( );
         searchFields.put( "groupId", "Group ID" );
         searchFields.put( "artifactId", "Artifact ID" );
         searchFields.put( "version", "Version" );
         searchFields.put( "className", "Class/Package Name" );
         searchFields.put( "rowCount", "Row Count" );
+        searchFields.put( "bundleVersion", "OSGI Bundle Version" );
+        searchFields.put( "bundleSymbolicName", "OSGI Bundle-SymbolicName" );
+        searchFields.put( "bundleExportPackage", "OSGI Export-Package" );
+        searchFields.put( "bundleImportPackage", "OSGI import package" );
+        searchFields.put( "bundleName", "OSGI name" );
+        searchFields.put( "bundleExportService", "OSGI Export-Service" );
 
-        super.clearErrorsAndMessages();
-        clearSearchFields();
+        super.clearErrorsAndMessages( );
+        clearSearchFields( );
     }
 
-    private void clearSearchFields()
+    private void clearSearchFields( )
     {
         repositoryId = "";
         artifactId = "";
@@ -165,11 +213,13 @@ public class SearchAction
     }
 
     // advanced search MRM-90 -- filtered search
-    public String filteredSearch()
+    public String filteredSearch( )
         throws MalformedURLException
     {
-        if ( ( groupId == null || "".equals( groupId ) ) && ( artifactId == null || "".equals( artifactId ) )
-            && ( className == null || "".equals( className ) ) && ( version == null || "".equals( version ) ) )
+        if ( StringUtils.isBlank( groupId ) && StringUtils.isBlank( artifactId ) && StringUtils.isBlank( className )
+            && StringUtils.isBlank( version ) && StringUtils.isBlank( bundleExportPackage ) && StringUtils.isBlank(
+            bundleExportService ) && StringUtils.isBlank( bundleImportPackage ) && StringUtils.isBlank( bundleName )
+            && StringUtils.isBlank( bundleSymbolicName ) && StringUtils.isBlank( bundleVersion ) )
         {
             addActionError( "Advanced Search - At least one search criteria must be provided." );
             return INPUT;
@@ -184,12 +234,12 @@ public class SearchAction
 
         SearchResultLimits limits = new SearchResultLimits( currentPage );
         limits.setPageSize( rowCount );
-        List<String> selectedRepos = new ArrayList<String>();
+        List<String> selectedRepos = new ArrayList<String>( );
 
         if ( repositoryId == null || StringUtils.isBlank( repositoryId ) || "all".equals(
             StringUtils.stripToEmpty( repositoryId ) ) )
         {
-            selectedRepos = getObservableRepos();
+            selectedRepos = getObservableRepos( );
         }
         else
         {
@@ -203,33 +253,63 @@ public class SearchAction
 
         SearchFields searchFields = new SearchFields( groupId, artifactId, version, null, className, selectedRepos );
 
+        if ( StringUtils.isNotBlank( this.bundleExportPackage ) )
+        {
+            searchFields.setBundleExportPackage( this.bundleExportPackage );
+        }
+
+        if ( StringUtils.isNotBlank( this.bundleExportService ) )
+        {
+            searchFields.setBundleExportService( this.bundleExportService );
+        }
+
+        if ( StringUtils.isNotBlank( this.bundleImportPackage ) )
+        {
+            searchFields.setBundleImportPackage( this.bundleImportPackage );
+        }
+
+        if ( StringUtils.isNotBlank( this.bundleSymbolicName ) )
+        {
+            searchFields.setBundleSymbolicName( this.bundleSymbolicName );
+        }
+
+        if ( StringUtils.isNotBlank( this.bundleName ) )
+        {
+            searchFields.setBundleName( this.bundleName );
+        }
+
+        if ( StringUtils.isNotBlank( this.bundleVersion ) )
+        {
+            searchFields.setBundleVersion( this.bundleVersion );
+        }
+
         log.debug( "filteredSearch with searchFields {}", searchFields );
 
         // TODO: add packaging in the list of fields for advanced search (UI)?
         try
         {
-            results = getNexusSearch().search( getPrincipal(), searchFields, limits );
+            results = getNexusSearch( ).search( getPrincipal( ), searchFields, limits );
         }
         catch ( RepositorySearchException e )
         {
-            addActionError( e.getMessage() );
+            addActionError( e.getMessage( ) );
             return ERROR;
         }
 
-        if ( results.isEmpty() )
+        if ( results.isEmpty( ) )
         {
             addActionError( "No results found" );
             return INPUT;
         }
 
-        totalPages = results.getTotalHits() / limits.getPageSize();
+        totalPages = results.getTotalHits( ) / limits.getPageSize( );
 
-        if ( ( results.getTotalHits() % limits.getPageSize() ) != 0 )
+        if ( ( results.getTotalHits( ) % limits.getPageSize( ) ) != 0 )
         {
             totalPages = totalPages + 1;
         }
 
-        for ( SearchResultHit hit : results.getHits() )
+        for ( SearchResultHit hit : results.getHits( ) )
         {
             // fix version ?
             //hit.setVersion( VersionUtil.getBaseVersion( version ) );
@@ -240,7 +320,7 @@ public class SearchAction
     }
 
     @SuppressWarnings( "unchecked" )
-    public String quickSearch()
+    public String quickSearch( )
         throws MalformedURLException
     {
         /* TODO: give action message if indexing is in progress.
@@ -249,13 +329,13 @@ public class SearchAction
          * present in the full text search.
          */
 
-        assert q != null && q.length() != 0;
+        assert q != null && q.length( ) != 0;
 
         fromFilterSearch = false;
 
         SearchResultLimits limits = new SearchResultLimits( currentPage );
 
-        List<String> selectedRepos = getObservableRepos();
+        List<String> selectedRepos = getObservableRepos( );
         if ( CollectionUtils.isEmpty( selectedRepos ) )
         {
             return GlobalResults.ACCESS_TO_NO_REPOS;
@@ -268,29 +348,29 @@ public class SearchAction
             if ( searchResultsOnly && !completeQueryString.equals( "" ) )
             {
                 results =
-                    getNexusSearch().search( getPrincipal(), selectedRepos, q, limits, parseCompleteQueryString() );
+                    getNexusSearch( ).search( getPrincipal( ), selectedRepos, q, limits, parseCompleteQueryString( ) );
             }
             else
             {
                 completeQueryString = "";
-                results = getNexusSearch().search( getPrincipal(), selectedRepos, q, limits, null );
+                results = getNexusSearch( ).search( getPrincipal( ), selectedRepos, q, limits, null );
             }
         }
         catch ( RepositorySearchException e )
         {
-            addActionError( e.getMessage() );
+            addActionError( e.getMessage( ) );
             return ERROR;
         }
 
-        if ( results.isEmpty() )
+        if ( results.isEmpty( ) )
         {
             addActionError( "No results found" );
             return INPUT;
         }
 
-        totalPages = results.getTotalHits() / limits.getPageSize();
+        totalPages = results.getTotalHits( ) / limits.getPageSize( );
 
-        if ( ( results.getTotalHits() % limits.getPageSize() ) != 0 )
+        if ( ( results.getTotalHits( ) % limits.getPageSize( ) ) != 0 )
         {
             totalPages = totalPages + 1;
         }
@@ -303,7 +383,7 @@ public class SearchAction
         return SUCCESS;
     }
 
-    public String findArtifact()
+    public String findArtifact( )
         throws Exception
     {
         // TODO: give action message if indexing is in progress
@@ -314,28 +394,28 @@ public class SearchAction
             return INPUT;
         }
 
-        databaseResults = new ArrayList<ArtifactMetadata>();
-        RepositorySession repositorySession = repositorySessionFactory.createSession();
+        databaseResults = new ArrayList<ArtifactMetadata>( );
+        RepositorySession repositorySession = repositorySessionFactory.createSession( );
         try
         {
-            MetadataRepository metadataRepository = repositorySession.getRepository();
-            for ( String repoId : getObservableRepos() )
+            MetadataRepository metadataRepository = repositorySession.getRepository( );
+            for ( String repoId : getObservableRepos( ) )
             {
                 databaseResults.addAll( metadataRepository.getArtifactsByChecksum( repoId, q ) );
             }
         }
         finally
         {
-            repositorySession.close();
+            repositorySession.close( );
         }
 
-        if ( databaseResults.isEmpty() )
+        if ( databaseResults.isEmpty( ) )
         {
             addActionError( "No results found" );
             return INPUT;
         }
 
-        if ( databaseResults.size() == 1 )
+        if ( databaseResults.size( ) == 1 )
         {
             // 1 hit? return it's information directly!
             return ARTIFACT;
@@ -344,7 +424,7 @@ public class SearchAction
         return RESULTS;
     }
 
-    public String doInput()
+    public String doInput( )
     {
         return INPUT;
     }
@@ -366,9 +446,9 @@ public class SearchAction
         }
     }
 
-    private List<String> parseCompleteQueryString()
+    private List<String> parseCompleteQueryString( )
     {
-        List<String> parsedCompleteQueryString = new ArrayList<String>();
+        List<String> parsedCompleteQueryString = new ArrayList<String>( );
         String[] parsed = StringUtils.split( completeQueryString, COMPLETE_QUERY_STRING_SEPARATOR );
         CollectionUtils.addAll( parsedCompleteQueryString, parsed );
 
@@ -389,7 +469,7 @@ public class SearchAction
         return false;
     }
 
-    public String getQ()
+    public String getQ( )
     {
         return q;
     }
@@ -399,12 +479,12 @@ public class SearchAction
         this.q = q;
     }
 
-    public SearchResults getResults()
+    public SearchResults getResults( )
     {
         return results;
     }
 
-    public List<ArtifactMetadata> getDatabaseResults()
+    public List<ArtifactMetadata> getDatabaseResults( )
     {
         return databaseResults;
     }
@@ -414,12 +494,12 @@ public class SearchAction
         this.currentPage = page;
     }
 
-    public int getCurrentPage()
+    public int getCurrentPage( )
     {
         return currentPage;
     }
 
-    public int getTotalPages()
+    public int getTotalPages( )
     {
         return totalPages;
     }
@@ -429,7 +509,7 @@ public class SearchAction
         this.totalPages = totalPages;
     }
 
-    public boolean isSearchResultsOnly()
+    public boolean isSearchResultsOnly( )
     {
         return searchResultsOnly;
     }
@@ -439,7 +519,7 @@ public class SearchAction
         this.searchResultsOnly = searchResultsOnly;
     }
 
-    public String getCompleteQueryString()
+    public String getCompleteQueryString( )
     {
         return completeQueryString;
     }
@@ -449,9 +529,10 @@ public class SearchAction
         this.completeQueryString = completeQueryString;
     }
 
-    public Map<String, ManagedRepository> getManagedRepositories() throws RepositoryAdminException
+    public Map<String, ManagedRepository> getManagedRepositories( )
+        throws RepositoryAdminException
     {
-        return managedRepositoryAdmin.getManagedRepositoriesAsMap();
+        return managedRepositoryAdmin.getManagedRepositoriesAsMap( );
     }
 
     // wtf : does nothing ??
@@ -459,7 +540,7 @@ public class SearchAction
     {
     }
 
-    public String getGroupId()
+    public String getGroupId( )
     {
         return groupId;
     }
@@ -469,7 +550,7 @@ public class SearchAction
         this.groupId = groupId;
     }
 
-    public String getArtifactId()
+    public String getArtifactId( )
     {
         return artifactId;
     }
@@ -479,7 +560,7 @@ public class SearchAction
         this.artifactId = artifactId;
     }
 
-    public String getVersion()
+    public String getVersion( )
     {
         return version;
     }
@@ -489,7 +570,7 @@ public class SearchAction
         this.version = version;
     }
 
-    public int getRowCount()
+    public int getRowCount( )
     {
         return rowCount;
     }
@@ -499,7 +580,7 @@ public class SearchAction
         this.rowCount = rowCount;
     }
 
-    public boolean isFilterSearch()
+    public boolean isFilterSearch( )
     {
         return filterSearch;
     }
@@ -509,7 +590,7 @@ public class SearchAction
         this.filterSearch = filterSearch;
     }
 
-    public String getRepositoryId()
+    public String getRepositoryId( )
     {
         return repositoryId;
     }
@@ -519,7 +600,7 @@ public class SearchAction
         this.repositoryId = repositoryId;
     }
 
-    public List<String> getManagedRepositoryList()
+    public List<String> getManagedRepositoryList( )
     {
         return managedRepositoryList;
     }
@@ -529,7 +610,7 @@ public class SearchAction
         this.managedRepositoryList = managedRepositoryList;
     }
 
-    public String getClassName()
+    public String getClassName( )
     {
         return className;
     }
@@ -539,12 +620,12 @@ public class SearchAction
         this.className = className;
     }
 
-    public RepositorySearch getNexusSearch()
+    public RepositorySearch getNexusSearch( )
     {
         if ( nexusSearch == null )
         {
-            WebApplicationContext wac =
-                WebApplicationContextUtils.getRequiredWebApplicationContext( ServletActionContext.getServletContext() );
+            WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(
+                ServletActionContext.getServletContext( ) );
             nexusSearch = wac.getBean( "nexusSearch", RepositorySearch.class );
         }
         return nexusSearch;
@@ -555,7 +636,7 @@ public class SearchAction
         this.nexusSearch = nexusSearch;
     }
 
-    public Map<String, String> getSearchFields()
+    public Map<String, String> getSearchFields( )
     {
         return searchFields;
     }
@@ -565,7 +646,7 @@ public class SearchAction
         this.searchFields = searchFields;
     }
 
-    public String getInfoMessage()
+    public String getInfoMessage( )
     {
         return infoMessage;
     }
@@ -575,7 +656,7 @@ public class SearchAction
         this.infoMessage = infoMessage;
     }
 
-    public ManagedRepositoryAdmin getManagedRepositoryAdmin()
+    public ManagedRepositoryAdmin getManagedRepositoryAdmin( )
     {
         return managedRepositoryAdmin;
     }
@@ -584,4 +665,64 @@ public class SearchAction
     {
         this.managedRepositoryAdmin = managedRepositoryAdmin;
     }
+
+    public String getBundleVersion( )
+    {
+        return bundleVersion;
+    }
+
+    public void setBundleVersion( String bundleVersion )
+    {
+        this.bundleVersion = bundleVersion;
+    }
+
+    public String getBundleSymbolicName( )
+    {
+        return bundleSymbolicName;
+    }
+
+    public void setBundleSymbolicName( String bundleSymbolicName )
+    {
+        this.bundleSymbolicName = bundleSymbolicName;
+    }
+
+    public String getBundleExportPackage( )
+    {
+        return bundleExportPackage;
+    }
+
+    public void setBundleExportPackage( String bundleExportPackage )
+    {
+        this.bundleExportPackage = bundleExportPackage;
+    }
+
+    public String getBundleImportPackage( )
+    {
+        return bundleImportPackage;
+    }
+
+    public void setBundleImportPackage( String bundleImportPackage )
+    {
+        this.bundleImportPackage = bundleImportPackage;
+    }
+
+    public String getBundleName( )
+    {
+        return bundleName;
+    }
+
+    public void setBundleName( String bundleName )
+    {
+        this.bundleName = bundleName;
+    }
+
+    public String getBundleExportService( )
+    {
+        return bundleExportService;
+    }
+
+    public void setBundleExportService( String bundleExportService )
+    {
+        this.bundleExportService = bundleExportService;
+    }
 }
diff --git a/pom.xml b/pom.xml
index cccf2c3aa60e788f395441e4dddebb763f3156a4..6ef88e9d043e12d894ea0d230a57a2199603a40b 100644 (file)
--- a/pom.xml
+++ b/pom.xml
           </snapshots>
         </repository>
       </repositories>
+      <pluginRepositories>
+        <pluginRepository>
+          <id>apache.snapshots</id>
+          <name>Apache Snapshots</name>
+          <url>https://repository.apache.org/content/groups/snapshots-group/</url>
+          <releases>
+            <enabled>false</enabled>
+          </releases>
+          <snapshots>
+            <enabled>true</enabled>
+          </snapshots>
+        </pluginRepository>
+      </pluginRepositories>
     </profile>
     <!--
     jrebel tests doesn't work very well : too investigate
       </build>
     </profile>
     -->
+    <profile>
+      <!-- olamy profile to test tomcat plugin dev -->
+      <id>tdev</id>
+      <build>
+        <pluginManagement>
+          <plugins>
+            <plugin>
+              <groupId>org.apache.tomcat.maven</groupId>
+              <artifactId>tomcat6-maven-plugin</artifactId>
+              <version>2.0-SNAPSHOT</version>
+            </plugin>
+          </plugins>
+        </pluginManagement>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.tomcat.maven</groupId>
+            <artifactId>tomcat6-maven-plugin</artifactId>
+           </plugin>
+        </plugins>
+      </build>
+    </profile>
   </profiles>
 </project>