manifoldcf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sch...@apache.org
Subject svn commit: r1813066 - in /manifoldcf/trunk: ./ connectors/ connectors/rocketchat/ connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/ connectors/rocketchat/connector/src/main/native2ascii/org/apache/ma...
Date Mon, 23 Oct 2017 19:27:54 GMT
Author: schuch
Date: Mon Oct 23 19:27:53 2017
New Revision: 1813066

URL: http://svn.apache.org/viewvc?rev=1813066&view=rev
Log:
Merged CONNECTORS-1468 (Rockat.Chat Notification Connector)

Added:
    manifoldcf/trunk/connectors/rocketchat/
      - copied from r1812793, manifoldcf/branches/CONNECTORS-1468/connectors/rocketchat/
    manifoldcf/trunk/site/src/documentation/resources/images/en_US/rocketchat-configure-restapi.PNG
      - copied unchanged from r1812903, manifoldcf/branches/CONNECTORS-1468/site/src/documentation/resources/images/en_US/rocketchat-configure-restapi.PNG
    manifoldcf/trunk/site/src/documentation/resources/images/en_US/rocketchat-job-notifications.PNG
      - copied unchanged from r1812903, manifoldcf/branches/CONNECTORS-1468/site/src/documentation/resources/images/en_US/rocketchat-job-notifications.PNG
Modified:
    manifoldcf/trunk/   (props changed)
    manifoldcf/trunk/CHANGES.txt
    manifoldcf/trunk/connectors/pom.xml
    manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatConfig.java
    manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatConnector.java
    manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatCredentials.java
    manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatMessage.java
    manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatSession.java
    manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_en_US.properties
    manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_es_ES.properties
    manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_ja_JP.properties
    manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_zh_CN.properties
    manifoldcf/trunk/connectors/rocketchat/connector/src/main/resources/org/apache/manifoldcf/crawler/notifications/rocketchat/SpecificationView.html
    manifoldcf/trunk/connectors/rocketchat/connector/src/main/resources/org/apache/manifoldcf/crawler/notifications/rocketchat/Specification_Message.html
    manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/end-user-documentation.xml
    manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/included-connectors.xml

Propchange: manifoldcf/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct 23 19:27:53 2017
@@ -78,6 +78,7 @@
 /manifoldcf/branches/CONNECTORS-1418:1792801-1793156
 /manifoldcf/branches/CONNECTORS-1424:1794708-1794716
 /manifoldcf/branches/CONNECTORS-1425:1794719-1794944
+/manifoldcf/branches/CONNECTORS-1468:1812793,1812830,1812903,1812905,1812909
 /manifoldcf/branches/CONNECTORS-470:1349741-1360750,1360808
 /manifoldcf/branches/CONNECTORS-474:1349741-1353803
 /manifoldcf/branches/CONNECTORS-488:1363249-1364203

Modified: manifoldcf/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/CHANGES.txt?rev=1813066&r1=1813065&r2=1813066&view=diff
==============================================================================
--- manifoldcf/trunk/CHANGES.txt (original)
+++ manifoldcf/trunk/CHANGES.txt Mon Oct 23 19:27:53 2017
@@ -7,6 +7,9 @@ CONNECTORS-1469: The slack notification
 integrated into the maven build.
 (Markus Schuch)
 
+CONNECTORS-1468: Adds Rocket.Chat Notification Connector
+(Markus Schuch)
+
 CONNECTORS-1459: Allow the Tika service to override the mime type
 in the metadata.
 (Julien Massiera)

Modified: manifoldcf/trunk/connectors/pom.xml
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/pom.xml?rev=1813066&r1=1813065&r2=1813066&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/pom.xml (original)
+++ manifoldcf/trunk/connectors/pom.xml Mon Oct 23 19:27:53 2017
@@ -73,6 +73,7 @@
     <module>nuxeo</module>
     <module>contentlimiter</module>
     <module>slack</module>
+    <module>rocketchat</module>
   </modules>
 
 </project>

Modified: manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatConfig.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatConfig.java?rev=1813066&r1=1812793&r2=1813066&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatConfig.java (original)
+++ manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatConfig.java Mon Oct 23 19:27:53 2017
@@ -78,9 +78,14 @@ public class RocketChatConfig {
   public static final String NODE_SCHEDULEPAUSED = "schedulepaused";
   public static final String NODE_RESTARTED = "restarted";
 
+  public static final String NODE_GLOBALS = "globals";
   public static final String NODE_CHANNEL = "channel";
   public static final String NODE_MESSAGE = "message";
-
+  public static final String NODE_DEFAULT_CHANNEL = "default_channel";
+  public static final String NODE_ALIAS = "alias";
+  public static final String NODE_EMOJI = "emoji";
+  public static final String NODE_AVATAR = "avatar";
+  
   public static final String ATTRIBUTE_NAME = "name";
   public static final String ATTRIBUTE_VALUE = "value";
 

Modified: manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatConnector.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatConnector.java?rev=1813066&r1=1812793&r2=1813066&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatConnector.java (original)
+++ manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatConnector.java Mon Oct 23 19:27:53 2017
@@ -1,21 +1,21 @@
 /* $Id$ */
 
 /**
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements. See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.manifoldcf.crawler.notifications.rocketchat;
 
 import java.io.IOException;
@@ -37,7 +37,7 @@ import org.apache.manifoldcf.core.interf
 import org.apache.manifoldcf.crawler.system.Logging;
 
 /**
-*/
+ */
 public class RocketChatConnector extends org.apache.manifoldcf.crawler.notifications.BaseNotificationConnector {
 
   protected final static long SESSION_EXPIRATION_MILLISECONDS = 300000L;
@@ -60,11 +60,11 @@ public class RocketChatConnector extends
   //////////////////////////////////Start of Basic Connector Methods/////////////////////////
 
   /**
-  * Connect.
-  *
-  * @param configParameters is the set of configuration parameters, which
-  * in this case describe the root directory.
-  */
+   * Connect.
+   *
+   * @param configParameters is the set of configuration parameters, which
+   * in this case describe the root directory.
+   */
   @Override
   public void connect(ConfigParams configParameters) {
     super.connect(configParameters);
@@ -85,12 +85,12 @@ public class RocketChatConnector extends
   }
 
   /**
-  * Close the connection. Call this before discarding this instance of the
-  * repository connector.
-  */
+   * Close the connection. Call this before discarding this instance of the
+   * repository connector.
+   */
   @Override
   public void disconnect()
-    throws ManifoldCFException {
+      throws ManifoldCFException {
     this.serverUrl = null;
     this.user = null;
     this.password = null;
@@ -100,9 +100,9 @@ public class RocketChatConnector extends
   }
 
   /**
-  * This method is periodically called for all connectors that are connected but not
-  * in active use.
-  */
+   * This method is periodically called for all connectors that are connected but not
+   * in active use.
+   */
   @Override
   public void poll() throws ManifoldCFException {
     if (session != null)
@@ -113,10 +113,10 @@ public class RocketChatConnector extends
   }
 
   /**
-  * Test the connection. Returns a string describing the connection integrity.
-  *
-  * @return the connection's status as a displayable string.
-  */
+   * Test the connection. Returns a string describing the connection integrity.
+   *
+   * @return the connection's status as a displayable string.
+   */
   @Override
   public String check()
       throws ManifoldCFException {
@@ -146,7 +146,7 @@ public class RocketChatConnector extends
   }
 
   protected void getSession()
-    throws ManifoldCFException, ServiceInterruption {
+      throws ManifoldCFException, ServiceInterruption {
     if (session == null) {
 
       // Check that all the required parameters are there.
@@ -191,77 +191,97 @@ public class RocketChatConnector extends
   //////////////////////////////Start of Notification Connector Method///////////////////////////////////
 
   /** Notify of job stop due to error abort.
-  *@param spec is the notification specification.
-  */
+   *@param spec is the notification specification.
+   */
   @Override
   public void notifyOfJobStopErrorAbort(final Specification spec)
-    throws ManifoldCFException, ServiceInterruption {
+      throws ManifoldCFException, ServiceInterruption {
     sendRocketChatMessage(spec, RocketChatConfig.NODE_ERRORABORTED);
   }
 
   /** Notify of job stop due to manual abort.
-  *@param spec is the notification specification.
-  */
+   *@param spec is the notification specification.
+   */
   @Override
   public void notifyOfJobStopManualAbort(final Specification spec)
-    throws ManifoldCFException, ServiceInterruption {
+      throws ManifoldCFException, ServiceInterruption {
     sendRocketChatMessage(spec, RocketChatConfig.NODE_MANUALABORTED);
   }
 
   /** Notify of job stop due to manual pause.
-  *@param spec is the notification specification.
-  */
+   *@param spec is the notification specification.
+   */
   @Override
   public void notifyOfJobStopManualPause(final Specification spec)
-    throws ManifoldCFException, ServiceInterruption {
+      throws ManifoldCFException, ServiceInterruption {
     sendRocketChatMessage(spec, RocketChatConfig.NODE_MANUALPAUSED);
   }
 
   /** Notify of job stop due to schedule pause.
-  *@param spec is the notification specification.
-  */
+   *@param spec is the notification specification.
+   */
   @Override
   public void notifyOfJobStopSchedulePause(final Specification spec)
-    throws ManifoldCFException, ServiceInterruption {
+      throws ManifoldCFException, ServiceInterruption {
     sendRocketChatMessage(spec, RocketChatConfig.NODE_SCHEDULEPAUSED);
   }
 
   /** Notify of job stop due to restart.
-  *@param spec is the notification specification.
-  */
+   *@param spec is the notification specification.
+   */
   @Override
   public void notifyOfJobStopRestart(final Specification spec)
-    throws ManifoldCFException, ServiceInterruption {
+      throws ManifoldCFException, ServiceInterruption {
     sendRocketChatMessage(spec, RocketChatConfig.NODE_RESTARTED);
   }
 
   /** Notify of job end.
-  *@param spec is the notification specification.
-  */
+   *@param spec is the notification specification.
+   */
   @Override
   public void notifyOfJobEnd(final Specification spec)
-    throws ManifoldCFException, ServiceInterruption {
+      throws ManifoldCFException, ServiceInterruption {
     sendRocketChatMessage(spec, RocketChatConfig.NODE_FINISHED);
   }
 
   protected void sendRocketChatMessage(final Specification spec, final String nodeType)
-    throws ManifoldCFException, ServiceInterruption
+      throws ManifoldCFException, ServiceInterruption
   {
+    
+    String defaultChannel = null;
+    String alias = null;
+    String emoji = null;
+    String avatar = null;
+    
     String channel = "";
     String message = "";
-    for (int i = 0; i < spec.getChildCount(); i++) {
-      SpecificationNode sn = spec.getChild(i);
-      if (sn.getType().equals(RocketChatConfig.NODE_CHANNEL))
-        channel = sn.getAttributeValue(RocketChatConfig.ATTRIBUTE_VALUE);
-      else if (sn.getType().equals(RocketChatConfig.NODE_MESSAGE))
-        message = sn.getAttributeValue(RocketChatConfig.ATTRIBUTE_VALUE);
-    }
     // Look for node of the specified type
     if (nodeType != null)
     {
       for (int i = 0; i < spec.getChildCount(); i++) {
         SpecificationNode childNode = spec.getChild(i);
-        if (childNode.getType().equals(nodeType))
+        
+        // Global settings
+        if (childNode.getType().equals(RocketChatConfig.NODE_GLOBALS)) {
+          for (int j = 0; j < childNode.getChildCount(); j++) {
+            SpecificationNode sn = childNode.getChild(j);
+            if (sn.getType().equals(RocketChatConfig.NODE_DEFAULT_CHANNEL)) {
+              defaultChannel = sn.getAttributeValue(RocketChatConfig.ATTRIBUTE_VALUE);
+            }
+            else if (sn.getType().equals(RocketChatConfig.NODE_ALIAS)) {
+              alias = sn.getAttributeValue(RocketChatConfig.ATTRIBUTE_VALUE);
+            }
+            else if (sn.getType().equals(RocketChatConfig.NODE_EMOJI)) {
+              emoji = sn.getAttributeValue(RocketChatConfig.ATTRIBUTE_VALUE);
+            }
+            else if (sn.getType().equals(RocketChatConfig.NODE_AVATAR)) {
+              avatar = sn.getAttributeValue(RocketChatConfig.ATTRIBUTE_VALUE);
+            }
+          }
+        }
+        
+        // notification type specific settings
+        else if (childNode.getType().equals(nodeType))
         {
           for (int j = 0; j < childNode.getChildCount(); j++) {
             SpecificationNode sn = childNode.getChild(j);
@@ -278,10 +298,25 @@ public class RocketChatConnector extends
       return;
     }
 
+    if (StringUtils.isBlank(channel)) {
+      if (StringUtils.isBlank(defaultChannel)) {
+        return;
+      } else {
+        channel = defaultChannel;
+      }
+    }
+
     // Construct and send a rocketchat message
     getSession();
 
-    SendThread st = new SendThread(session, channel, message);
+    RocketChatMessage chatMessage = new RocketChatMessage();
+    chatMessage.setChannel(channel);
+    chatMessage.setText(message);
+    chatMessage.setAlias(alias);
+    chatMessage.setEmoji(emoji);
+    chatMessage.setAvatar(avatar);
+
+    SendThread st = new SendThread(session, chatMessage);
     st.start();
     try {
       st.finishUp();
@@ -299,22 +334,22 @@ public class RocketChatConnector extends
   ///////////////////////////////////////Start of Configuration UI/////////////////////////////////////
 
   /**
-  * Output the configuration header section.
-  * This method is called in the head section of the connector's configuration page. Its purpose is to
-  * add the required tabs to the list, and to output any javascript methods that might be needed by
-  * the configuration editing HTML.
-  * The connector does not need to be connected for this method to be called.
-  *
-  * @param threadContext is the local thread context.
-  * @param out is the output to which any HTML should be sent.
-  * @param locale is the desired locale.
-  * @param parameters are the configuration parameters, as they currently exist, for this connection being configured.
-  * @param tabsArray is an array of tab names. Add to this array any tab names that are specific to the connector.
-  */
+   * Output the configuration header section.
+   * This method is called in the head section of the connector's configuration page. Its purpose is to
+   * add the required tabs to the list, and to output any javascript methods that might be needed by
+   * the configuration editing HTML.
+   * The connector does not need to be connected for this method to be called.
+   *
+   * @param threadContext is the local thread context.
+   * @param out is the output to which any HTML should be sent.
+   * @param locale is the desired locale.
+   * @param parameters are the configuration parameters, as they currently exist, for this connection being configured.
+   * @param tabsArray is an array of tab names. Add to this array any tab names that are specific to the connector.
+   */
   @Override
   public void outputConfigurationHeader(IThreadContext threadContext, IHTTPOutput out,
-    Locale locale, ConfigParams parameters, List<String> tabsArray)
-    throws ManifoldCFException, IOException {
+      Locale locale, ConfigParams parameters, List<String> tabsArray)
+          throws ManifoldCFException, IOException {
     tabsArray.add(Messages.getString(locale, "RocketChatConnector.RestAPI"));
     // Map the parameters
     Map<String, Object> paramMap = new HashMap<String, Object>();
@@ -328,8 +363,8 @@ public class RocketChatConnector extends
 
   @Override
   public void outputConfigurationBody(IThreadContext threadContext, IHTTPOutput out,
-    Locale locale, ConfigParams parameters, String tabName)
-    throws ManifoldCFException, IOException {
+      Locale locale, ConfigParams parameters, String tabName)
+          throws ManifoldCFException, IOException {
     // Output the Server tab
     Map<String, Object> paramMap = new HashMap<String, Object>();
     // Set the tab name
@@ -348,7 +383,7 @@ public class RocketChatConnector extends
     } else {
       password = mapper.mapPasswordToKey(password);
     }
-    
+
     String proxyHost = getEmptyOnNull(parameters, RocketChatConfig.PROXY_HOST_PARAM);
     String proxyPort = getEmptyOnNull(parameters, RocketChatConfig.PROXY_PORT_PARAM);
     String proxyUsername = getEmptyOnNull(parameters, RocketChatConfig.PROXY_USERNAME_PARAM);
@@ -381,22 +416,22 @@ public class RocketChatConnector extends
   }
 
   /**
-  * Process a configuration post.
-  * This method is called at the start of the connector's configuration page, whenever there is a possibility
-  * that form data for a connection has been posted. Its purpose is to gather form information and modify
-  * the configuration parameters accordingly.
-  * The name of the posted form is always "editconnection".
-  * The connector does not need to be connected for this method to be called.
-  *
-  * @param threadContext is the local thread context.
-  * @param variableContext is the set of variables available from the post, including binary file post information.
-  * @param parameters are the configuration parameters, as they currently exist, for this connection being configured.
-  * @return null if all is well, or a string error message if there is an error that should prevent saving of the
-  * connection (and cause a redirection to an error page).
-  */
+   * Process a configuration post.
+   * This method is called at the start of the connector's configuration page, whenever there is a possibility
+   * that form data for a connection has been posted. Its purpose is to gather form information and modify
+   * the configuration parameters accordingly.
+   * The name of the posted form is always "editconnection".
+   * The connector does not need to be connected for this method to be called.
+   *
+   * @param threadContext is the local thread context.
+   * @param variableContext is the set of variables available from the post, including binary file post information.
+   * @param parameters are the configuration parameters, as they currently exist, for this connection being configured.
+   * @return null if all is well, or a string error message if there is an error that should prevent saving of the
+   * connection (and cause a redirection to an error page).
+   */
   @Override
   public String processConfigurationPost(IThreadContext threadContext, IPostParameters variableContext,
-    ConfigParams parameters) throws ManifoldCFException {
+      ConfigParams parameters) throws ManifoldCFException {
 
     final String serverUrl = variableContext.getParameter("serverUrl");
     if (serverUrl != null) {
@@ -407,12 +442,12 @@ public class RocketChatConnector extends
     if (user != null) {
       parameters.setParameter(RocketChatConfig.USER_PARAM, user);
     }
-    
+
     final String password = variableContext.getParameter("password");
     if (password != null) {
       parameters.setObfuscatedParameter(RocketChatConfig.PASSWORD_PARAM, variableContext.mapKeyToPassword(password));
     }
-    
+
     final String proxyHost = variableContext.getParameter("proxyHost");
     if (proxyHost != null) {
       parameters.setParameter(RocketChatConfig.PROXY_HOST_PARAM, proxyHost);
@@ -450,20 +485,20 @@ public class RocketChatConnector extends
   }
 
   /**
-  * View configuration. This method is called in the body section of the
-  * connector's view configuration page. Its purpose is to present the
-  * connection information to the user. The coder can presume that the HTML that
-  * is output from this configuration will be within appropriate <html> and
-  * <body> tags.
-  *
-  * @param threadContext is the local thread context.
-  * @param out is the output to which any HTML should be sent.
-  * @param parameters are the configuration parameters, as they currently exist, for
-  * this connection being configured.
-  */
+   * View configuration. This method is called in the body section of the
+   * connector's view configuration page. Its purpose is to present the
+   * connection information to the user. The coder can presume that the HTML that
+   * is output from this configuration will be within appropriate <html> and
+   * <body> tags.
+   *
+   * @param threadContext is the local thread context.
+   * @param out is the output to which any HTML should be sent.
+   * @param parameters are the configuration parameters, as they currently exist, for
+   * this connection being configured.
+   */
   @Override
   public void viewConfiguration(IThreadContext threadContext, IHTTPOutput out,
-    Locale locale, ConfigParams parameters) throws ManifoldCFException, IOException {
+      Locale locale, ConfigParams parameters) throws ManifoldCFException, IOException {
     Map<String, Object> paramMap = new HashMap<String, Object>();
 
     // Fill in map from each tab
@@ -479,20 +514,20 @@ public class RocketChatConnector extends
   /////////////////////////////////Start of Specification UI//////////////////////////////////////////////////
 
   /** Output the specification header section.
-  * This method is called in the head section of a job page which has selected a repository connection of the
-  * current type.  Its purpose is to add the required tabs to the list, and to output any javascript methods
-  * that might be needed by the job editing HTML.
-  * The connector will be connected before this method can be called.
-  *@param out is the output to which any HTML should be sent.
-  *@param locale is the locale the output is preferred to be in.
-  *@param ds is the current document specification for this job.
-  *@param connectionSequenceNumber is the unique number of this connection within the job.
-  *@param tabsArray is an array of tab names.  Add to this array any tab names that are specific to the connector.
-  */
+   * This method is called in the head section of a job page which has selected a repository connection of the
+   * current type.  Its purpose is to add the required tabs to the list, and to output any javascript methods
+   * that might be needed by the job editing HTML.
+   * The connector will be connected before this method can be called.
+   *@param out is the output to which any HTML should be sent.
+   *@param locale is the locale the output is preferred to be in.
+   *@param ds is the current document specification for this job.
+   *@param connectionSequenceNumber is the unique number of this connection within the job.
+   *@param tabsArray is an array of tab names.  Add to this array any tab names that are specific to the connector.
+   */
   @Override
   public void outputSpecificationHeader(IHTTPOutput out, Locale locale, Specification ds,
-    int connectionSequenceNumber, List<String> tabsArray)
-    throws ManifoldCFException, IOException {
+      int connectionSequenceNumber, List<String> tabsArray)
+          throws ManifoldCFException, IOException {
     Map<String, Object> paramMap = new HashMap<String, Object>();
     paramMap.put("SeqNum", Integer.toString(connectionSequenceNumber));
     // Add the tabs
@@ -501,32 +536,32 @@ public class RocketChatConnector extends
   }
 
   /** Output the specification body section.
-  * This method is called in the body section of a job page which has selected a repository connection of the
-  * current type.  Its purpose is to present the required form elements for editing.
-  * The coder can presume that the HTML that is output from this configuration will be within appropriate
-  *  <html>, <body>, and <form> tags.  The name of the form is always "editjob".
-  * The connector will be connected before this method can be called.
-  *@param out is the output to which any HTML should be sent.
-  *@param locale is the locale the output is preferred to be in.
-  *@param ds is the current document specification for this job.
-  *@param connectionSequenceNumber is the unique number of this connection within the job.
-  *@param actualSequenceNumber is the connection within the job that has currently been selected.
-  *@param tabName is the current tab name.  (actualSequenceNumber, tabName) form a unique tuple within
-  *  the job.
-  */
+   * This method is called in the body section of a job page which has selected a repository connection of the
+   * current type.  Its purpose is to present the required form elements for editing.
+   * The coder can presume that the HTML that is output from this configuration will be within appropriate
+   *  <html>, <body>, and <form> tags.  The name of the form is always "editjob".
+   * The connector will be connected before this method can be called.
+   *@param out is the output to which any HTML should be sent.
+   *@param locale is the locale the output is preferred to be in.
+   *@param ds is the current document specification for this job.
+   *@param connectionSequenceNumber is the unique number of this connection within the job.
+   *@param actualSequenceNumber is the connection within the job that has currently been selected.
+   *@param tabName is the current tab name.  (actualSequenceNumber, tabName) form a unique tuple within
+   *  the job.
+   */
   @Override
   public void outputSpecificationBody(IHTTPOutput out, Locale locale, Specification ds,
-    int connectionSequenceNumber, int actualSequenceNumber, String tabName)
-    throws ManifoldCFException, IOException {
+      int connectionSequenceNumber, int actualSequenceNumber, String tabName)
+          throws ManifoldCFException, IOException {
     outputMessageTab(out, locale, ds, tabName, connectionSequenceNumber, actualSequenceNumber);
   }
 
   /**
-* Take care of "Message" tab.
-*/
+   * Take care of "Message" tab.
+   */
   protected void outputMessageTab(IHTTPOutput out, Locale locale,
-    Specification ds, String tabName, int connectionSequenceNumber, int actualSequenceNumber)
-    throws ManifoldCFException, IOException {
+      Specification ds, String tabName, int connectionSequenceNumber, int actualSequenceNumber)
+          throws ManifoldCFException, IOException {
     Map<String, Object> paramMap = new HashMap<String, Object>();
     paramMap.put("TabName", tabName);
     paramMap.put("SeqNum", Integer.toString(connectionSequenceNumber));
@@ -536,66 +571,71 @@ public class RocketChatConnector extends
   }
 
   /**
-  * Fill in Velocity context for Metadata tab.
-  */
+   * Fill in Velocity context for Metadata tab.
+   */
   protected static void fillInMessageTab(Map<String, Object> paramMap,
-    Specification ds) {
+      Specification ds) {
 
-    // Preload default values, for backwards compatibility
-    String channel = "";
-    String message = "";
+    // Initialize all records with blanks
+    addRecord(paramMap, RocketChatConfig.NODE_FINISHED, "", "");
+    addRecord(paramMap, RocketChatConfig.NODE_ERRORABORTED, "", "");
+    addRecord(paramMap, RocketChatConfig.NODE_MANUALABORTED, "", "");
+    addRecord(paramMap, RocketChatConfig.NODE_MANUALPAUSED, "", "");
+    addRecord(paramMap, RocketChatConfig.NODE_SCHEDULEPAUSED, "", "");
+    addRecord(paramMap, RocketChatConfig.NODE_RESTARTED, "" ,"");
+
+    String channel;
+    String message;
+    // Loop through nodes and pick them out that way
     for (int i = 0; i < ds.getChildCount(); i++) {
-      SpecificationNode sn = ds.getChild(i);
-      if (sn.getType().equals(RocketChatConfig.NODE_CHANNEL)) {
-        channel = sn.getAttributeValue(RocketChatConfig.ATTRIBUTE_VALUE);
-      } else if (sn.getType().equals(RocketChatConfig.NODE_MESSAGE)) {
-        message = sn.getAttributeValue(RocketChatConfig.ATTRIBUTE_VALUE);
-      }
-    }
-    // If ANY of the above are non-empty, we create a new dummy record
-    if (channel.length() > 0) {
-      // Add the dummy records
-      addRecord(paramMap, RocketChatConfig.NODE_FINISHED, channel, message);
-      addRecord(paramMap, RocketChatConfig.NODE_ERRORABORTED, channel, message);
-      addRecord(paramMap, RocketChatConfig.NODE_MANUALABORTED, channel, message);
-      addRecord(paramMap, RocketChatConfig.NODE_MANUALPAUSED, channel, message);
-      addRecord(paramMap, RocketChatConfig.NODE_SCHEDULEPAUSED, channel, message);
-      addRecord(paramMap, RocketChatConfig.NODE_RESTARTED, channel, message);
-
-    }
-    else
-    {
-      // Initialize all records with blanks
-      addRecord(paramMap, RocketChatConfig.NODE_FINISHED, "", "");
-      addRecord(paramMap, RocketChatConfig.NODE_ERRORABORTED, "", "");
-      addRecord(paramMap, RocketChatConfig.NODE_MANUALABORTED, "", "");
-      addRecord(paramMap, RocketChatConfig.NODE_MANUALPAUSED, "", "");
-      addRecord(paramMap, RocketChatConfig.NODE_SCHEDULEPAUSED, "", "");
-      addRecord(paramMap, RocketChatConfig.NODE_RESTARTED, "" ,"");
-
-      // Loop through nodes and pick them out that way
-      for (int i = 0; i < ds.getChildCount(); i++) {
-        SpecificationNode childNode = ds.getChild(i);
-        if (childNode.getType().equals(RocketChatConfig.NODE_FINISHED) ||
+      SpecificationNode childNode = ds.getChild(i);
+      if (childNode.getType().equals(RocketChatConfig.NODE_FINISHED) ||
           childNode.getType().equals(RocketChatConfig.NODE_ERRORABORTED) ||
           childNode.getType().equals(RocketChatConfig.NODE_MANUALABORTED) ||
           childNode.getType().equals(RocketChatConfig.NODE_MANUALPAUSED) ||
           childNode.getType().equals(RocketChatConfig.NODE_SCHEDULEPAUSED) ||
           childNode.getType().equals(RocketChatConfig.NODE_RESTARTED)) {
-          channel = "";
-          message = "";
-          for (int j = 0; j < childNode.getChildCount(); j++) {
-            SpecificationNode sn = childNode.getChild(j);
-            if (sn.getType().equals(RocketChatConfig.NODE_CHANNEL)) {
-              channel = sn.getAttributeValue(RocketChatConfig.ATTRIBUTE_VALUE);
-            } else if (sn.getType().equals(RocketChatConfig.NODE_MESSAGE)) {
-              message = sn.getAttributeValue(RocketChatConfig.ATTRIBUTE_VALUE);
-            }
+        channel = "";
+        message = "";
+        for (int j = 0; j < childNode.getChildCount(); j++) {
+          SpecificationNode sn = childNode.getChild(j);
+          if (sn.getType().equals(RocketChatConfig.NODE_CHANNEL)) {
+            channel = sn.getAttributeValue(RocketChatConfig.ATTRIBUTE_VALUE);
+          } else if (sn.getType().equals(RocketChatConfig.NODE_MESSAGE)) {
+            message = sn.getAttributeValue(RocketChatConfig.ATTRIBUTE_VALUE);
           }
-          addRecord(paramMap, childNode.getType(), channel, message);
         }
+        addRecord(paramMap, childNode.getType(), channel, message);
       }
     }
+
+    // Global Settings
+    
+    // Initialize globals with blanks
+    paramMap.put(RocketChatConfig.NODE_DEFAULT_CHANNEL, "");
+    paramMap.put(RocketChatConfig.NODE_ALIAS, "");
+    paramMap.put(RocketChatConfig.NODE_EMOJI, "");
+    paramMap.put(RocketChatConfig.NODE_AVATAR, "");
+    
+    for (int i = 0; i < ds.getChildCount(); i++) {
+      SpecificationNode childNode = ds.getChild(i);
+      if (childNode.getType().equals(RocketChatConfig.NODE_GLOBALS)) {
+        for (int j = 0; j < childNode.getChildCount(); j++) {
+          SpecificationNode sn = childNode.getChild(j);
+          if (sn.getType().equals(RocketChatConfig.NODE_DEFAULT_CHANNEL)) {
+            paramMap.put(RocketChatConfig.NODE_DEFAULT_CHANNEL, sn.getAttributeValue(RocketChatConfig.ATTRIBUTE_VALUE));
+          } else if (sn.getType().equals(RocketChatConfig.NODE_ALIAS)) {
+            paramMap.put(RocketChatConfig.NODE_ALIAS, sn.getAttributeValue(RocketChatConfig.ATTRIBUTE_VALUE));
+          } else if (sn.getType().equals(RocketChatConfig.NODE_EMOJI)) {
+            paramMap.put(RocketChatConfig.NODE_EMOJI, sn.getAttributeValue(RocketChatConfig.ATTRIBUTE_VALUE));
+          } else if (sn.getType().equals(RocketChatConfig.NODE_AVATAR)) {
+            paramMap.put(RocketChatConfig.NODE_AVATAR, sn.getAttributeValue(RocketChatConfig.ATTRIBUTE_VALUE));
+          }
+        }
+      }
+      
+    }
+
   }
 
   protected static void addRecord(Map<String,Object> paramMap, String nodeType, String channel, String message) {
@@ -604,35 +644,31 @@ public class RocketChatConnector extends
   }
 
   /** Process a specification post.
-  * This method is called at the start of job's edit or view page, whenever there is a possibility that form
-  * data for a connection has been posted.  Its purpose is to gather form information and modify the
-  * document specification accordingly.  The name of the posted form is always "editjob".
-  * The connector will be connected before this method can be called.
-  *@param variableContext contains the post data, including binary file-upload information.
-  *@param locale is the locale the output is preferred to be in.
-  *@param ds is the current document specification for this job.
-  *@param connectionSequenceNumber is the unique number of this connection within the job.
-  *@return null if all is well, or a string error message if there is an error that should prevent saving of
-  * the job (and cause a redirection to an error page).
-  */
+   * This method is called at the start of job's edit or view page, whenever there is a possibility that form
+   * data for a connection has been posted.  Its purpose is to gather form information and modify the
+   * document specification accordingly.  The name of the posted form is always "editjob".
+   * The connector will be connected before this method can be called.
+   *@param variableContext contains the post data, including binary file-upload information.
+   *@param locale is the locale the output is preferred to be in.
+   *@param ds is the current document specification for this job.
+   *@param connectionSequenceNumber is the unique number of this connection within the job.
+   *@return null if all is well, or a string error message if there is an error that should prevent saving of
+   * the job (and cause a redirection to an error page).
+   */
   @Override
   public String processSpecificationPost(IPostParameters variableContext, Locale locale, Specification ds,
-    int connectionSequenceNumber)
-    throws ManifoldCFException {
+      int connectionSequenceNumber)
+          throws ManifoldCFException {
 
     return processMessageTab(variableContext, ds, connectionSequenceNumber);
   }
 
   protected String processMessageTab(IPostParameters variableContext, Specification ds,
-    int connectionSequenceNumber)
-    throws ManifoldCFException {
+      int connectionSequenceNumber)
+          throws ManifoldCFException {
 
     String seqPrefix = "s"+connectionSequenceNumber+"_";
 
-    // Remove legacy nodes always
-    removeNodes(ds, RocketChatConfig.NODE_CHANNEL);
-    removeNodes(ds, RocketChatConfig.NODE_MESSAGE);
-
     // Gather all different kinds.
     gatherRecord(ds, seqPrefix, variableContext, RocketChatConfig.NODE_FINISHED);
     gatherRecord(ds, seqPrefix, variableContext, RocketChatConfig.NODE_ERRORABORTED);
@@ -641,6 +677,27 @@ public class RocketChatConnector extends
     gatherRecord(ds, seqPrefix, variableContext, RocketChatConfig.NODE_SCHEDULEPAUSED);
     gatherRecord(ds, seqPrefix, variableContext, RocketChatConfig.NODE_RESTARTED);
 
+    // Gather global settings
+    SpecificationNode sn = new SpecificationNode(RocketChatConfig.NODE_GLOBALS);
+    
+    String defaultChannel = variableContext.getParameter(RocketChatConfig.NODE_DEFAULT_CHANNEL);
+    if (defaultChannel != null) {
+      addNodeValue(sn, RocketChatConfig.NODE_DEFAULT_CHANNEL, defaultChannel);
+    }
+    String alias = variableContext.getParameter(RocketChatConfig.NODE_ALIAS);
+    if (alias != null) {
+      addNodeValue(sn, RocketChatConfig.NODE_ALIAS, alias);
+    }
+    String emoji = variableContext.getParameter(RocketChatConfig.NODE_EMOJI);
+    if (emoji != null) {
+      addNodeValue(sn, RocketChatConfig.NODE_EMOJI, emoji);
+    }
+    String avatar = variableContext.getParameter(RocketChatConfig.NODE_AVATAR);
+    if (avatar != null) {
+      addNodeValue(sn, RocketChatConfig.NODE_AVATAR, avatar);
+    }
+    ds.addChild(ds.getChildCount(), sn);
+    
     return null;
   }
 
@@ -661,19 +718,19 @@ public class RocketChatConnector extends
   }
 
   /** View specification.
-  * This method is called in the body section of a job's view page.  Its purpose is to present the document
-  * specification information to the user.  The coder can presume that the HTML that is output from
-  * this configuration will be within appropriate <html> and <body> tags.
-  * The connector will be connected before this method can be called.
-  *@param out is the output to which any HTML should be sent.
-  *@param locale is the locale the output is preferred to be in.
-  *@param ds is the current document specification for this job.
-  *@param connectionSequenceNumber is the unique number of this connection within the job.
-  */
+   * This method is called in the body section of a job's view page.  Its purpose is to present the document
+   * specification information to the user.  The coder can presume that the HTML that is output from
+   * this configuration will be within appropriate <html> and <body> tags.
+   * The connector will be connected before this method can be called.
+   *@param out is the output to which any HTML should be sent.
+   *@param locale is the locale the output is preferred to be in.
+   *@param ds is the current document specification for this job.
+   *@param connectionSequenceNumber is the unique number of this connection within the job.
+   */
   @Override
   public void viewSpecification(IHTTPOutput out, Locale locale, Specification ds,
-    int connectionSequenceNumber)
-    throws ManifoldCFException, IOException {
+      int connectionSequenceNumber)
+          throws ManifoldCFException, IOException {
     Map<String, Object> paramMap = new HashMap<String, Object>();
     paramMap.put("SeqNum", Integer.toString(connectionSequenceNumber));
     fillInMessageTab(paramMap, ds);
@@ -703,14 +760,14 @@ public class RocketChatConnector extends
 
   /** Handle Messaging exceptions in a consistent global manner */
   protected static void handleIOException(IOException e, String context)
-    throws ManifoldCFException, ServiceInterruption
+      throws ManifoldCFException, ServiceInterruption
   {
     Logging.connectors.error("RocketChat: Error "+context+": "+e.getMessage(),e);
     throw new ManifoldCFException("Error "+context+": "+e.getMessage(),e);
   }
 
   /** Class to set up connection.
-  */
+   */
   protected static class ConnectThread extends Thread
   {
     protected final String serverUrl;
@@ -744,7 +801,7 @@ public class RocketChatConnector extends
     }
 
     public RocketChatSession finishUp()
-      throws IOException, InterruptedException
+        throws IOException, InterruptedException
     {
       try
       {
@@ -769,7 +826,7 @@ public class RocketChatConnector extends
   }
 
   /** Class to close the session.
-  */
+   */
   protected static class CloseSessionThread extends Thread
   {
     protected final RocketChatSession session;
@@ -795,7 +852,7 @@ public class RocketChatConnector extends
     }
 
     public void finishUp()
-      throws IOException, InterruptedException
+        throws IOException, InterruptedException
     {
       try
       {
@@ -819,7 +876,7 @@ public class RocketChatConnector extends
   }
 
   /** Class to check the connection.
-  */
+   */
   protected static class CheckConnectionThread extends Thread
   {
     protected final RocketChatSession session;
@@ -845,7 +902,7 @@ public class RocketChatConnector extends
     }
 
     public void finishUp()
-      throws IOException, InterruptedException
+        throws IOException, InterruptedException
     {
       try
       {
@@ -869,19 +926,17 @@ public class RocketChatConnector extends
   }
 
   /** Class to send Rocket.Chat messages.
-  */
+   */
   protected static class SendThread extends Thread
   {
     protected final RocketChatSession session;
-    protected final String channel;
-    protected final String message;
+    protected final RocketChatMessage message;
 
     protected Throwable exception = null;
 
-    public SendThread(RocketChatSession session, String channel, String message)
+    public SendThread(RocketChatSession session, RocketChatMessage message)
     {
       this.session = session;
-      this.channel = channel;
       this.message = message;
       setDaemon(true);
     }
@@ -890,7 +945,7 @@ public class RocketChatConnector extends
     {
       try
       {
-        session.send(channel, message);
+        session.send(message);
       }
       catch (Throwable e)
       {
@@ -899,7 +954,7 @@ public class RocketChatConnector extends
     }
 
     public void finishUp()
-      throws IOException, InterruptedException
+        throws IOException, InterruptedException
     {
       try
       {

Modified: manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatCredentials.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatCredentials.java?rev=1813066&r1=1812793&r2=1813066&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatCredentials.java (original)
+++ manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatCredentials.java Mon Oct 23 19:27:53 2017
@@ -1,3 +1,21 @@
+/* $Id$ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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.apache.manifoldcf.crawler.notifications.rocketchat;
 
 public class RocketChatCredentials {

Modified: manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatMessage.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatMessage.java?rev=1813066&r1=1812793&r2=1813066&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatMessage.java (original)
+++ manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatMessage.java Mon Oct 23 19:27:53 2017
@@ -26,6 +26,10 @@ public class RocketChatMessage {
 
   private String alias;
   
+  private String emoji;
+  
+  private String avatar;
+  
   public String getChannel() {
     return channel;
   }
@@ -50,4 +54,20 @@ public class RocketChatMessage {
     this.alias = alias;
   }
 
+  public String getEmoji() {
+    return emoji;
+  }
+
+  public void setEmoji(String emoji) {
+    this.emoji = emoji;
+  }
+
+  public String getAvatar() {
+    return avatar;
+  }
+
+  public void setAvatar(String avatar) {
+    this.avatar = avatar;
+  }
+
 }

Modified: manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatSession.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatSession.java?rev=1813066&r1=1812793&r2=1813066&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatSession.java (original)
+++ manifoldcf/trunk/connectors/rocketchat/connector/src/main/java/org/apache/manifoldcf/crawler/notifications/rocketchat/RocketChatSession.java Mon Oct 23 19:27:53 2017
@@ -19,7 +19,6 @@
 package org.apache.manifoldcf.crawler.notifications.rocketchat;
 
 import java.io.IOException;
-import java.text.MessageFormat;
 
 import javax.net.ssl.SSLSocketFactory;
 
@@ -145,34 +144,6 @@ public class RocketChatSession
 
   public void checkConnection() throws IOException
   {
-    // test connection
-    HttpGet infoGet = new HttpGet(serverUrl + "/api/v1/info");
-    int statusCode;
-    Boolean success = null;
-    String error = "";
-    try (CloseableHttpResponse response = httpClient.execute(infoGet)) {
-      statusCode = response.getStatusLine().getStatusCode();
-      JsonNode jsonResponse = objectMapper.readTree(response.getEntity().getContent());
-      JsonNode successNode = jsonResponse.get("success");
-      JsonNode errorNode = jsonResponse.get("error");
-      if (successNode != null) {
-        success = successNode.asBoolean();
-      } else if (errorNode != null) {
-        error = errorNode.asText();
-      }
-
-      // the API responds with { "success" : true }
-      boolean isExpectedStatus = statusCode == HttpStatus.SC_OK;
-      boolean isConnectionOk = isExpectedStatus && success != null && success;
-      if (!isConnectionOk) {
-        String messageTemplate = "connection failed: status {0}, message: {1}";
-        String statusInfo = isExpectedStatus ? "ok" : statusCode + " is unexpected";
-        String details = success != null ? "success " + success : error;
-        String message = MessageFormat.format(messageTemplate, statusInfo, details);
-        throw new ClientProtocolException(message);
-      }
-    }
-    
     // test login
     Header[] authHeader = null;
     try {
@@ -182,10 +153,9 @@ public class RocketChatSession
         logout(authHeader);
       }
     }
-
   }
 
-  public void send(String channel, String message) throws IOException
+  public void send(RocketChatMessage message) throws IOException
   {
     Header[] authHeader = null;
     try {
@@ -194,14 +164,7 @@ public class RocketChatSession
       HttpPost messagePost = new HttpPost(serverUrl + "/api/v1/chat.postMessage");
       messagePost.setHeaders(authHeader);
   
-      RocketChatMessage rocketChatMessage = new RocketChatMessage();
-      if (StringUtils.isNotBlank(channel)) {
-        rocketChatMessage.setChannel(channel);
-      }
-      rocketChatMessage.setText(message);
-      rocketChatMessage.setAlias("Apache ManifoldCF");
-  
-      String json = objectMapper.writeValueAsString(rocketChatMessage);
+      String json = objectMapper.writeValueAsString(message);
   
       HttpEntity entity = EntityBuilder.create()
           .setContentType(ContentType.APPLICATION_JSON)
@@ -215,7 +178,7 @@ public class RocketChatSession
           EntityUtils.consume(response.getEntity());
         } else {
           Logging.connectors.error("Sending Rocket.Chat message failed with statusline " + response.getStatusLine());
-          Logging.connectors.debug("  Response was: " + EntityUtils.toString(response.getEntity()));
+          Logging.connectors.error("  Response was: " + EntityUtils.toString(response.getEntity()));
         }
       }
     } finally {
@@ -244,7 +207,6 @@ public class RocketChatSession
         
         JsonNode jsonResponse = objectMapper.readTree(response.getEntity().getContent());
         JsonNode dataNode = jsonResponse.get("data");
-        JsonNode errorNode = jsonResponse.get("error");
         if (dataNode != null) {
           String authToken = dataNode.get("authToken").asText();
           String userId = dataNode.get("userId").asText();
@@ -254,19 +216,15 @@ public class RocketChatSession
               new BasicHeader("X-User-Id", userId)
           };  
         } else {
-          String message;
-          if (errorNode != null) {
-            message = errorNode.asText();
-          } else {
-            message = "login response did not contain authentication data";
-          }
-          throw new ClientProtocolException(message);
+          Logging.connectors.error("The login returned OK, but the response did not contain any authentication data.");
+          Logging.connectors.error("  Response was: " + objectMapper.writeValueAsString(jsonResponse));
+          throw new ClientProtocolException("login response did not contain any authentication data");
         }
         
         
       } else {
         Logging.connectors.error("Login to Rocket.Chat failed with statusline " + response.getStatusLine());
-        Logging.connectors.debug("  Response was: " + EntityUtils.toString(response.getEntity()));
+        Logging.connectors.error("  Response was: " + EntityUtils.toString(response.getEntity()));
         throw new HttpResponseException(statusCode, response.getStatusLine().getReasonPhrase());
       }
     }
@@ -279,7 +237,7 @@ public class RocketChatSession
       int statusCode = response.getStatusLine().getStatusCode();
       if (statusCode != HttpStatus.SC_OK) {
         Logging.connectors.error("Logout from Rocket.Chat failed with statusline " + response.getStatusLine());
-        Logging.connectors.debug("  Response was: " + EntityUtils.toString(response.getEntity()));
+        Logging.connectors.error("  Response was: " + EntityUtils.toString(response.getEntity()));
       }
     }
   }

Modified: manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_en_US.properties
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_en_US.properties?rev=1813066&r1=1812793&r2=1813066&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_en_US.properties (original)
+++ manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_en_US.properties Mon Oct 23 19:27:53 2017
@@ -14,7 +14,7 @@
 # limitations under the License.
 
 RocketChatConnector.RestAPI=Rocket.Chat REST API
-RocketChatConnector.Message=Message
+RocketChatConnector.Message=Rocket.Chat Notifications
 
 RocketChatConnector.EnterAServerUrl=Enter a Rocket.Chat server URL
 RocketChatConnector.EnterAUser=Enter a user (username or email)
@@ -31,6 +31,8 @@ RocketChatConnector.ProxyUsernameColon=P
 RocketChatConnector.ProxyPasswordColon=Proxy NTLM Password:
 RocketChatConnector.ProxyDomainColon=Proxy NTLM Authentication Domain:
 
+RocketChatConnector.Globals=Global Rocket.Chat Settings
+
 RocketChatConnector.JobFinished=Job finished
 RocketChatConnector.JobStopErrorAbort=Job stopped due to error abort
 RocketChatConnector.JobStopManualAbort=Job stopped due to manual abort
@@ -39,4 +41,8 @@ RocketChatConnector.JobStopSchedulePause
 RocketChatConnector.JobStopRestart=Job stopped due to job restart
 
 RocketChatConnector.ChannelColon=Channel:
-RocketChatConnector_MessageColon=Message:
+RocketChatConnector.MessageColon=Message:
+RocketChatConnector.DefaultChannelColon=Default Channel:
+RocketChatConnector.AliasColon=Alias:
+RocketChatConnector.EmojiColon=Emoji:
+RocketChatConnector.AvatarColon=Avatar:

Modified: manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_es_ES.properties
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_es_ES.properties?rev=1813066&r1=1812793&r2=1813066&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_es_ES.properties (original)
+++ manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_es_ES.properties Mon Oct 23 19:27:53 2017
@@ -14,7 +14,7 @@
 # limitations under the License.
 
 RocketChatConnector.RestAPI=Rocket.Chat REST API
-RocketChatConnector.Message=Message
+RocketChatConnector.Message=Rocket.Chat Notifications
 
 RocketChatConnector.EnterAServerUrl=Enter a Rocket.Chat server URL
 RocketChatConnector.EnterAUser=Enter a user (username or email)
@@ -31,6 +31,8 @@ RocketChatConnector.ProxyUsernameColon=P
 RocketChatConnector.ProxyPasswordColon=Proxy NTLM Password:
 RocketChatConnector.ProxyDomainColon=Proxy NTLM Authentication Domain:
 
+RocketChatConnector.Globals=Global Rocket.Chat Settings
+
 RocketChatConnector.JobFinished=Job finished
 RocketChatConnector.JobStopErrorAbort=Job stopped due to error abort
 RocketChatConnector.JobStopManualAbort=Job stopped due to manual abort
@@ -39,4 +41,8 @@ RocketChatConnector.JobStopSchedulePause
 RocketChatConnector.JobStopRestart=Job stopped due to job restart
 
 RocketChatConnector.ChannelColon=Channel:
-RocketChatConnector_MessageColon=Message:
+RocketChatConnector.MessageColon=Message:
+RocketChatConnector.DefaultChannelColon=Default Channel:
+RocketChatConnector.AliasColon=Alias:
+RocketChatConnector.EmojiColon=Emoji:
+RocketChatConnector.AvatarColon=Avatar:

Modified: manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_ja_JP.properties
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_ja_JP.properties?rev=1813066&r1=1812793&r2=1813066&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_ja_JP.properties (original)
+++ manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_ja_JP.properties Mon Oct 23 19:27:53 2017
@@ -14,7 +14,7 @@
 # limitations under the License.
 
 RocketChatConnector.RestAPI=Rocket.Chat REST API
-RocketChatConnector.Message=Message
+RocketChatConnector.Message=Rocket.Chat Notifications
 
 RocketChatConnector.EnterAServerUrl=Enter a Rocket.Chat server URL
 RocketChatConnector.EnterAUser=Enter a user (username or email)
@@ -31,6 +31,8 @@ RocketChatConnector.ProxyUsernameColon=P
 RocketChatConnector.ProxyPasswordColon=Proxy NTLM Password:
 RocketChatConnector.ProxyDomainColon=Proxy NTLM Authentication Domain:
 
+RocketChatConnector.Globals=Global Rocket.Chat Settings
+
 RocketChatConnector.JobFinished=Job finished
 RocketChatConnector.JobStopErrorAbort=Job stopped due to error abort
 RocketChatConnector.JobStopManualAbort=Job stopped due to manual abort
@@ -39,4 +41,8 @@ RocketChatConnector.JobStopSchedulePause
 RocketChatConnector.JobStopRestart=Job stopped due to job restart
 
 RocketChatConnector.ChannelColon=Channel:
-RocketChatConnector_MessageColon=Message:
+RocketChatConnector.MessageColon=Message:
+RocketChatConnector.DefaultChannelColon=Default Channel:
+RocketChatConnector.AliasColon=Alias:
+RocketChatConnector.EmojiColon=Emoji:
+RocketChatConnector.AvatarColon=Avatar:

Modified: manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_zh_CN.properties
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_zh_CN.properties?rev=1813066&r1=1812793&r2=1813066&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_zh_CN.properties (original)
+++ manifoldcf/trunk/connectors/rocketchat/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/notifications/rocketchat/common_zh_CN.properties Mon Oct 23 19:27:53 2017
@@ -14,7 +14,7 @@
 # limitations under the License.
 
 RocketChatConnector.RestAPI=Rocket.Chat REST API
-RocketChatConnector.Message=Message
+RocketChatConnector.Message=Rocket.Chat Notifications
 
 RocketChatConnector.EnterAServerUrl=Enter a Rocket.Chat server URL
 RocketChatConnector.EnterAUser=Enter a user (username or email)
@@ -31,6 +31,8 @@ RocketChatConnector.ProxyUsernameColon=P
 RocketChatConnector.ProxyPasswordColon=Proxy NTLM Password:
 RocketChatConnector.ProxyDomainColon=Proxy NTLM Authentication Domain:
 
+RocketChatConnector.Globals=Global Rocket.Chat Settings
+
 RocketChatConnector.JobFinished=Job finished
 RocketChatConnector.JobStopErrorAbort=Job stopped due to error abort
 RocketChatConnector.JobStopManualAbort=Job stopped due to manual abort
@@ -39,4 +41,8 @@ RocketChatConnector.JobStopSchedulePause
 RocketChatConnector.JobStopRestart=Job stopped due to job restart
 
 RocketChatConnector.ChannelColon=Channel:
-RocketChatConnector_MessageColon=Message:
+RocketChatConnector.MessageColon=Message:
+RocketChatConnector.DefaultChannelColon=Default Channel:
+RocketChatConnector.AliasColon=Alias:
+RocketChatConnector.EmojiColon=Emoji:
+RocketChatConnector.AvatarColon=Avatar:

Modified: manifoldcf/trunk/connectors/rocketchat/connector/src/main/resources/org/apache/manifoldcf/crawler/notifications/rocketchat/SpecificationView.html
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/rocketchat/connector/src/main/resources/org/apache/manifoldcf/crawler/notifications/rocketchat/SpecificationView.html?rev=1813066&r1=1812793&r2=1813066&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/rocketchat/connector/src/main/resources/org/apache/manifoldcf/crawler/notifications/rocketchat/SpecificationView.html (original)
+++ manifoldcf/trunk/connectors/rocketchat/connector/src/main/resources/org/apache/manifoldcf/crawler/notifications/rocketchat/SpecificationView.html Mon Oct 23 19:27:53 2017
@@ -17,6 +17,38 @@ limitations under the License.
 
 <table class="displaytable">
 
+  <tr><td class="message" colspan="2"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.Globals'))</nobr></td></tr>
+  <tr>
+    <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.DefaultChannelColon'))</nobr></td>
+    <td class="value">
+      <nobr>$Encoder.bodyEscape($default_channel)</nobr>
+    </td>
+  </tr>
+  <tr>
+    <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.AliasColon'))</nobr></td>
+    <td class="value">
+      <nobr>$Encoder.bodyEscape($alias)</nobr>
+    </td>
+  </tr>
+  <tr>
+    <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.EmojiColon'))</nobr></td>
+    <td class="value">
+      <nobr>$Encoder.bodyEscape($emoji)</nobr>
+    </td>
+  </tr>
+  <tr>
+    <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.AvatarColon'))</nobr></td>
+    <td class="value">
+      <nobr>$Encoder.bodyEscape($avatar)</nobr>
+    </td>
+  </tr>
+  
+</table>
+
+<hr/>
+
+<table class="displaytable">
+
   <tr><td class="message" colspan="2"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.JobFinished'))</nobr></td></tr>
   <tr>
     <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.ChannelColon'))</nobr></td>
@@ -25,7 +57,7 @@ limitations under the License.
     </td>
   </tr>
   <tr>
-    <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector_MessageColon'))</nobr></td>
+    <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.MessageColon'))</nobr></td>
     <td class="value">
       $Encoder.bodyEscape($finished_MESSAGE)
     </td>
@@ -39,7 +71,7 @@ limitations under the License.
     </td>
   </tr>
   <tr>
-    <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector_MessageColon'))</nobr></td>
+    <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.MessageColon'))</nobr></td>
     <td class="value">
       $Encoder.bodyEscape($erroraborted_MESSAGE)
     </td>
@@ -53,7 +85,7 @@ limitations under the License.
     </td>
   </tr>
   <tr>
-    <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector_MessageColon'))</nobr></td>
+    <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.MessageColon'))</nobr></td>
     <td class="value">
       $Encoder.bodyEscape($manualaborted_MESSAGE)
     </td>
@@ -67,7 +99,7 @@ limitations under the License.
     </td>
   </tr>
   <tr>
-    <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector_MessageColon'))</nobr></td>
+    <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.MessageColon'))</nobr></td>
     <td class="value">
       $Encoder.bodyEscape($manualpaused_MESSAGE)
     </td>
@@ -81,7 +113,7 @@ limitations under the License.
     </td>
   </tr>
   <tr>
-    <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector_MessageColon'))</nobr></td>
+    <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.MessageColon'))</nobr></td>
     <td class="value">
       $Encoder.bodyEscape($schedulepaused_MESSAGE)
     </td>
@@ -95,7 +127,7 @@ limitations under the License.
     </td>
   </tr>
   <tr>
-    <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector_MessageColon'))</nobr></td>
+    <td class="description"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.MessageColon'))</nobr></td>
     <td class="value">
       $Encoder.bodyEscape($restarted_MESSAGE)
     </td>

Modified: manifoldcf/trunk/connectors/rocketchat/connector/src/main/resources/org/apache/manifoldcf/crawler/notifications/rocketchat/Specification_Message.html
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/rocketchat/connector/src/main/resources/org/apache/manifoldcf/crawler/notifications/rocketchat/Specification_Message.html?rev=1813066&r1=1812793&r2=1813066&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/rocketchat/connector/src/main/resources/org/apache/manifoldcf/crawler/notifications/rocketchat/Specification_Message.html (original)
+++ manifoldcf/trunk/connectors/rocketchat/connector/src/main/resources/org/apache/manifoldcf/crawler/notifications/rocketchat/Specification_Message.html Mon Oct 23 19:27:53 2017
@@ -19,6 +19,45 @@ limitations under the License.
 
 <table class="displaytable">
 
+  <tr><td class="message" colspan="2"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.Globals'))</nobr></td></tr>
+  <tr>
+    <td class="description">
+      <nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.DefaultChannelColon'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" name="default_channel" size="32" value="$Encoder.attributeEscape($default_channel)"/>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      <nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.AliasColon'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" name="alias" size="32" value="$Encoder.attributeEscape($alias)"/>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      <nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.EmojiColon'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" name="emoji" size="32" value="$Encoder.attributeEscape($emoji)"/>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      <nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.AvatarColon'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" name="avatar" size="32" value="$Encoder.attributeEscape($avatar)"/>
+    </td>
+  </tr>
+</table>
+
+<hr/>
+
+<table class="displaytable">
+
   <tr><td class="message" colspan="2"><nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.JobFinished'))</nobr></td></tr>
   <tr>
     <td class="description">
@@ -30,7 +69,7 @@ limitations under the License.
   </tr>
   <tr>
     <td class="description">
-      <nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector_MessageColon'))</nobr>
+      <nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.MessageColon'))</nobr>
     </td>
     <td class="value">
       <textarea name="s${SeqNum}_finished_message" rows="10" cols="50">$Encoder.bodyEscape($finished_MESSAGE)</textarea>
@@ -48,7 +87,7 @@ limitations under the License.
   </tr>
   <tr>
     <td class="description">
-      <nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector_MessageColon'))</nobr>
+      <nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.MessageColon'))</nobr>
     </td>
     <td class="value">
       <textarea name="s${SeqNum}_erroraborted_message" rows="10" cols="50">$Encoder.bodyEscape($erroraborted_MESSAGE)</textarea>
@@ -66,7 +105,7 @@ limitations under the License.
   </tr>
   <tr>
     <td class="description">
-      <nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector_MessageColon'))</nobr>
+      <nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.MessageColon'))</nobr>
     </td>
     <td class="value">
       <textarea name="s${SeqNum}_manualaborted_message" rows="10" cols="50">$Encoder.bodyEscape($manualaborted_MESSAGE)</textarea>
@@ -84,7 +123,7 @@ limitations under the License.
   </tr>
   <tr>
     <td class="description">
-      <nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector_MessageColon'))</nobr>
+      <nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.MessageColon'))</nobr>
     </td>
     <td class="value">
       <textarea name="s${SeqNum}_manualpaused_message" rows="10" cols="50">$Encoder.bodyEscape($manualpaused_MESSAGE)</textarea>
@@ -102,7 +141,7 @@ limitations under the License.
   </tr>
   <tr>
     <td class="description">
-      <nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector_MessageColon'))</nobr>
+      <nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.MessageColon'))</nobr>
     </td>
     <td class="value">
       <textarea name="s${SeqNum}_schedulepaused_message" rows="10" cols="50">$Encoder.bodyEscape($schedulepaused_MESSAGE)</textarea>
@@ -120,7 +159,7 @@ limitations under the License.
   </tr>
   <tr>
     <td class="description">
-      <nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector_MessageColon'))</nobr>
+      <nobr>$Encoder.bodyEscape($ResourceBundle.getString('RocketChatConnector.MessageColon'))</nobr>
     </td>
     <td class="value">
       <textarea name="s${SeqNum}_restarted_message" rows="10" cols="50">$Encoder.bodyEscape($restarted_MESSAGE)</textarea>
@@ -131,6 +170,11 @@ limitations under the License.
 
 #else
 
+<input type="hidden" name="default_channel" value="$Encoder.attributeEscape($default_channel)"/>
+<input type="hidden" name="alias" value="$Encoder.attributeEscape($alias)"/>
+<input type="hidden" name="emoji" value="$Encoder.attributeEscape($emoji)"/>
+<input type="hidden" name="avatar" value="$Encoder.attributeEscape($avatar)"/>
+
 <input type="hidden" name="s${SeqNum}_finished_channel" value="$Encoder.attributeEscape($finished_CHANNEL)"/>
 <input type="hidden" name="s${SeqNum}_finished_message" value="$Encoder.attributeEscape($finished_MESSAGE)"/>
 

Modified: manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/end-user-documentation.xml
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/end-user-documentation.xml?rev=1813066&r1=1813065&r2=1813066&view=diff
==============================================================================
--- manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/end-user-documentation.xml (original)
+++ manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/end-user-documentation.xml Mon Oct 23 19:27:53 2017
@@ -3116,6 +3116,26 @@ curl -XGET http://localhost:9200/index/_
 	                    If no channel is defined, the message is sent to the default channel of the Slack Incoming WebHook.</p>
 	            <p>The "Message" supports Markdown formatting. Refer to the <a href="https://api.slack.com/custom-integrations">Slack Custom Integrations</a> documentation for more information.</p>
             </section>
+            
+            <section>
+                <title>Rocket.Chat Notifications</title>
+	            <p>The Rocket.Chat notification connection allows you to send job notifications to a Rocket.Chat channel. The connection type uses the Rocket.Chat REST API to post messages.</p>
+	            <p>A Rocket.Chat notification connection has only one special tab on the notification connection editing screen: the "Rocket.Chat REST API" tab.  The tab looks like this:</p>
+	            <br/><br/>
+	            <figure src="images/en_US/rocketchat-configure-restapi.PNG" alt="Rocket.Chat Notification Connection, Rocket.Chat REST API tab" width="80%"/>
+	            <br/><br/>
+	            <p>Enter the server URL of your Rocket.Chat instance and the user credentials here. The user field takes either the username or the email address of your Rocket.Chat user. Fill out the proxy fields if you need
+	               to connect to your Rocket.Chat through an http proxy.</p>
+	            <p>When you configure a job to use a notification connection of the Rocket.Chat notification type, an additional tab "Rocket.Chat Notifications" is presented.</p>
+	            <p>The tab looks like this:</p>
+	            <br/><br/>
+	            <figure src="images/en_US/rocketchat-job-notifications.PNG" alt="Rocket.Chat Notification Job, Notification tab" width="80%"/>
+	            <br/><br/>
+	            <p>This tab allows you to set the notification messages for the different job statuses. The tab begins with a section for global settings, followed by multiple sections for each
+	               notification type. The default channel defines the channel, to which the messages are posted. You can customize the appearance of the posted message with the alias, emoji and avatar fields.</p>
+	            <p>The "Channel" field in the second section allows you to override the default channel for the corresponding notification type. If no channel is defined, the message is sent to the specified default channel.</p>
+	            <p>The "Message" field holds the actual message that will be posted to Rocket.Chat. The field supports Markdown for formatting the message. Refer to the <a href="https://docs.rocket.chat">Rocket.Chat</a> documentation for detailed information.</p>
+            </section>
 
         </section>
 

Modified: manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/included-connectors.xml
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/included-connectors.xml?rev=1813066&r1=1813065&r2=1813066&view=diff
==============================================================================
--- manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/included-connectors.xml (original)
+++ manifoldcf/trunk/site/src/documentation/content/xdocs/en_US/included-connectors.xml Mon Oct 23 19:27:53 2017
@@ -54,7 +54,6 @@
         <tr><td>Meridio (Autonomy)</td><td> Pure Java </td><td> Win </td><td> N/A </td><td> Tested with Meridio 4.1, 5.0 </td></tr> 
         <tr><td>RSS</td><td> Pure Java </td><td> N/A </td><td> N/A </td><td>Atom, RSS 2.0, others </td></tr>
         <tr><td>SharePoint (MSFT)</td><td>Pure Java </td><td>Win</td><td> N/A </td><td> Tested with SharePoint 2003 (2.0), 2007 (3.0), 2010 (4.0), 2013 (5.0)</td></tr>
-        <tr><td>Slack</td><td>Pure Java</td><td> N/A </td><td> N/A </td><td>Tested with Slack API November 2016</td></tr>
         <tr><td>Web</td><td> Pure Java </td><td>N/A</td><td> N/A </td><td>HTML Version 1.0, 1.1, 2.0, Atom, RSS 2.0, others </td></tr>
         <tr><td>Windows Shares</td><td>Pure Java</td><td> Win, Samba, NetApp, other NAS systems </td><td>N/A</td><td>N/A</td></tr>
         <tr><td>Wiki</td><td> Pure Java </td><td>N/A</td><td> N/A </td><td>Wiki version 1.8 and above </td></tr>
@@ -88,6 +87,13 @@
       	<tr><td>OpenNLP Extractor</td><td>Pure Java</td><td>Various</td><td>Various</td><td>Various</td></tr>
       	<tr><td>Tika Content Extractor</td><td>Pure Java</td><td>Various</td><td>Various</td><td>Various</td></tr>
       </table>
+      
+      <table>
+      	<caption>Notification Connector interoperability table</caption>
+      	<tr><td>Email</td><td>Pure Java</td><td>Various</td><td>Javamail 1.4</td><td>N/A</td></tr>
+      	<tr><td>Rocket.Chat</td><td>Pure Java</td><td> N/A </td><td> N/A </td><td>Tested with Rocket.Chat 0.58.1</td></tr>
+      	<tr><td>Slack</td><td>Pure Java</td><td> N/A </td><td> N/A </td><td>Tested with Slack API November 2016</td></tr>
+      </table>
     </section>
   </body>
 </document>



Mime
View raw message