Package org.dcarew.hudson

Source Code of org.dcarew.hudson.HudsonPlugin

/*
* Copyright (c) 2009
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.dcarew.hudson;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;

// TODO: support hyperlinks in tooltips for build failures (use the ToolTip class)

// TODO: support hyperlinks in notification windows for build failures

// TODO: clean up all the communications / modeling code

// TODO: the build queue can be accessed at /queue/api/xml


/**
* The plugin class for the Hudson status project.
*
* @author Devon Carew
*/
public class HudsonPlugin
  extends AbstractUIPlugin
{
  public static final String PLUGIN_ID       = "org.dcarew.hudson";
 
  public static final String HUDSON_XML_API    = "api/xml";
 
  private static HudsonPlugin  plugin;
 
 
  public HudsonPlugin()
  {
   
  }
 
  public void start(BundleContext context)
    throws Exception
  {
    plugin = this;
   
    super.start(context);
   
    HudsonUpdateJob statusJob = new HudsonUpdateJob();
   
    statusJob.schedule(15000);
  }
 
  public void stop(BundleContext context)
    throws Exception
  {
    plugin = null;
   
    super.stop(context);
  }
 
  public static void log(Throwable exception)
  {
    log(new Status(IStatus.ERROR, PLUGIN_ID, exception.getMessage(), exception));
  }
 
  public static void log(IStatus status)
  {
    getPlugin().getLog().log(status);
  }
 
  /**
   * Returns the shared instance
   *
   * @return the shared instance
   */
  public static HudsonPlugin getPlugin()
  {
    return plugin;
  }
 
  /**
   * @return the version of the Hudson plugin
   */
  public static String getVersion()
  {
    return (String)getPlugin().getBundle().getHeaders().get(Constants.BUNDLE_VERSION)
  }
 
  /**
   * Returns an image descriptor for the image file at the given plug-in relative path.
   *
   * @param path the path
   * @return the image descriptor
   */
  public static ImageDescriptor getImageDescriptor(String path)
  {
    return imageDescriptorFromPlugin(PLUGIN_ID, path);
  }
 
    /**
     * Get an image given a path relative to this plugin.
     *
     * @param path
     * @return
     */
    public static Image getImage(String path)
    {
        if (getPlugin().getImageRegistry().get(path) != null)
            return getPlugin().getImageRegistry().get(path);

        ImageDescriptor descriptor = findImageDescriptor(path);

        if (descriptor != null)
        {
            getPlugin().getImageRegistry().put(path, descriptor);

            return getPlugin().getImageRegistry().get(path);
        }

        return null;
    }
   
    /**
   * Returns an image descriptor for the image file at the given plug-in relative path.
   *
   * @param path the path
   * @return the image descriptor
   */
  public static ImageDescriptor getBundledImageDescriptor(String path)
  {
    return AbstractUIPlugin.imageDescriptorFromPlugin(PLUGIN_ID, path);
  }

    /**
   * Respects images residing in any plug-in. If path is relative, then this bundle is looked up
   * for the image, otherwise, for absolute path, first segment is taken as id of plug-in with
   * image
   *
   * @param path the path to image, either absolute (with plug-in id as first segment), or
   *        relative for bundled images
   * @return the image descriptor
   */
  public static ImageDescriptor findImageDescriptor(String path)
  {
    final IPath p = new Path(path);
   
    if (p.isAbsolute() && p.segmentCount() > 1)
    {
      return AbstractUIPlugin.imageDescriptorFromPlugin(
        p.segment(0), p.removeFirstSegments(1).makeAbsolute().toString());
    }
    else
    {
      return getBundledImageDescriptor(p.makeAbsolute().toString());
    }
  }

  // User credentials section.
 
  private static final URL   AUTH_URL;
 
  private static final String AUTH_PASSWORD   = "org.dcarew.hudson.password";
  private static final String AUTH_USERNAME   = "org.dcarew.hudson.username";
 
  static
  {
    try
    {
      AUTH_URL = new URL("http://org.dcarew.hudson/");
    }
    catch (MalformedURLException e)
    {
      throw new RuntimeException(e);
    }
  }
 
  public static HudsonCredentials getUserCredentials()
  {
    Map authMap = Platform.getAuthorizationInfo(AUTH_URL, "", "");
   
    if (authMap == null)
      return null;
   
    String userName = (String)authMap.get(AUTH_USERNAME);
    String password = (String)authMap.get(AUTH_PASSWORD);
   
    return new HudsonCredentials(userName, password);
  }
 
  public static void setUserCredentials(String userName, String password)
  {
    if (userName == null)
      throw new IllegalArgumentException();
   
    if (password == null)
      throw new IllegalArgumentException();
   
    Map authMap = Platform.getAuthorizationInfo(AUTH_URL, "", "");
   
    if (authMap == null)
      authMap = new HashMap();
   
    authMap.put(AUTH_USERNAME, userName);
    authMap.put(AUTH_PASSWORD, password);
   
    try
    {
      Platform.addAuthorizationInfo(AUTH_URL, "", "", authMap);
    }
    catch (CoreException e)
    {
      log(e);
    }
  }
   
  public static String getBaseURL()
  {
    if (getPlugin() == null)
      return null;
   
    return getPlugin().getPreferenceStore().getString("url");
  }
 
  public static void setBaseURL(String baseURL)
  {
    getPlugin().getPreferenceStore().setValue("url", baseURL);
  }
 
  public static boolean getAllowSelfSigned()
  {
    return getPlugin().getPreferenceStore().getBoolean("selfSigned");
  }
 
  public static void setAllowSelfSigned(boolean value)
  {
    getPlugin().getPreferenceStore().setValue("selfSigned", value);
  }
 
  public static String getHudsonView()
  {
    return getPlugin().getPreferenceStore().getString("hudsonView");
  }
 
  public static void setHudsonView(String view)
  {
    getPlugin().getPreferenceStore().setValue("hudsonView", view);
  }
 
  public static boolean getDontNotify()
  {
    return getPlugin().getPreferenceStore().getBoolean("dontNotify");
  }
 
  public static void setDontNotify(boolean value)
  {
    getPlugin().getPreferenceStore().setValue("dontNotify", value);
  }
 
}
TOP

Related Classes of org.dcarew.hudson.HudsonPlugin

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.