public static Capability createCapability()

in uimafit-core/src/main/java/org/apache/uima/fit/factory/CapabilityFactory.java [50:114]


  public static Capability createCapability(Class<?> componentClass) {
    boolean sofaCapabilityPresent = ReflectionUtil.isAnnotationPresent(componentClass,
            SofaCapability.class);
    boolean typeCapabilityPresent = ReflectionUtil.isAnnotationPresent(componentClass,
            TypeCapability.class);
    boolean mimeTypeCapabilityPresent = ReflectionUtil.isAnnotationPresent(componentClass,
            MimeTypeCapability.class);
    boolean languageCapabilityPresent = ReflectionUtil.isAnnotationPresent(componentClass,
            LanguageCapability.class);

    // Skip if no capability annotations are present at all
    if (!sofaCapabilityPresent && !typeCapabilityPresent && !mimeTypeCapabilityPresent
            && !languageCapabilityPresent) {
      return null;
    }

    Capability capability = new Capability_impl();

    if (languageCapabilityPresent) {
      LanguageCapability annotation = ReflectionUtil.getAnnotation(componentClass,
              LanguageCapability.class);
      String[] languages = annotation.value();
      if (languages.length == 1 && languages[0].equals(LanguageCapability.NO_DEFAULT_VALUE)) {
        languages = new String[0];
      }
      capability.setLanguagesSupported(languages);
    }

    if (mimeTypeCapabilityPresent) {
      MimeTypeCapability annotation = ReflectionUtil.getAnnotation(componentClass,
              MimeTypeCapability.class);
      String[] mimeTypes = annotation.value();
      if (mimeTypes.length == 1 && mimeTypes[0].equals(MimeTypeCapability.NO_DEFAULT_VALUE)) {
        mimeTypes = new String[0];
      }
      capability.setMimeTypesSupported(mimeTypes);
    }

    if (sofaCapabilityPresent) {
      SofaCapability annotation = ReflectionUtil.getAnnotation(componentClass,
              SofaCapability.class);
      String[] inputSofas = annotation.inputSofas();
      if (inputSofas.length == 1 && inputSofas[0].equals(SofaCapability.NO_DEFAULT_VALUE)) {
        inputSofas = new String[0];
      }
      capability.setInputSofas(inputSofas);

      String[] outputSofas = annotation.outputSofas();
      if (outputSofas.length == 1 && outputSofas[0].equals(SofaCapability.NO_DEFAULT_VALUE)) {
        outputSofas = new String[0];
      }
      capability.setOutputSofas(outputSofas);
    }

    if (typeCapabilityPresent) {
      TypeCapability annotation = ReflectionUtil.getAnnotation(componentClass,
              TypeCapability.class);
      String[] inputTypesOrFeatureNames = annotation.inputs();
      capability.setInputs(createTypesOrFeatures(inputTypesOrFeatureNames));
      String[] outputTypesOrFeatureNames = annotation.outputs();
      capability.setOutputs(createTypesOrFeatures(outputTypesOrFeatureNames));
    }

    return capability;
  }