コード例 #1
0
ファイル: PluginManager.java プロジェクト: kmaehashi/jenkins
 /**
  * Rename a legacy file to a new name, with care to Windows where {@link File#renameTo(File)}
  * doesn't work if the destination already exists.
  */
 private void rename(File legacyFile, File newFile) throws IOException {
   if (!legacyFile.exists()) return;
   if (newFile.exists()) {
     Util.deleteFile(newFile);
   }
   if (!legacyFile.renameTo(newFile)) {
     LOGGER.warning("Failed to rename " + legacyFile + " to " + newFile);
   }
 }
コード例 #2
0
ファイル: PluginManager.java プロジェクト: kmaehashi/jenkins
  /** Uploads a plugin. */
  public HttpResponse doUploadPlugin(StaplerRequest req) throws IOException, ServletException {
    try {
      Jenkins.getInstance().checkPermission(UPLOAD_PLUGINS);

      ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());

      // Parse the request
      FileItem fileItem = (FileItem) upload.parseRequest(req).get(0);
      String fileName = Util.getFileName(fileItem.getName());
      if ("".equals(fileName)) {
        return new HttpRedirect("advanced");
      }
      // we allow the upload of the new jpi's and the legacy hpi's
      if (!fileName.endsWith(".jpi") && !fileName.endsWith(".hpi")) {
        throw new Failure(hudson.model.Messages.Hudson_NotAPlugin(fileName));
      }

      // first copy into a temporary file name
      File t = File.createTempFile("uploaded", ".jpi");
      t.deleteOnExit();
      fileItem.write(t);
      fileItem.delete();

      final String baseName = identifyPluginShortName(t);

      pluginUploaded = true;

      // Now create a dummy plugin that we can dynamically load (the InstallationJob will force a
      // restart if one is needed):
      JSONObject cfg =
          new JSONObject()
              .element("name", baseName)
              .element("version", "0")
              . // unused but mandatory
              element("url", t.toURI().toString())
              .element("dependencies", new JSONArray());
      new UpdateSite(UpdateCenter.ID_UPLOAD, null).new Plugin(UpdateCenter.ID_UPLOAD, cfg)
          .deploy(true);
      return new HttpRedirect("../updateCenter");
    } catch (IOException e) {
      throw e;
    } catch (Exception e) { // grrr. fileItem.write throws this
      throw new ServletException(e);
    }
  }