Package org.apache.felix.obr.plugin

Source Code of org.apache.felix.obr.plugin.ExtractBindexInfo

/*
* 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.
*/
package org.apache.felix.obr.plugin;


import java.io.File;
import java.net.MalformedURLException;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.maven.plugin.MojoExecutionException;
import org.osgi.impl.bundle.obr.resource.BundleInfo;
import org.osgi.impl.bundle.obr.resource.CapabilityImpl;
import org.osgi.impl.bundle.obr.resource.RepositoryImpl;
import org.osgi.impl.bundle.obr.resource.RequirementImpl;
import org.osgi.impl.bundle.obr.resource.ResourceImpl;
import org.osgi.impl.bundle.obr.resource.VersionRange;


/**
* this class is used to configure bindex and get information built by bindex about targeted bundle.
* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
public class ExtractBindexInfo
{

    /**
     * attribute get from bindex which describe targeted resource.
     */
    private ResourceImpl m_resource;


    /**
     * configure bindex and build information.
     * @param repoFilename URI on OBR descriptor file
     * @param outFile path on targeted jar-file
     * @throws MojoExecutionException occurs if bindex configuration failed
     */
    public ExtractBindexInfo( URI repoFilename, String outFile ) throws MojoExecutionException
    {

        m_resource = null;
        RepositoryImpl repository = null;
        try
        {
            repository = new RepositoryImpl( new File( repoFilename ).getAbsoluteFile().toURL() );
        }
        catch ( MalformedURLException e )
        {
            e.printStackTrace();
            throw new MojoExecutionException( "MalformedURLException" );
        }
        BundleInfo info = null;
        try
        {
            info = new BundleInfo( repository, new File( outFile ) );
        }
        catch ( Exception e )
        {
            e.printStackTrace();
            throw new MojoExecutionException( "Exception" );
        }

        try
        {
            m_resource = info.build();
        }
        catch ( Exception e )
        {
            e.printStackTrace();
            throw new MojoExecutionException( "Exception" );
        }
    }


    /**
     * extract capabilities from bindex information.
     * @return bundle capabilities List
     */
    public List getCapabilities()
    {
        List list = new ArrayList();
        Collection res = m_resource.getCapabilityList();
        Iterator it = res.iterator();
        while ( it.hasNext() )
        {
            Capability capability = new Capability();
            CapabilityImpl ci = ( CapabilityImpl ) it.next();
            capability.setName( ci.getName() );
            // System.out.println(ci.getName()) ;
            if ( !( ci.getName().compareTo( "bundle" ) == 0 ) )
            {
                Map properties = ci.getProperties();
                for ( Iterator e = properties.entrySet().iterator(); e.hasNext(); )
                {
                    PElement p = new PElement();
                    Map.Entry entry = ( Map.Entry ) e.next();
                    String key = ( String ) entry.getKey();
                    List values = ( List ) entry.getValue();
                    for ( Iterator v = values.iterator(); v.hasNext(); )
                    {
                        Object value = v.next();
                        p.setN( key );
                        if ( value != null )
                        {
                            p.setV( value.toString() );
                        }
                        else
                        {
                            System.out.println( "Missing value " + key );
                        }
                        String type = null;
                        if ( value instanceof Number )
                        {
                            type = "number";
                        }
                        else
                        {
                            if ( value instanceof VersionRange )
                            {
                                type = "version";
                            }
                        }
                        if ( type != null )
                        {
                            p.setT( type );
                        }
                    }
                    capability.addP( p );
                }

                list.add( capability );
            }
        }
        return list;
    }


    /**
     * extract requirement from bindex information.
     * @return bundle requirement List
     */
    public List getRequirement()
    {
        List list = new ArrayList();
        Collection res = m_resource.getRequirementList();
        Iterator it = res.iterator();
        while ( it.hasNext() )
        {
            RequirementImpl ci = ( RequirementImpl ) it.next();
            Require require = new Require();

            require.setExtend( String.valueOf( ci.isExtend() ) );
            require.setMultiple( String.valueOf( ci.isMultiple() ) );
            require.setOptional( String.valueOf( ci.isOptional() ) );
            require.setName( ci.getName() );
            require.setFilter( ci.getFilter() );
            require.setValue( ci.getComment() );
            list.add( require );
        }
        return list;
    }


    /**
     * extract symbolic name from bindex information.
     * @return bundle symbolic name
     */
    public String getSymbolicName()
    {
        return m_resource.getSymbolicName();
    }


    /**
     * extract version from bindex information.
     * @return bundle version
     */
    public String getVersion()
    {
        if ( m_resource.getVersion() != null )
        {
            return m_resource.getVersion().toString();
        }

        return null;
    }


    /**
     * extract presentation name from bindex information.
     * @return bundle presentation name
     */
    public String getPresentationName()
    {
        return m_resource.getPresentationName();
    }


    /**
     * extract copyright from bindex information.
     * @return bundle copyright
     */
    public String getCopyright()
    {
        return m_resource.getCopyright();
    }


    /**
     * extract description from bindex information.
     * @return bundle description
     */
    public String getDescription()
    {
        return m_resource.getDescription();
    }


    /**
     * extract documentation from bindex information.
     * @return bundle documentation
     */
    public String getDocumentation()
    {
        if ( m_resource.getDocumentation() != null )
        {
            return m_resource.getDocumentation().toString();
        }

        return null;
    }


    /**
     * extract license from bindex information.
     * @return bundle license
     */
    public String getLicense()
    {
        if ( m_resource.getLicense() != null )
        {
            return m_resource.getLicense().toString();
        }

        return null;
    }


    /**
     * extract source from bindex information.
     * @return bundle source
     */
    public String getSource()
    {
        if ( m_resource.getSource() != null )
        {
            return m_resource.getSource().toString();
        }

        return null;
    }


    /**
     * extract source from bindex information.
     * @return bundle source
     */
    public String getId()
    {
        if ( m_resource.getId() != null )
        {
            return m_resource.getId();
        }

        return null;
    }

}
TOP

Related Classes of org.apache.felix.obr.plugin.ExtractBindexInfo

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.