AnnotationHeaders(Analyzer analyzer) { this.analyzer = analyzer; // // The analyser has its own domain of type refs, so we need to get our // standard set to do fast comparisons // interesting.add(bundleLicenseRef = analyzer.getTypeRefFromFQN(BundleLicense.class.getName())); interesting.add(requireCapabilityRef = analyzer.getTypeRefFromFQN(RequireCapability.class.getName())); interesting.add(provideCapabilityRef = analyzer.getTypeRefFromFQN(ProvideCapability.class.getName())); interesting.add(bundleCategoryRef = analyzer.getTypeRefFromFQN(BundleCategory.class.getName())); interesting.add(bundleDocURLRef = analyzer.getTypeRefFromFQN(BundleDocURL.class.getName())); interesting.add(bundleDeveloperRef = analyzer.getTypeRefFromFQN(BundleDevelopers.class.getName())); interesting.add(bundleContributorRef = analyzer.getTypeRefFromFQN(BundleContributors.class.getName())); interesting.add(bundleCopyrightRef = analyzer.getTypeRefFromFQN(BundleCopyright.class.getName())); }
AnnotationHeaders(Analyzer analyzer) { this.analyzer = analyzer; // // The analyser has its own domain of type refs, so we need to get our // standard set to do fast comparisons // interesting.add(bundleLicenseRef = analyzer.getTypeRefFromFQN(BundleLicense.class.getName())); interesting.add(requireCapabilityRef = analyzer.getTypeRefFromFQN(RequireCapability.class.getName())); interesting.add(provideCapabilityRef = analyzer.getTypeRefFromFQN(ProvideCapability.class.getName())); interesting.add(bundleCategoryRef = analyzer.getTypeRefFromFQN(BundleCategory.class.getName())); interesting.add(bundleDocURLRef = analyzer.getTypeRefFromFQN(BundleDocURL.class.getName())); interesting.add(bundleDeveloperRef = analyzer.getTypeRefFromFQN(BundleDevelopers.class.getName())); interesting.add(bundleContributorRef = analyzer.getTypeRefFromFQN(BundleContributors.class.getName())); interesting.add(bundleCopyrightRef = analyzer.getTypeRefFromFQN(BundleCopyright.class.getName())); }
private boolean isProvider(TypeRef t) throws Exception { Clazz c = findClass(t); if (c == null) return false; if (c.annotations == null) return false; TypeRef pt = getTypeRefFromFQN(ProviderType.class.getName()); TypeRef r6pt = getTypeRefFromFQN("org.osgi.annotation.versioning.ProviderType"); boolean result = c.annotations.contains(pt) || c.annotations.contains(r6pt); return result; }
private boolean isProvider(TypeRef t) throws Exception { Clazz c = findClass(t); if (c == null) return false; if (c.annotations == null) return false; TypeRef pt = getTypeRefFromFQN(ProviderType.class.getName()); TypeRef r6pt = getTypeRefFromFQN("org.osgi.annotation.versioning.ProviderType"); boolean result = c.annotations.contains(pt) || c.annotations.contains(r6pt); return result; }
private boolean isProvider(TypeRef t) throws Exception { Clazz c = findClass(t); if (c == null) return false; if (c.annotations == null) return false; TypeRef pt = getTypeRefFromFQN(ProviderType.class.getName()); boolean result = c.annotations.contains(pt); return result; }
public boolean assignable(String annoService, String inferredService) { if (annoService == null || annoService.isEmpty() || inferredService == null || inferredService.isEmpty() || Object.class.getName() .equals(inferredService)) return true; try { Clazz annoServiceClazz = findClass(getTypeRefFromFQN(annoService)); Clazz inferredServiceClazz = findClass(getTypeRefFromFQN(inferredService)); return assignable(annoServiceClazz, inferredServiceClazz); } catch (Exception e) {} // we couldn't determine return true; }
public boolean assignable(String annoService, String inferredService) { if (annoService == null || annoService.isEmpty() || inferredService == null || inferredService.isEmpty() || Object.class.getName() .equals(inferredService)) return true; try { Clazz annoServiceClazz = findClass(getTypeRefFromFQN(annoService)); Clazz inferredServiceClazz = findClass(getTypeRefFromFQN(inferredService)); return assignable(annoServiceClazz, inferredServiceClazz); } catch (Exception e) {} // we couldn't determine return true; }
/** * @param cd * @param provides */ void provide(ComponentDef cd, String provides, String impl) { if (provides != null) { StringTokenizer st = new StringTokenizer(provides, ","); List<TypeRef> provide = new ArrayList<>(); while (st.hasMoreTokens()) { String interfaceName = st.nextToken(); TypeRef ref = analyzer.getTypeRefFromFQN(interfaceName); provide.add(ref); analyzer.referTo(ref); // TODO verifies the impl. class extends or implements the // interface } cd.service = provide.toArray(new TypeRef[0]); } }
/** * @param cd * @param provides */ void provide(ComponentDef cd, String provides, String impl) { if (provides != null) { StringTokenizer st = new StringTokenizer(provides, ","); List<TypeRef> provide = new ArrayList<TypeRef>(); while (st.hasMoreTokens()) { String interfaceName = st.nextToken(); TypeRef ref = analyzer.getTypeRefFromFQN(interfaceName); provide.add(ref); analyzer.referTo(ref); // TODO verifies the impl. class extends or implements the // interface } cd.service = provide.toArray(new TypeRef[provide.size()]); } }
/** * @param cd * @param provides */ void provide(ComponentDef cd, String provides, String impl) { if (provides != null) { StringTokenizer st = new StringTokenizer(provides, ","); List<TypeRef> provide = new ArrayList<TypeRef>(); while (st.hasMoreTokens()) { String interfaceName = st.nextToken(); TypeRef ref = analyzer.getTypeRefFromFQN(interfaceName); provide.add(ref); analyzer.referTo(ref); // TODO verifies the impl. class extends or implements the // interface } cd.service = provide.toArray(new TypeRef[provide.size()]); } }
/** * @param cd * @param provides */ void provide(ComponentDef cd, String provides, String impl) { if (provides != null) { StringTokenizer st = new StringTokenizer(provides, ","); List<TypeRef> provide = new ArrayList<>(); while (st.hasMoreTokens()) { String interfaceName = st.nextToken(); TypeRef ref = analyzer.getTypeRefFromFQN(interfaceName); provide.add(ref); analyzer.referTo(ref); // TODO verifies the impl. class extends or implements the // interface } cd.service = provide.toArray(new TypeRef[0]); } }
/** * @param cd * @param provides */ void provide(ComponentDef cd, String provides, String impl) { if (provides != null) { StringTokenizer st = new StringTokenizer(provides, ","); List<TypeRef> provide = new ArrayList<TypeRef>(); while (st.hasMoreTokens()) { String interfaceName = st.nextToken(); TypeRef ref = analyzer.getTypeRefFromFQN(interfaceName); provide.add(ref); analyzer.referTo(ref); // TODO verifies the impl. class extends or implements the // interface } cd.service = provide.toArray(new TypeRef[provide.size()]); } }
private void createComponentResource(Map<String,Map<String,String>> components, String name, Map<String,String> info) throws Exception { // We can override the name in the parameters if (info.containsKey(COMPONENT_NAME)) name = info.get(COMPONENT_NAME); // Assume the impl==name, but allow override String impl = name; if (info.containsKey(COMPONENT_IMPLEMENTATION)) impl = info.get(COMPONENT_IMPLEMENTATION); TypeRef implRef = analyzer.getTypeRefFromFQN(impl); // Check if such a class exists analyzer.referTo(implRef); boolean designate = designate(name, info.get(COMPONENT_DESIGNATE), false) || designate(name, info.get(COMPONENT_DESIGNATEFACTORY), true); // If we had a designate, we want a default configuration policy of // require. if (designate && info.get(COMPONENT_CONFIGURATION_POLICY) == null) info.put(COMPONENT_CONFIGURATION_POLICY, "require"); // We have a definition, so make an XML resources Resource resource = createComponentResource(name, impl, info); analyzer.getJar().putResource("OSGI-INF/" + name + ".xml", resource); components.put("OSGI-INF/" + name + ".xml", EMPTY); }
private void createComponentResource(Map<String,Map<String,String>> components, String name, Map<String,String> info) throws Exception { // We can override the name in the parameters if (info.containsKey(COMPONENT_NAME)) name = info.get(COMPONENT_NAME); // Assume the impl==name, but allow override String impl = name; if (info.containsKey(COMPONENT_IMPLEMENTATION)) impl = info.get(COMPONENT_IMPLEMENTATION); TypeRef implRef = analyzer.getTypeRefFromFQN(impl); // Check if such a class exists analyzer.referTo(implRef); boolean designate = designate(name, info.get(COMPONENT_DESIGNATE), false) || designate(name, info.get(COMPONENT_DESIGNATEFACTORY), true); // If we had a designate, we want a default configuration policy of // require. if (designate && info.get(COMPONENT_CONFIGURATION_POLICY) == null) info.put(COMPONENT_CONFIGURATION_POLICY, "require"); // We have a definition, so make an XML resources Resource resource = createComponentResource(name, impl, info); String pathSegment = analyzer.validResourcePath(name, "Invalid component name"); analyzer.getJar().putResource("OSGI-INF/" + pathSegment + ".xml", resource); components.put("OSGI-INF/" + pathSegment + ".xml", EMPTY); }
private Element getLocalAPI() throws Exception { List<Element> result = new ArrayList<Element>(); for (Map.Entry<PackageRef,List<Element>> entry : packages.entrySet()) { List<Element> set = entry.getValue(); for (Iterator<Element> i = set.iterator(); i.hasNext();) { if (notAccessible.contains(analyzer.getTypeRefFromFQN(i.next().getName()))) i.remove(); } String version = exports.get(entry.getKey()).get(Constants.VERSION_ATTRIBUTE); if (version != null) { Version v = new Version(version); set.add(new Element(Type.VERSION, v.getWithoutQualifier().toString(), null, IGNORED, IGNORED, null)); } Element pd = new Element(Type.PACKAGE, entry.getKey().getFQN(), set, MINOR, MAJOR, null); result.add(pd); } for (JAVA java : javas) { result.add(new Element(CLASS_VERSION, java.toString(), null, Delta.CHANGED, Delta.CHANGED, null)); } return new Element(Type.API, "<api>", result, CHANGED, CHANGED, null); }
private Element getLocalAPI() throws Exception { Set<Element> result = new HashSet<Element>(); for (Map.Entry<PackageRef,List<Element>> entry : packages.entrySet()) { List<Element> set = entry.getValue(); for (Iterator<Element> i = set.iterator(); i.hasNext();) { if (notAccessible.contains(analyzer.getTypeRefFromFQN(i.next().getName()))) i.remove(); } String version = exports.get(entry.getKey()).get(Constants.VERSION_ATTRIBUTE); if (version != null) { Version v = new Version(version); set.add(new Element(Type.VERSION, v.getWithoutQualifier().toString(), null, IGNORED, IGNORED, null)); } Element pd = new Element(Type.PACKAGE, entry.getKey().getFQN(), set, MINOR, MAJOR, null); result.add(pd); } for (JAVA java : javas) { result.add(new Element(CLASS_VERSION, java.toString(), null, Delta.CHANGED, Delta.CHANGED, null)); } return new Element(Type.API, "<api>", result, CHANGED, CHANGED, null); }
private Element getLocalAPI() throws Exception { Set<Element> result = new HashSet<Element>(); for (Map.Entry<PackageRef,List<Element>> entry : packages.entrySet()) { List<Element> set = entry.getValue(); for (Iterator<Element> i = set.iterator(); i.hasNext();) { if (notAccessible.contains(analyzer.getTypeRefFromFQN(i.next().getName()))) i.remove(); } String version = exports.get(entry.getKey()).get(Constants.VERSION_ATTRIBUTE); if (version != null) { Version v = new Version(version); set.add(new Element(Type.VERSION, v.getWithoutQualifier().toString(), null, IGNORED, IGNORED, null)); } Element pd = new Element(Type.PACKAGE, entry.getKey().getFQN(), set, MINOR, MAJOR, null); result.add(pd); } for (JAVA java : javas) { result.add(new Element(CLASS_VERSION, java.toString(), null, Delta.CHANGED, Delta.CHANGED, null)); } return new Element(Type.API, "<api>", result, CHANGED, CHANGED, null); }
private Element getLocalAPI() throws Exception { Set<Element> result = new HashSet<>(); for (Map.Entry<PackageRef, List<Element>> entry : packages.entrySet()) { List<Element> set = entry.getValue(); set.removeIf(element -> notAccessible.contains(analyzer.getTypeRefFromFQN(element.getName()))); String version = exports.get(entry.getKey()) .get(Constants.VERSION_ATTRIBUTE); if (version != null) { Version v = new Version(version); set.add(new Element(VERSION, v.toStringWithoutQualifier(), null, IGNORED, IGNORED, null)); } Element pd = new Element(PACKAGE, entry.getKey() .getFQN(), set, MINOR, MAJOR, null); result.add(pd); } for (JAVA java : javas) { result.add(new Element(CLASS_VERSION, java.toString(), null, CHANGED, CHANGED, null)); } return new Element(API, "<api>", result, CHANGED, CHANGED, null); }
private Element getLocalAPI() throws Exception { Set<Element> result = new HashSet<>(); for (Map.Entry<PackageRef, List<Element>> entry : packages.entrySet()) { List<Element> set = entry.getValue(); set.removeIf(element -> notAccessible.contains(analyzer.getTypeRefFromFQN(element.getName()))); String version = exports.get(entry.getKey()) .get(Constants.VERSION_ATTRIBUTE); if (version != null) { Version v = new Version(version); set.add(new Element(VERSION, v.toStringWithoutQualifier(), null, IGNORED, IGNORED, null)); } Element pd = new Element(PACKAGE, entry.getKey() .getFQN(), set, MINOR, MAJOR, null); result.add(pd); } for (JAVA java : javas) { result.add(new Element(CLASS_VERSION, java.toString(), null, CHANGED, CHANGED, null)); } return new Element(API, "<api>", result, CHANGED, CHANGED, null); }
private void verifyActivator() throws Exception { String bactivator = main.get("Bundle-Activator"); if (bactivator != null) { TypeRef ref = analyzer.getTypeRefFromFQN(bactivator); if (analyzer.getClassspace().containsKey(ref)) return; PackageRef packageRef = ref.getPackageRef(); if (packageRef.isDefaultPackage()) error("The Bundle Activator is not in the bundle and it is in the default package "); else if (!analyzer.isImported(packageRef)) { error("Bundle-Activator not found on the bundle class path nor in imports: " + bactivator); } } }