-dsannotations SELECTORS
Description: /** * Analyze the class space for any classes that have an OSGi annotation for DS. */ public class DSAnnotations implements AnalyzerPlugin { public boolean analyzeJar(Analyzer analyzer) throws Exception { Parameters header = OSGiHeader.parseHeader(analyzer.getProperty(Constants.DSANNOTATIONS)); if (header.size() == 0) return false; Instructions instructions = new Instructions(header); Collection<Clazz> list = analyzer.getClassspace().values(); String sc = analyzer.getProperty(Constants.SERVICE_COMPONENT); List<String> names = new ArrayList<String>(); if (sc != null && sc.trim().length() > 0) names.add(sc); for (Clazz c: list) { for (Instruction instruction : instructions.keySet()) { if (instruction.matches(c.getFQN())) { if (instruction.isNegated()) break; ComponentDef definition = AnnotationReader.getDefinition(c, analyzer); if (definition != null) { definition.sortReferences(); definition.prepare(analyzer); String name = "OSGI-INF/" + definition.name + ".xml"; names.add(name); analyz [cell cut: 1276 characters, first 1000 kept]

- Supported by OSGi enRoute

- # -dsannotations SELECTORS

      /**
       * Analyze the class space for any classes that have an OSGi annotation for DS.
       */
      public class DSAnnotations implements AnalyzerPlugin {

      	public boolean analyzeJar(Analyzer analyzer) throws Exception {
      		Parameters header = OSGiHeader.parseHeader(analyzer.getProperty(Constants.DSANNOTATIONS));
      		if (header.size() == 0)
      			return false;

      		Instructions instructions = new Instructions(header);
      		Collection<Clazz> list = analyzer.getClassspace().values();
      		String sc = analyzer.getProperty(Constants.SERVICE_COMPONENT);
      		List<String> names = new ArrayList<String>();
      		if (sc != null && sc.trim().length() > 0)
      			names.add(sc);

      		for (Clazz c: list) {
      			for (Instruction instruction : instructions.keySet()) {

      				if (instruction.matches(c.getFQN())) {
      					if (instruction.isNegated())
      						break;
      					ComponentDef definition = AnnotationReader.getDefinition(c, analyzer);
      					if (definition != null) {
      						definition.sortReferences();
      						definition.prepare(analyzer);
      						String name = "OSGI-INF/" + definition.name + ".xml";
      						names.add(name);
      						analyzer.getJar().putResource(name, new TagResource(definition.getTag()));
      					}
      				}
      			}
      		}
      		sc = Processor.append(names.toArray(new String[names.size()]));
      		analyzer.setProperty(Constants.SERVICE_COMPONENT, sc);
      		return false;
      	}

      	@Override
      	public String toString() {
      		return "DSAnnotations";
      	}
      }