Package hudson.plugins.jabber.im.transport

Source Code of hudson.plugins.jabber.im.transport.JabberPublisher

package hudson.plugins.jabber.im.transport;

import hudson.Extension;
import hudson.Util;
import hudson.model.User;
import hudson.plugins.im.GroupChatIMMessageTarget;
import hudson.plugins.im.IMConnection;
import hudson.plugins.im.IMException;
import hudson.plugins.im.IMMessageTarget;
import hudson.plugins.im.IMMessageTargetConversionException;
import hudson.plugins.im.IMMessageTargetConverter;
import hudson.plugins.im.IMPublisher;
import hudson.plugins.im.MatrixJobMultiplier;
import hudson.plugins.im.build_notify.BuildToChatNotifier;
import hudson.plugins.jabber.user.JabberUserProperty;
import hudson.tasks.BuildStepMonitor;
import hudson.tasks.Mailer;

import java.util.List;


/**
* Jabber-specific implementation of the {@link IMPublisher}.
*
* @author Christoph Kutzinski
* @author Uwe Schaefer (original implementation)
*/
public class JabberPublisher extends IMPublisher
{
    @Extension
    public static final JabberPublisherDescriptor DESCRIPTOR = new JabberPublisherDescriptor();

    static final IMMessageTargetConverter CONVERTER = new JabberIMMessageTargetConverter();

    public JabberPublisher(List<IMMessageTarget> targets, String notificationStrategy,
        boolean notifyGroupChatsOnBuildStart,
        boolean notifySuspects,
        boolean notifyCulprits,
        boolean notifyFixers,
        boolean notifyUpstreamCommitters,
        BuildToChatNotifier buildToChatNotifier,
        MatrixJobMultiplier matrixJobMultiplier) throws IMMessageTargetConversionException
    {
        super(targets, notificationStrategy, notifyGroupChatsOnBuildStart,
            notifySuspects, notifyCulprits, notifyFixers, notifyUpstreamCommitters,
            buildToChatNotifier, matrixJobMultiplier);
    }

    @Override
    public JabberPublisherDescriptor getDescriptor() {
        return JabberPublisher.DESCRIPTOR;
    }

    @Override
    protected IMConnection getIMConnection() throws IMException {
        return JabberIMConnectionProvider.getInstance().currentConnection();
    }

  @Override
  protected String getPluginName() {
    return "Jabber notifier plugin";
  }

  @Override
  protected String getConfiguredIMId(User user) {
      // if set, user property override all other settings:
        JabberUserProperty jabberUserProperty = (JabberUserProperty) user.getProperties().get(JabberUserProperty.DESCRIPTOR);
        if (jabberUserProperty != null && jabberUserProperty.getJid() != null) {
            return jabberUserProperty.getJid();
        }
     
    if (getDescriptor().isEmailAddressAsJabberId()) {
      Mailer.UserProperty mailProperty = user.getProperty(Mailer.UserProperty.class);
      if (mailProperty != null) {
        String emailAddress = mailProperty.getAddress();
        if (Util.fixEmpty(emailAddress) != null) {
          return emailAddress;
        }
      }
    }
    return null;
  }
   
  @Override
  public String getTargets() {
    List<IMMessageTarget> notificationTargets = getNotificationTargets();
   
    StringBuilder sb = new StringBuilder();
    for (IMMessageTarget target : notificationTargets) {
      if ((target instanceof GroupChatIMMessageTarget) && (! target.toString().contains("@conference."))) {
            sb.append("*");
          }
            sb.append(getIMDescriptor().getIMMessageTargetConverter().toString(target));
            sb.append(" ");
        }
        return sb.toString().trim();
  }
   
  @Override
  public BuildStepMonitor getRequiredMonitorService() {
    return BuildStepMonitor.BUILD;
  }
 
    @Override
    protected Object readResolve() {
        // make sure we don't forget to call readResolve on the super class
        super.readResolve();
        return this;
    }
}
TOP

Related Classes of hudson.plugins.jabber.im.transport.JabberPublisher

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.