public boolean analyzeJar(Analyzer analyzer) throws Exception { Jar jar = analyzer.getJar(); Map<String,Resource> dir = jar.getDirectories().get(root); if (dir == null || dir.isEmpty()) { Resource resource = jar.getResource(root); if ( resource != null ) process(analyzer, root, resource); return false; } for (Iterator<Map.Entry<String,Resource>> i = dir.entrySet().iterator(); i.hasNext();) { Map.Entry<String,Resource> entry = i.next(); String path = entry.getKey(); Resource resource = entry.getValue(); if (paths.matcher(path).matches()) { process(analyzer, path, resource); } } return false; }
private void createComponentResource(Map<String, Map<String, String>> components, String name, Map<String, String> info) throws IOException { // 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); // Check if such a class exists analyzer.referTo(impl); 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); }
@SuppressWarnings("unchecked") public boolean analyzeJar(Analyzer analyzer) throws Exception { Jar jar = analyzer.getJar(); Map dir = (Map) jar.getDirectories().get("META-INF/spring"); if ( dir == null || dir.isEmpty()) return false; for (Iterator i = dir.entrySet().iterator(); i.hasNext();) { Map.Entry entry = (Map.Entry) i.next(); String path = (String) entry.getKey(); Resource resource = (Resource) entry.getValue(); if (SPRING_SOURCE.matcher(path).matches()) { try { InputStream in = resource.openInputStream(); Set set = analyze(in); in.close(); for (Iterator r = set.iterator(); r.hasNext();) { String pack = (String) r.next(); if ( !QN.matcher(pack).matches()) analyzer.warning("Package does not seem a package in spring resource ("+path+"): " + pack ); if (!analyzer.getReferred().containsKey(pack)) analyzer.getReferred().put(pack, new LinkedHashMap()); } } catch( Exception e ) { analyzer.error("Unexpected exception in processing spring resources("+path+"): " + e ); } } } return false; }
public boolean analyzeJar(Analyzer analyzer) throws Exception { Map<String, Map<String, String>> map = analyzer.parseHeader(analyzer .getProperty(Constants.METATYPE)); Jar jar = analyzer.getJar(); for (String name : map.keySet()) { Collection<Clazz> metatypes = analyzer.getClasses("", QUERY.ANNOTATION.toString(), Meta.OCD.class.getName(), // QUERY.NAMED.toString(), name // ); for (Clazz c : metatypes) { jar.putResource("OSGI-INF/metatype/" + c.getFQN() + ".xml", new MetaTypeReader(c, analyzer)); } } return false; } }
String name = "OSGI-INF/" + definition.name + ".xml"; names.add(name); analyzer.getJar().putResource(name, new TagResource(definition.getTag()));
/** * Create a Metatype and Designate record out of the given * configurations. * * @param name * @param config */ private boolean designate(String name, String config, boolean factory) { if (config == null) return false; for (String c : Processor.split(config)) { Clazz clazz = analyzer.getClassspace().get(Clazz.fqnToPath(c)); if (clazz != null) { analyzer.referTo(c); MetaTypeReader r = new MetaTypeReader(clazz, analyzer); r.setDesignate(name, factory); String rname = "OSGI-INF/metatype/" + name + ".xml"; analyzer.getJar().putResource(rname, r); } else { analyzer.error( "Cannot find designated configuration class %s for component %s", c, name); } } return true; }