java类org.osgi.framework.wiring.BundleRevision的实例源码

OSGiUtil.java 文件源码 项目:Lucee 阅读 23 收藏 0 点赞 0 评论 0
public static boolean isFragment(Bundle bundle) {
    return (bundle.adapt(BundleRevision.class).getTypes() & BundleRevision.TYPE_FRAGMENT) != 0;
}
OSGiUtil.java 文件源码 项目:Lucee 阅读 24 收藏 0 点赞 0 评论 0
public static List<BundleDefinition> getRequiredBundles(Bundle bundle) throws BundleException {
    List<BundleDefinition> rtn=new ArrayList<BundleDefinition>();
    BundleRevision br = bundle.adapt(BundleRevision.class);
    List<Requirement> requirements = br.getRequirements(null);
    Iterator<Requirement> it = requirements.iterator();
    Requirement r;
    Entry<String, String> e;
    String value,name;
    int index,start,end,op;
    BundleDefinition bd;

    while(it.hasNext()){
        r = it.next();
        Iterator<Entry<String, String>> iit = r.getDirectives().entrySet().iterator();
        while(iit.hasNext()){
            e = iit.next();
            if(!"filter".equals(e.getKey())) continue;
            value=e.getValue();
            // name
            index=value.indexOf("(osgi.wiring.bundle");
            if(index==-1) continue;
            start=value.indexOf('=',index);
            end=value.indexOf(')',index);
            if(start==-1 || end==-1 || end<start) continue;
            name=value.substring(start+1,end).trim();
            rtn.add(bd=new BundleDefinition(name));

            // version
            op=-1;
            index=value.indexOf("(bundle-version");
            if(index==-1) continue;
            end=value.indexOf(')',index);

            start=value.indexOf("<=",index);
            if(start!=-1 && start<end) {
                op=VersionDefinition.LTE;
                start+=2;
            }
            else {
                start=value.indexOf(">=",index);
                if(start!=-1 && start<end) {
                    op=VersionDefinition.GTE;
                    start+=2;
                }
                else {
                    start=value.indexOf("=",index);
                    if(start!=-1 && start<end) {
                        op=VersionDefinition.EQ;
                        start++;
                    }
                }
            }

            if(op==-1 || start==-1 || end==-1 || end<start) continue;
            bd.setVersion(op,value.substring(start,end).trim());

        }
    }
    return rtn;
    // (&(osgi.wiring.bundle=slf4j.api)(bundle-version>=1.6.4))

}
BundleInformation.java 文件源码 项目:package-drone 阅读 23 收藏 0 点赞 0 评论 0
public BundleInformation ( final Bundle bundle )
{
    this.bundle = bundle;
    this.bundleRevision = bundle.adapt ( BundleRevision.class );
}
BundleInformation.java 文件源码 项目:package-drone 阅读 25 收藏 0 点赞 0 评论 0
public BundleRevision getBundleRevision ()
{
    return this.bundleRevision;
}
BundleInformation.java 文件源码 项目:package-drone 阅读 22 收藏 0 点赞 0 评论 0
public boolean isFragment ()
{
    return ( this.bundleRevision.getTypes () & BundleRevision.TYPE_FRAGMENT ) > 0;
}
BundleCapabilityResource.java 文件源码 项目:everest 阅读 18 收藏 0 点赞 0 评论 0
/**
 * Constructor for bundle capability resource
 *
 * @param path
 * @param bundleCapability
 */
public BundleCapabilityResource(Path path, BundleWiring hostWiring, BundleCapability bundleCapability) {
    super(path.addElements(uniqueCapabilityId(bundleCapability)));
    m_capability = bundleCapability;
    isPackage = m_capability.getNamespace().equals(OsgiResourceUtils.PackageNamespace.PACKAGE_NAMESPACE);
    List<Relation> relations = new ArrayList<Relation>();
    // calculate wires coming from this capability
    BundleRevision revision = m_capability.getRevision();
    if (revision != null) {
        String bundleId = Long.toString(revision.getBundle().getBundleId());
        //BundleWiring wiring = revision.getWiring();
        BundleWiring wiring = hostWiring;
        if (wiring != null) {
            List<BundleWire> allWires = wiring.getProvidedWires(m_capability.getNamespace());
            for (BundleWire wire : allWires) {
                if (wire.getCapability().equals(m_capability)) {
                    // and add a relation link
                    m_wires.add(wire);
                    String wireId = uniqueWireId(wire);
                    Path wirePath = BundleResourceManager.getInstance().getPath().addElements(Long.toString(hostWiring.getBundle().getBundleId()),
                            BundleResource.WIRES_PATH,
                            wireId
                    );
                    relations.add(new DefaultRelation(wirePath, Action.READ, wireId));
                }
            }
        }

        if (isPackage) {
            // add relation to package
            String packageId = uniqueCapabilityId(m_capability);
            Path packagePath = PackageResourceManager.getInstance().getPath().addElements(packageId);
            relations.add(new DefaultRelation(packagePath, Action.READ, PACKAGE_RELATION));
            // add relation to bundle export package header
            Path exportPackagePath = BundleResourceManager.getInstance().getPath()
                    .addElements(bundleId, BundleHeadersResource.HEADERS_PATH, BundleHeadersResource.EXPORT_PACKAGE, packageId);
            relations.add(new DefaultRelation(exportPackagePath, Action.READ, BundleHeadersResource.EXPORT_PACKAGE));
        }
        setRelations(relations);
    }
}


问题


面经


文章

微信
公众号

扫码关注公众号