• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Java Requirement类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中org.osgi.resource.Requirement的典型用法代码示例。如果您正苦于以下问题:Java Requirement类的具体用法?Java Requirement怎么用?Java Requirement使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



Requirement类属于org.osgi.resource包,在下文中一共展示了Requirement类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: parseRequireBundle

import org.osgi.resource.Requirement; //导入依赖的package包/类
static List<Requirement> parseRequireBundle(String header) throws IllegalArgumentException {
	if (header == null) {
           return Collections.emptyList();
       }

	Clause[] clauses = Parser.parseHeader(header);
	List<Requirement> requirements = new ArrayList<>(clauses.length);
	for (Clause requireClause : clauses) {
		String bsn = requireClause.getName();
		String versionRangeStr = requireClause.getAttribute(org.osgi.framework.Constants.BUNDLE_VERSION_ATTRIBUTE);

		String filter = toBundleFilter(bsn, versionRangeStr);
		Requirement requirement = new RequirementBuilderImpl(BundleNamespace.BUNDLE_NAMESPACE)
			.addDirective(Namespace.REQUIREMENT_FILTER_DIRECTIVE, filter)
			.build();
		requirements.add(requirement);
	}
	return requirements;
}
 
开发者ID:opensecuritycontroller,项目名称:osc-core,代码行数:20,代码来源:RequirementParser.java


示例2: parseRequireCapability

import org.osgi.resource.Requirement; //导入依赖的package包/类
static List<Requirement> parseRequireCapability(String header) throws IllegalArgumentException {
	if (header == null) {
           return Collections.emptyList();
       }

	Clause[] clauses = Parser.parseHeader(header);
	List<Requirement> reqs = new ArrayList<>(clauses.length);
	for (Clause clause : clauses) {
		String namespace = clause.getName();

		RequirementBuilderImpl reqBuilder = new RequirementBuilderImpl(namespace);
		for (Attribute attrib : clause.getAttributes()) {
               reqBuilder.addAttribute(attrib.getName(), attrib.getValue());
           }
		for (Directive directive : clause.getDirectives()) {
               reqBuilder.addDirective(directive.getName(), directive.getValue());
           }

		reqs.add(reqBuilder.build());
	}

	return reqs;
}
 
开发者ID:opensecuritycontroller,项目名称:osc-core,代码行数:24,代码来源:RequirementParser.java


示例3: getRequiredPackages

import org.osgi.resource.Requirement; //导入依赖的package包/类
public static List<PackageQuery> getRequiredPackages(Bundle bundle) throws BundleException {
	List<PackageQuery> rtn=new ArrayList<PackageQuery>();
	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;
	PackageQuery pd;
	while(it.hasNext()){
		r = it.next();
		Iterator<Entry<String, String>> iit = r.getDirectives().entrySet().iterator();
		inner:while(iit.hasNext()){
			e = iit.next();
			if(!"filter".equals(e.getKey())) continue;
			value=e.getValue();
			pd=toPackageQuery(value);
			if(pd!=null)rtn.add(pd);
		}
	}
	return rtn;
}
 
开发者ID:lucee,项目名称:Lucee,代码行数:23,代码来源:OSGiUtil.java


示例4: constructInputRequirements

import org.osgi.resource.Requirement; //导入依赖的package包/类
private void constructInputRequirements() {
	List<Requirement> requires = runModel.getRunRequires();
	if (requires == null || requires.isEmpty()) {
		inputRequirementsResource = null;
	} else {
		ResourceBuilder resBuilder = new ResourceBuilder();
		CapReqBuilder identity = new CapReqBuilder(
				IdentityNamespace.IDENTITY_NAMESPACE).addAttribute(
				IdentityNamespace.IDENTITY_NAMESPACE,
				IDENTITY_INITIAL_RESOURCE);
		resBuilder.addCapability(identity);

		for (Requirement req : requires) {
			resBuilder.addRequirement(req);
		}

		inputRequirementsResource = resBuilder.build();
	}
}
 
开发者ID:digimead,项目名称:sbt-osgi-manager,代码行数:20,代码来源:BndrunResolveContext.java


示例5: matches

import org.osgi.resource.Requirement; //导入依赖的package包/类
private boolean matches(Requirement requirement, Capability selfCap) {
	boolean match = false;
	try {
		String filterStr = requirement.getDirectives().get(
				Namespace.REQUIREMENT_FILTER_DIRECTIVE);
		org.osgi.framework.Filter filter = filterStr != null ? org.osgi.framework.FrameworkUtil
				.createFilter(filterStr) : null;

		if (filter == null)
			match = true;
		else
			match = filter.match(new MapToDictionaryAdapter(selfCap
					.getAttributes()));
	} catch (InvalidSyntaxException e) {
		log.log(LogService.LOG_ERROR,
				"Invalid filter directive on requirement: " + requirement,
				e);
	}
	return match;
}
 
开发者ID:digimead,项目名称:sbt-osgi-manager,代码行数:21,代码来源:BndrunResolveContext.java


示例6: getContractors

import org.osgi.resource.Requirement; //导入依赖的package包/类
@Override
public Set<String> getContractors(Requirement requirement) {
	FilterParser fp = new FilterParser();
	String filter = requirement.getDirectives().get(Namespace.REQUIREMENT_FILTER_DIRECTIVE);
	if (filter != null) {
		Expression expression = fp.parse(filter);
		NitriteVistor nitriteVistor = new NitriteVistor(requirement.getNamespace());
		Filter f = expression.visit(nitriteVistor);

		if (f == null) {
			return Collections.emptySet();
		}

		boolean knownRequirement = false;
		for (String string : supportedNamespaces) {
			if (filter.contains(string)) {
				knownRequirement = true;
				break;
			}
		}

		if (!knownRequirement) {
			return Collections.emptySet();
		}

		NitriteCollection collection = db.getCollection("contracts");
		Cursor cursor = collection.find(f);
		Set<String> result = new HashSet<>();
		for (Document document : cursor) {
			result.add(document.get("contractor", String.class));
		}
		return result;
	}
	return Collections.emptySet();
}
 
开发者ID:commsen,项目名称:EM,代码行数:36,代码来源:NitriteContractStorage.java


示例7: match

import org.osgi.resource.Requirement; //导入依赖的package包/类
static boolean match(Requirement requirement, Capability capability, LogService log) {
	// Namespace MUST match
	if (!requirement.getNamespace().equals(capability.getNamespace())) {
           return false;
       }

	// If capability effective!=resolve then it matches only requirements with same effective
	String capabilityEffective = capability.getDirectives().get(Namespace.CAPABILITY_EFFECTIVE_DIRECTIVE);
	if (capabilityEffective != null) {
		String requirementEffective = requirement.getDirectives().get(Namespace.REQUIREMENT_EFFECTIVE_DIRECTIVE);
		if (!capabilityEffective.equals(Namespace.EFFECTIVE_RESOLVE) && !capabilityEffective.equals(requirementEffective)) {
               return false;
           }
	}

	String filterStr = requirement.getDirectives().get(Namespace.REQUIREMENT_FILTER_DIRECTIVE);
       if (filterStr == null) {
           return true; // no filter, the requirement always matches
       }

	try {
		Filter filter = FrameworkUtil.createFilter(filterStr);
		return filter.matches(capability.getAttributes());
	} catch (InvalidSyntaxException e) {
		if (log != null) {
			Resource resource = requirement.getResource();
			String id = resource != null ? getIdentity(resource) : "<unknown>";
			log.log(LogService.LOG_ERROR, String.format("Invalid filter syntax in requirement from resource %s: %s", id, filterStr), e);
		}
		return false;
	}
}
 
开发者ID:opensecuritycontroller,项目名称:osc-core,代码行数:33,代码来源:PluginResolveContext.java


示例8: addRequirement

import org.osgi.resource.Requirement; //导入依赖的package包/类
void addRequirement(Requirement req) {
	if (req.getResource() != this) {
           req = RequirementImpl.copy(req, this);
       }

	List<Requirement> list = this.requirements.get(req.getNamespace());
	if (list == null) {
		list = new LinkedList<>();
		this.requirements.put(req.getNamespace(), list);
	}
	list.add(req);
}
 
开发者ID:opensecuritycontroller,项目名称:osc-core,代码行数:13,代码来源:ResourceImpl.java


示例9: getRequirements

import org.osgi.resource.Requirement; //导入依赖的package包/类
@Override
public List<Requirement> getRequirements(String namespace) {
	List<Requirement> result;
	if (namespace == null) {
		result = new LinkedList<>();
		for (List<Requirement> list : this.requirements.values()) {
               result.addAll(list);
           }
	} else {
		result = this.requirements.get(namespace);
	}
	return result != null ? result : Collections.emptyList();
}
 
开发者ID:opensecuritycontroller,项目名称:osc-core,代码行数:14,代码来源:ResourceImpl.java


示例10: testParseRequireBundle

import org.osgi.resource.Requirement; //导入依赖的package包/类
@Test
public void testParseRequireBundle() {
	List<Requirement> actual = RequirementParser.parseRequireBundle("foo;bundle-version=1.0.0, bar;bundle-version=\"[1.0,1.1)\", baz;bundle-version=\"[2.0,3.0)\", fnarg");
	
	assertEquals(4, actual.size());
	assertEquals("(&(osgi.wiring.bundle=foo)(bundle-version>=1.0.0))", actual.get(0).getDirectives().get("filter"));
	assertEquals("(&(osgi.wiring.bundle=bar)(bundle-version>=1.0.0)(!(bundle-version>=1.1.0)))", actual.get(1).getDirectives().get("filter"));
	assertEquals("(&(osgi.wiring.bundle=baz)(bundle-version>=2.0.0)(!(bundle-version>=3.0.0)))", actual.get(2).getDirectives().get("filter"));
	assertEquals("(osgi.wiring.bundle=fnarg)", actual.get(3).getDirectives().get("filter"));
}
 
开发者ID:opensecuritycontroller,项目名称:osc-core,代码行数:11,代码来源:RequirementParserTest.java


示例11: testParseRequireCapability

import org.osgi.resource.Requirement; //导入依赖的package包/类
@Test
public void testParseRequireCapability() {
	List<Requirement> actual = RequirementParser.parseRequireCapability("osgi.extender; filter:=\"(&(osgi.extender=osgi.ds)(version>=1.0))\"; effective:=active, osgi.service; filter:=\"(objectClass=org.example.Foo)\"");
	
	assertEquals(2, actual.size());
	assertEquals("(&(osgi.extender=osgi.ds)(version>=1.0))", actual.get(0).getDirectives().get("filter"));
	assertEquals("active", actual.get(0).getDirectives().get("effective"));
}
 
开发者ID:opensecuritycontroller,项目名称:osc-core,代码行数:9,代码来源:RequirementParserTest.java


示例12: createMatchingData

import org.osgi.resource.Requirement; //导入依赖的package包/类
@Override
public RepositoryResourceMatchingData createMatchingData() {
    ExtendedMatchingData matchingData = new ExtendedMatchingData();
    matchingData.setType(getType());
    matchingData.setName(getName());
    matchingData.setProviderName(getProviderName());

    if ((getType().equals(ResourceType.INSTALL))) {
        matchingData.setVersion(getProductVersion());
    } else {
        // Regen the appliesToFilterInfo as the level of code that generated each resource may
        // be different and give us different results so regen it now.
        try {
            List<AppliesToFilterInfo> atfi = generateAppliesToFilterInfoList(false);
            matchingData.setAtfi(atfi);
        } catch (RepositoryResourceCreationException e) {
            // This should only be thrown if validate editions is set to true, for us its set to false
        }
    }

    for (Requirement requirement : getGenericRequirements()) {
        if (requirement.getNamespace().equals("osgi.native")) {
            matchingData.setPlatformInfo(requirement.getDirectives().get("filter"));
        }
    }

    return matchingData;
}
 
开发者ID:WASdev,项目名称:tool.lars,代码行数:29,代码来源:ProductResourceImpl.java


示例13: getGenericRequirements

import org.osgi.resource.Requirement; //导入依赖的package包/类
/** {@inheritDoc} */
@Override
public Collection<Requirement> getGenericRequirements() {
    //converts a string format of the generic requirements into a collection of Requirement objects
    String requirementStr = _asset.getWlpInformation().getGenericRequirements();
    Collection<Requirement> requirements = new HashSet<Requirement>();
    List<GenericMetadata> genMetList = ManifestHeaderProcessor.parseRequirementString(requirementStr);
    for (GenericMetadata genMet : genMetList) {
        Requirement req = new GenericRequirement(genMet);
        requirements.add(req);
    }
    return requirements;
}
 
开发者ID:WASdev,项目名称:tool.lars,代码行数:14,代码来源:ProductRelatedResourceImpl.java


示例14: findProviders

import org.osgi.resource.Requirement; //导入依赖的package包/类
public Map<Requirement,Collection<Capability>> findProviders(Collection< ? extends Requirement> requirements) {
    Map<Requirement,Collection<Capability>> result = new HashMap<Requirement,Collection<Capability>>();
    for (Requirement requirement : requirements) {
        List<Capability> matches = new LinkedList<Capability>();
        result.put(requirement, matches);

        capIndex.appendMatchingCapabilities(requirement, matches);
    }
    return result;
}
 
开发者ID:digimead,项目名称:sbt-osgi-manager,代码行数:11,代码来源:FrameworkResourceRepository.java


示例15: isEffective

import org.osgi.resource.Requirement; //导入依赖的package包/类
@Override
public boolean isEffective(Requirement requirement) {
	init();
	String effective = requirement.getDirectives().get(
			Namespace.REQUIREMENT_EFFECTIVE_DIRECTIVE);
	if (effective == null || Namespace.EFFECTIVE_RESOLVE.equals(effective))
		return true;

	if (effectiveSet != null && effectiveSet.contains(effective))
		return true;

	return false;
}
 
开发者ID:digimead,项目名称:sbt-osgi-manager,代码行数:14,代码来源:BndrunResolveContext.java


示例16: copy

import org.osgi.resource.Requirement; //导入依赖的package包/类
public static RequirementImpl copy(Requirement req, Resource resource) {
	return new RequirementImpl(req.getNamespace(), req.getDirectives(), req.getAttributes(), resource);
}
 
开发者ID:opensecuritycontroller,项目名称:osc-core,代码行数:4,代码来源:RequirementImpl.java


示例17: findProviders

import org.osgi.resource.Requirement; //导入依赖的package包/类
@Override
public List<Capability> findProviders(Requirement requirement) {
	List<Capability> resultCaps = new LinkedList<>();

	// Find from installed bundles
	Bundle[] bundles = this.bundleContext.getBundles();
	for (Bundle bundle : bundles) {
           if (bundle.getState() == Bundle.UNINSTALLED) {
               continue; // Skip UNINSTALLED bundles
           }

		BundleRevision revision = bundle.adapt(BundleRevision.class);
		List<Capability> bundleCaps = revision.getCapabilities(requirement.getNamespace());
		if (bundleCaps != null) {
               for (Capability bundleCap : bundleCaps) {
               	if (match(requirement, bundleCap, this.log)) {
                       resultCaps.add(bundleCap);
                   }
               }
           }
	}

	// Find from repositories
	for (Entry<URI, Repository> repoEntry : this.repositories.entrySet()) {
		Repository repository = repoEntry.getValue();
		Map<Requirement, Collection<Capability>> providers = repository.findProviders(Collections.singleton(requirement));
		if (providers != null) {
			Collection<Capability> repoCaps = providers.get(requirement);
			if (repoCaps != null) {
				resultCaps.addAll(repoCaps);

				for (Capability repoCap : repoCaps) {
					// Get the list of physical URIs for this resource.
					Resource resource = repoCap.getResource();
					// Keep track of which repositories own which resources.
					this.resourceRepositoryMap.putIfAbsent(resource, repository);

					// Resolve the Resource's URI relative to the Repository Index URI and save for later.
					URI repoIndexUri = repoEntry.getKey();
					URI resolvedUri = resolveResourceLocation(resource, repoIndexUri);
					if (resolvedUri != null) {
						// Cache the resolved URI into the resource URI map, which will be used after resolve.
						this.resourceLocationMap.put(resource, resolvedUri.toString());
					}
				}
			}
		}
	}
	return resultCaps;
}
 
开发者ID:opensecuritycontroller,项目名称:osc-core,代码行数:51,代码来源:PluginResolveContext.java


示例18: isEffective

import org.osgi.resource.Requirement; //导入依赖的package包/类
@Override
public boolean isEffective(Requirement requirement) {
	return true;
}
 
开发者ID:opensecuritycontroller,项目名称:osc-core,代码行数:5,代码来源:PluginResolveContext.java


示例19: getRequirements

import org.osgi.resource.Requirement; //导入依赖的package包/类
public Collection<Requirement> getRequirements() {
    return Collections.unmodifiableCollection(this.requirements);
}
 
开发者ID:opensecuritycontroller,项目名称:osc-core,代码行数:4,代码来源:ResolveRequest.java


示例20: analyseFile

import org.osgi.resource.Requirement; //导入依赖的package包/类
private ResolveRequest analyseFile(File file) throws IOException {
    log(LogService.LOG_INFO, null, "Resolving bundle archive: %s", file.getAbsolutePath());

    String fileUriStr = file.toURI().toString();
    String indexUriStr;
    String name;
    String symbolicName;
    String version = "";

    List<Requirement> requirements = new LinkedList<>();
    try (JarFile jar = new JarFile(file)) {
        Attributes manifestAttribs = jar.getManifest().getMainAttributes();

        symbolicName = manifestAttribs.getValue(Constants.DEPLOYMENT_SYMBOLIC_NAME);
        if (symbolicName == null) {
            symbolicName = file.getName();
        }

        name = manifestAttribs.getValue(Constants.DEPLOYMENT_NAME);
        if (name == null) {
            name = symbolicName;
        }

        version = manifestAttribs.getValue(Constants.DEPLOYMENT_VERSION);
        if (version == null) {
            version = UNKNOWN_DEPLOYMENT_VERSION;
        }
        requirements.addAll(RequirementParser.parseRequireBundle(manifestAttribs.getValue(org.osgi.framework.Constants.REQUIRE_BUNDLE)));
        requirements.addAll(RequirementParser.parseRequireCapability(manifestAttribs.getValue(org.osgi.framework.Constants.REQUIRE_CAPABILITY)));
        if (requirements.isEmpty()) {
            throw new IllegalArgumentException(String.format("Missing %s or %s header in manifest in %s", org.osgi.framework.Constants.REQUIRE_BUNDLE, org.osgi.framework.Constants.REQUIRE_CAPABILITY, file.getAbsolutePath()));
        }

        JarEntry indexEntry = findEntry(jar, Constants.INDEX_FILE, Constants.DEFAULT_INDEX_FILE);
        if (indexEntry == null) {
            throw new IllegalArgumentException("Missing index entry in " + file.getAbsolutePath());
        }
        indexUriStr = "jar:" + fileUriStr + "!/" + indexEntry.getName();
    }

    try {
        ResolveRequest request = new ResolveRequest(name, symbolicName, version,
                Collections.singletonList(new URI(indexUriStr)), requirements);

        return request;
    } catch (URISyntaxException e) {
        throw new IOException("Unable to convert index URI " + indexUriStr, e);
    }
}
 
开发者ID:opensecuritycontroller,项目名称:osc-core,代码行数:50,代码来源:DeploymentInstaller.java



注:本文中的org.osgi.resource.Requirement类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java Page类代码示例发布时间:2022-05-22
下一篇:
Java ApplicationAttemptHistoryData类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap