private static synchronized String identifyUimaComponentCategory()

in uimaj-core/src/main/java/org/apache/uima/pear/util/UIMAUtil.java [164:271]


  private static synchronized String identifyUimaComponentCategory(File xmlDescFile, URL xmlDescUrl)
          throws IOException {
    String uimaCompCtg = null;
    XMLInputSource xmlSource = null;
    String xmlDescUri = (xmlDescFile != null) ? xmlDescFile.getAbsolutePath()
            : xmlDescUrl.toString();
    try {
      // clean error message
      __errTableByUri.remove(xmlDescUri);
      // get XMLParser
      XMLParser xmlParser = UIMAFramework.getXMLParser();
      // create XML source
      xmlSource = (xmlDescFile != null) ? new XMLInputSource(xmlDescFile)
              : new XMLInputSource(xmlDescUrl);
      // parse XML source and create resource specifier
      ResourceSpecifier resourceSpec = null;
      try {
        resourceSpec = xmlParser.parseResourceSpecifier(xmlSource);
      } catch (UIMAException err) {
        __errTableByUri.put(xmlDescUri, err);
      } catch (UIMARuntimeException exc) {
        __errTableByUri.put(xmlDescUri, exc);
      }
      if (resourceSpec != null) { // AE | CR | CI | CC | CustomResourceSpecifier ?
        // identify UIMA resource category
        if (resourceSpec instanceof AnalysisEngineDescription) {
          uimaCompCtg = ANALYSIS_ENGINE_CTG;
        } else if (resourceSpec instanceof CollectionReaderDescription) {
          uimaCompCtg = COLLECTION_READER_CTG;
        } else if (resourceSpec instanceof CasInitializerDescription) {
          uimaCompCtg = CAS_INITIALIZER_CTG;
        } else if (resourceSpec instanceof CasConsumerDescription) {
          uimaCompCtg = CAS_CONSUMER_CTG;
        } else if (resourceSpec instanceof CustomResourceSpecifier) {
          // try to treat custom resource specifiers as AE
          uimaCompCtg = ANALYSIS_ENGINE_CTG;
        }
      }
      if (uimaCompCtg == null) { // CPE ?
        // refresh XML source object
        try {
          xmlSource.getInputStream().close();
        } catch (Exception e) {
        }
        xmlSource = (xmlDescFile != null) ? new XMLInputSource(xmlDescFile)
                : new XMLInputSource(xmlDescUrl);
        try {
          // try parsing CPE configuration
          xmlParser.parseCpeDescription(xmlSource);
          uimaCompCtg = CPE_CONFIGURATION_CTG;
          __errTableByUri.remove(xmlDescUri);
        } catch (UIMAException err) {
          __errTableByUri.put(xmlDescUri, err);
        } catch (UIMARuntimeException exc) {
          __errTableByUri.put(xmlDescUri, exc);
        }
      }
      if (uimaCompCtg == null) { // TS ?
        // refresh XML source object
        try {
          xmlSource.getInputStream().close();
        } catch (Exception e) {
        }
        xmlSource = (xmlDescFile != null) ? new XMLInputSource(xmlDescFile)
                : new XMLInputSource(xmlDescUrl);
        try {
          // try parsing TS description
          xmlParser.parseTypeSystemDescription(xmlSource);
          uimaCompCtg = TYPE_SYSTEM_CTG;
          __errTableByUri.remove(xmlDescUri);
        } catch (UIMAException err) {
          __errTableByUri.put(xmlDescUri, err);
        } catch (UIMARuntimeException exc) {
          __errTableByUri.put(xmlDescUri, exc);
        }
      }
      if (uimaCompCtg == null) { // RR ?
        // refresh XML source object
        try {
          xmlSource.getInputStream().close();
        } catch (Exception e) {
        }
        xmlSource = (xmlDescFile != null) ? new XMLInputSource(xmlDescFile)
                : new XMLInputSource(xmlDescUrl);
        try {
          // try parsing RES manager configuration
          xmlParser.parseResourceManagerConfiguration(xmlSource);
          uimaCompCtg = REUSABLE_RESOURCE_CTG;
          __errTableByUri.remove(xmlDescUri);
        } catch (UIMAException err) {
          __errTableByUri.put(xmlDescUri, err);
        } catch (UIMARuntimeException exc) {
          __errTableByUri.put(xmlDescUri, exc);
        }
      }
    } catch (IOException exc) {
      throw exc;
    } catch (Exception err) {
      __errTableByUri.put(xmlDescUri, err);
    } finally {
      if (xmlSource != null && xmlSource.getInputStream() != null)
        try {
          xmlSource.getInputStream().close();
        } catch (Exception e) {
        }
    }
    return uimaCompCtg;
  }