示例#1
0
 private void parseObrXml(KXmlParser kxp) throws Exception {
   PullParser parser = new PullParser();
   while (kxp.getEventType() == XmlPullParser.START_TAG) {
     if (RepositoryParser.CATEGORY.equals(kxp.getName())) {
       m_resourceBundle.addCategory(parser.parseCategory(kxp));
     } else if (RepositoryParser.REQUIRE.equals(kxp.getName())) {
       m_resourceBundle.addRequire(parser.parseRequire(kxp));
     } else if (RepositoryParser.CAPABILITY.equals(kxp.getName())) {
       m_resourceBundle.addCapability(parser.parseCapability(kxp));
     } else {
       kxp.nextTag();
       parseObrXml(kxp);
     }
     kxp.nextTag();
   }
 }
示例#2
0
  /**
   * update the repository descriptor file. parse the old repository descriptor file, get the old
   * reference of the bundle or determine the id for a new bundle, extract information from bindex
   * set the new information in descriptor file and save it.
   *
   * @param bundleJar path to the bundle jar file
   * @param sourceJar path to the source jar file
   * @param docJar path to the docs jar file
   * @throws MojoExecutionException if the plugin failed
   */
  public void updateRepository(URI bundleJar, URI sourceJar, URI docJar)
      throws MojoExecutionException {
    m_logger.debug(" (f) repositoryXml = " + m_repositoryXml);
    m_logger.debug(" (f) bundleJar = " + bundleJar);
    m_logger.debug(" (f) sourceJar = " + sourceJar);
    m_logger.debug(" (f) docJar = " + docJar);
    m_logger.debug(" (f) obrXml = " + m_obrXml);

    if (m_repository == null) {
      return;
    }

    // get the file size
    File bundleFile = new File(bundleJar);
    if (!bundleFile.exists()) {
      String snapshot = TIMESTAMP.matcher(bundleFile.getName()).replaceFirst("-SNAPSHOT");
      bundleFile = new File(bundleFile.getParentFile(), snapshot);
    }
    if (bundleFile.exists()) {
      URI resourceURI = m_userConfig.getRemoteBundle();
      if (null == resourceURI) {
        resourceURI = bundleJar;
        if (m_userConfig.isPathRelative()) {
          resourceURI = ObrUtils.getRelativeURI(m_baseURI, resourceURI);
        }
      }

      if (m_userConfig.isRemoteFile()) {
        m_logger.info("Deploying " + resourceURI);
      } else {
        m_logger.info("Installing " + resourceURI);
      }

      try {
        m_resourceBundle =
            (ResourceImpl) new DataModelHelperImpl().createResource(bundleFile.toURI().toURL());
        if (m_resourceBundle == null) {
          return;
        }
      } catch (IOException e) {
        throw new MojoExecutionException("Unable to load resource information", e);
      }

      m_resourceBundle.put(Resource.SIZE, String.valueOf(bundleFile.length()));
      m_resourceBundle.put(Resource.URI, resourceURI.toASCIIString());
    } else {
      m_logger.error("file doesn't exist: " + bundleJar);
      return;
    }

    // parse the obr.xml file
    if (m_obrXml != null) {
      m_logger.info("Adding " + m_obrXml);

      // URL url = getClass().getResource("/SchemaObr.xsd");
      // TODO validate obr.xml file

      // add contents to resource bundle
      parseObrXml();
    }

    String sourcePath = relativisePath(sourceJar);
    String docPath = relativisePath(docJar);

    //        m_resourceBundle.construct( m_project, bindexExtractor, sourcePath, docPath );
    //         TODO: rebuild wrt m_project

    m_repository.addResource(m_resourceBundle);
    m_repository.setLastModified(System.currentTimeMillis());
  }