Package org.apache.maven.archiva.consumers.lucene

Source Code of org.apache.maven.archiva.consumers.lucene.IndexJavaPublicMethodsConsumerTest

package org.apache.maven.archiva.consumers.lucene;

/*
* 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 java.util.ArrayList;
import java.util.List;

import org.apache.maven.archiva.configuration.ArchivaConfiguration;
import org.apache.maven.archiva.configuration.Configuration;
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.maven.archiva.consumers.DatabaseUnprocessedArtifactConsumer;
import org.apache.maven.archiva.indexer.RepositoryContentIndexFactory;
import org.apache.maven.archiva.indexer.search.SearchResultLimits;
import org.apache.maven.archiva.indexer.search.SearchResults;
import org.apache.maven.archiva.model.ArchivaArtifact;
import org.apache.maven.archiva.model.ArchivaArtifactModel;
import org.codehaus.plexus.spring.PlexusInSpringTestCase;

/**
*
* @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
* @version
*
*/
public class IndexJavaPublicMethodsConsumerTest
    extends PlexusInSpringTestCase
{
    DatabaseUnprocessedArtifactConsumer indexMethodsConsumer;
   
    IndexJavaPublicMethodsCrossRepositorySearch searcher;
   
    private RepositoryContentIndexFactory indexFactory;
   
    public void setUp()
        throws Exception
    {
        super.setUp();
        indexMethodsConsumer =
            (DatabaseUnprocessedArtifactConsumer) lookup( DatabaseUnprocessedArtifactConsumer.class,
                                                          "index-public-methods" );
               
        ManagedRepositoryConfiguration config = new ManagedRepositoryConfiguration();
        config.setId( "test-repo" );
        config.setLayout( "default" );
        config.setLocation( getBasedir() + "/target/test-classes/test-repo" );
        config.setName( "Test Repository" );
       
        addRepoToConfiguration( "index-public-methods", config );
       
        indexFactory = (RepositoryContentIndexFactory) lookup (RepositoryContentIndexFactory.class, "lucene" );
        searcher = new IndexJavaPublicMethodsCrossRepositorySearch( config, indexFactory );
    }
   
    private void addRepoToConfiguration( String configHint, ManagedRepositoryConfiguration repoConfiguration )
        throws Exception
    {
        ArchivaConfiguration archivaConfiguration =
            (ArchivaConfiguration) lookup( ArchivaConfiguration.class, configHint );
        Configuration configuration = archivaConfiguration.getConfiguration();
        configuration.removeManagedRepository( configuration.findManagedRepositoryById( repoConfiguration.getId() ) );
        configuration.addManagedRepository( repoConfiguration );
    }
   
    public void testJarPublicMethods()
        throws Exception
    {
        ArchivaArtifact artifact =
            createArtifact( "org.apache.archiva", "archiva-index-methods-jar-test", "1.0", "jar" );
        indexMethodsConsumer.processArchivaArtifact( artifact );     
       
        List<String> selectedRepos = new ArrayList<String>();
        selectedRepos.add( "test-repo" );
       
        // search for class names
        SearchResults results = searcher.searchForBytecode( "", selectedRepos, "FirstPackageApp", new SearchResultLimits( 0 ) );
        assertEquals( 1, results.getTotalHits() );
       
        results = searcher.searchForBytecode( "", selectedRepos, "SecondPackageApp", new SearchResultLimits( 0 ) );
        assertEquals( 1, results.getTotalHits() );
      
        // search for public methods
        results = searcher.searchForBytecode( "", selectedRepos, "appMethodOne", new SearchResultLimits( 0 ) );
        assertEquals( 1, results.getTotalHits() );
       
        // should return only the overridding public method in SecondPackageApp
        results = searcher.searchForBytecode( "", selectedRepos, "protectedMethod", new SearchResultLimits( 0 ) );
        assertEquals( 1, results.getTotalHits() );
              
        // should not return any private methods
        results = searcher.searchForBytecode( "", selectedRepos, "privMethod", new SearchResultLimits( 0 ) );
        assertEquals( 0, results.getTotalHits() );
       
        // test for public variables?
    }
   
    private ArchivaArtifact createArtifact( String groupId, String artifactId, String version, String type )
    {
        ArchivaArtifactModel model = new ArchivaArtifactModel();
        model.setGroupId( groupId );
        model.setArtifactId( artifactId );
        model.setVersion( version );
        model.setType( type );
        model.setRepositoryId( "test-repo" );

        return new ArchivaArtifact( model );
    }
}
TOP

Related Classes of org.apache.maven.archiva.consumers.lucene.IndexJavaPublicMethodsConsumerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.