diff --git a/build/build.xml b/build/build.xml
index 60a7d5a9..93f6fe32 100644
--- a/build/build.xml
+++ b/build/build.xml
@@ -23,8 +23,8 @@
-
-
+
+
diff --git a/build/installer/spark.install4j b/build/installer/spark.install4j
index dee87647..d3f9296a 100644
--- a/build/installer/spark.install4j
+++ b/build/installer/spark.install4j
@@ -1,6 +1,6 @@
-
-
+
+
@@ -93,7 +93,9 @@
-
+
+
+
@@ -263,27 +265,6 @@
-
-
-
-
-
-
-
-
@@ -296,6 +277,14 @@
context.getBooleanVariable("executeLauncherAction") && (!context.isUnattended())
+
+
+
+
+
+
+
+
diff --git a/src/java/org/jivesoftware/Spark.java b/src/java/org/jivesoftware/Spark.java
index cd6d9fc7..4ad19c75 100644
--- a/src/java/org/jivesoftware/Spark.java
+++ b/src/java/org/jivesoftware/Spark.java
@@ -13,7 +13,6 @@ package org.jivesoftware;
import de.javasoft.plaf.synthetica.SyntheticaBlueMoonLookAndFeel;
import de.javasoft.plaf.synthetica.SyntheticaLookAndFeel;
import org.jivesoftware.resource.Default;
-import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.spark.util.log.Log;
import org.jivesoftware.sparkimpl.settings.local.LocalPreferences;
import org.jivesoftware.sparkimpl.settings.local.SettingsManager;
@@ -42,7 +41,7 @@ public final class Spark {
private static final String USER_SPARK_HOME = System.getProperties().getProperty("user.home") + "/" + getUserConf();
- private static String argument;
+ public static String ARGUMENTS;
private static File RESOURCE_DIRECTORY;
private static File BIN_DIRECTORY;
@@ -214,18 +213,18 @@ public final class Spark {
* will be returned.
*/
public static String getArgumentValue(String argumentName) {
- if (argument == null) {
+ if (ARGUMENTS == null) {
return null;
}
String arg = argumentName + "=";
- int index = argument.indexOf(arg);
+ int index = ARGUMENTS.indexOf(arg);
if (index == -1) {
return null;
}
- String value = argument.substring(index + arg.length());
+ String value = ARGUMENTS.substring(index + arg.length());
int index2 = value.indexOf("&");
if (index2 != -1) {
// Must be the last argument
@@ -237,7 +236,7 @@ public final class Spark {
}
public void setArgument(String arguments) {
- argument = arguments;
+ ARGUMENTS = arguments;
}
/**
diff --git a/src/java/org/jivesoftware/SparkStartupListener.java b/src/java/org/jivesoftware/SparkStartupListener.java
index 4f0fa8b4..b248eab3 100644
--- a/src/java/org/jivesoftware/SparkStartupListener.java
+++ b/src/java/org/jivesoftware/SparkStartupListener.java
@@ -10,14 +10,8 @@
package org.jivesoftware;
-import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.spark.ChatManager;
import org.jivesoftware.spark.SparkManager;
-import org.jivesoftware.spark.UserManager;
-import org.jivesoftware.spark.ui.ChatRoom;
-import org.jivesoftware.spark.ui.conferences.ConferenceUtils;
-import org.jivesoftware.spark.util.StringUtils;
-import org.jivesoftware.spark.util.log.Log;
/**
* Uses the Windows registry to perform URI XMPP mappings.
@@ -26,98 +20,10 @@ import org.jivesoftware.spark.util.log.Log;
*/
public class SparkStartupListener implements com.install4j.api.launcher.StartupNotification.Listener {
- public void startupPerformed(String string) {
- if (string.indexOf("xmpp") == -1) {
- return;
- }
-
- if (string.indexOf("?message") != -1) {
- try {
- handleJID(string);
- }
- catch (Exception e) {
- Log.error(e);
- }
- }
- else if (string.indexOf("?join") != -1) {
- try {
- handleConference(string);
- }
- catch (Exception e) {
- Log.error(e);
- }
- }
- else if (string.indexOf("?") == -1) {
- // Then use the direct jid
- int index = string.indexOf(":");
- if (index != -1) {
- String jid = string.substring(index + 1);
-
- UserManager userManager = SparkManager.getUserManager();
- String nickname = userManager.getUserNicknameFromJID(jid);
- if (nickname == null) {
- nickname = jid;
- }
-
- ChatManager chatManager = SparkManager.getChatManager();
- ChatRoom chatRoom = chatManager.createChatRoom(jid, nickname, nickname);
- chatManager.getChatContainer().activateChatRoom(chatRoom);
- }
- }
-
+ public void startupPerformed(String arguments) {
+ final ChatManager chatManager = SparkManager.getChatManager();
+ chatManager.handleURIMapping(arguments);
}
- /**
- * Factory method to handle different types of URI Mappings.
- *
- * @param uriMapping the uri mapping string.
- */
- public void handleJID(String uriMapping) {
- int index = uriMapping.indexOf("xmpp:");
- int messageIndex = uriMapping.indexOf("?message");
-
- int bodyIndex = uriMapping.indexOf("body=");
-
- String jid = uriMapping.substring(index + 5, messageIndex);
- String body = null;
-
- // Find body
- if (bodyIndex != -1) {
- body = uriMapping.substring(bodyIndex + 5);
- }
-
- body = StringUtils.unescapeFromXML(body);
- body = StringUtils.replace(body, "%20", " ");
-
- UserManager userManager = SparkManager.getUserManager();
- String nickname = userManager.getUserNicknameFromJID(jid);
- if (nickname == null) {
- nickname = jid;
- }
-
- ChatManager chatManager = SparkManager.getChatManager();
- ChatRoom chatRoom = chatManager.createChatRoom(jid, nickname, nickname);
- if (body != null) {
- Message message = new Message();
- message.setBody(body);
- chatRoom.sendMessage(message);
- }
-
- chatManager.getChatContainer().activateChatRoom(chatRoom);
- }
-
- /**
- * Handles the URI Mapping to join a conference room.
- *
- * @param uriMapping the uri mapping.
- * @throws Exception thrown if the conference cannot be joined.
- */
- public void handleConference(String uriMapping) {
- int index = uriMapping.indexOf("xmpp:");
- int join = uriMapping.indexOf("?join");
-
- String conference = uriMapping.substring(index + 5, join);
- ConferenceUtils.joinConferenceOnSeperateThread(conference, conference, null);
- }
}
diff --git a/src/java/org/jivesoftware/launcher/Installer.java b/src/java/org/jivesoftware/launcher/Installer.java
index b421422e..271f1385 100644
--- a/src/java/org/jivesoftware/launcher/Installer.java
+++ b/src/java/org/jivesoftware/launcher/Installer.java
@@ -20,6 +20,8 @@ import com.install4j.api.windows.WinRegistry;
import java.io.File;
+import javax.swing.JOptionPane;
+
/**
* The installer class is used by the Install4j Installer to setup registry entries
* during the setup process.
@@ -49,9 +51,7 @@ public class Installer implements InstallAction {
final File sparkDirectory;
String sparkPath = "";
try {
- String executable = installerContext.getMediaName();
-
- sparkDirectory = new File(installerContext.getInstallationDirectory(), executable);
+ sparkDirectory = new File(installerContext.getInstallationDirectory(), "Spark.exe");
sparkPath = sparkDirectory.getCanonicalPath();
}
diff --git a/src/java/org/jivesoftware/spark/ChatManager.java b/src/java/org/jivesoftware/spark/ChatManager.java
index 4573101c..7b95d5ce 100644
--- a/src/java/org/jivesoftware/spark/ChatManager.java
+++ b/src/java/org/jivesoftware/spark/ChatManager.java
@@ -33,6 +33,7 @@ import org.jivesoftware.spark.ui.GlobalMessageListener;
import org.jivesoftware.spark.ui.MessageFilter;
import org.jivesoftware.spark.ui.SparkTabHandler;
import org.jivesoftware.spark.ui.TranscriptWindowInterceptor;
+import org.jivesoftware.spark.ui.conferences.ConferenceUtils;
import org.jivesoftware.spark.ui.conferences.RoomInvitationListener;
import org.jivesoftware.spark.ui.rooms.ChatRoomImpl;
import org.jivesoftware.spark.ui.rooms.GroupChatRoom;
@@ -42,10 +43,6 @@ import org.jivesoftware.spark.util.log.Log;
import org.jivesoftware.sparkimpl.settings.local.LocalPreferences;
import org.jivesoftware.sparkimpl.settings.local.SettingsManager;
-import javax.swing.Icon;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-
import java.awt.Color;
import java.awt.Component;
import java.util.ArrayList;
@@ -57,6 +54,10 @@ import java.util.List;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
+import javax.swing.Icon;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+
/**
* Handles the Chat Management of each individual Workspace. The ChatManager is responsible
* for creation and removal of chat rooms, transcripts, and transfers and room invitations.
@@ -73,10 +74,10 @@ public class ChatManager implements MessageEventNotificationListener {
public static Color ERROR_COLOR = (Color)UIManager.get("Error.foreground");
public static Color[] COLORS = {Color.red, Color.blue, Color.gray, Color.magenta, new Color(238, 153, 247), new Color(128, 128, 0), new Color(173, 205, 50),
- new Color(181, 0, 0), new Color(0, 100, 0), new Color(237, 150, 122), new Color(0, 139, 139), new Color(218, 14, 0), new Color(147, 112, 219),
- new Color(205, 133, 63), new Color(163, 142, 35), new Color(72, 160, 237), new Color(255, 140, 0), new Color(106, 90, 205), new Color(224, 165, 32),
- new Color(255, 69, 0), new Color(255, 99, 72), new Color(109, 130, 180), new Color(233, 0, 0), new Color(139, 69, 19), new Color(255, 127, 80),
- new Color(140, 105, 225)};
+ new Color(181, 0, 0), new Color(0, 100, 0), new Color(237, 150, 122), new Color(0, 139, 139), new Color(218, 14, 0), new Color(147, 112, 219),
+ new Color(205, 133, 63), new Color(163, 142, 35), new Color(72, 160, 237), new Color(255, 140, 0), new Color(106, 90, 205), new Color(224, 165, 32),
+ new Color(255, 69, 0), new Color(255, 99, 72), new Color(109, 130, 180), new Color(233, 0, 0), new Color(139, 69, 19), new Color(255, 127, 80),
+ new Color(140, 105, 225)};
private List messageFilters = new ArrayList();
@@ -129,9 +130,9 @@ public class ChatManager implements MessageEventNotificationListener {
SparkManager.getMessageEventManager().addMessageEventNotificationListener(this);
// Add message event request listener
MessageEventRequestListener messageEventRequestListener =
- new ChatMessageEventRequestListener();
+ new ChatMessageEventRequestListener();
SparkManager.getMessageEventManager().
- addMessageEventRequestListener(messageEventRequestListener);
+ addMessageEventRequestListener(messageEventRequestListener);
// Add Default Chat Room Decorator
addSparkTabHandler(new DefaultTabHandler());
@@ -793,4 +794,103 @@ public class ChatManager implements MessageEventNotificationListener {
final ContactList contactList = SparkManager.getWorkspace().getContactList();
return contactList.getSelectedUsers();
}
+
+ /**
+ * Handles XMPP URI Mappings.
+ *
+ * @param arguments the arguments passed into Spark.
+ */
+ public void handleURIMapping(String arguments) {
+ if (arguments.indexOf("xmpp") == -1) {
+ return;
+ }
+
+ if (arguments.indexOf("?message") != -1) {
+ try {
+ handleJID(arguments);
+ }
+ catch (Exception e) {
+ Log.error(e);
+ }
+ }
+ else if (arguments.indexOf("?join") != -1) {
+ try {
+ handleConference(arguments);
+ }
+ catch (Exception e) {
+ Log.error(e);
+ }
+ }
+ else if (arguments.indexOf("?") == -1) {
+ // Then use the direct jid
+ int index = arguments.indexOf(":");
+ if (index != -1) {
+ String jid = arguments.substring(index + 1);
+
+ UserManager userManager = SparkManager.getUserManager();
+ String nickname = userManager.getUserNicknameFromJID(jid);
+ if (nickname == null) {
+ nickname = jid;
+ }
+
+ ChatManager chatManager = SparkManager.getChatManager();
+ ChatRoom chatRoom = chatManager.createChatRoom(jid, nickname, nickname);
+ chatManager.getChatContainer().activateChatRoom(chatRoom);
+ }
+ }
+ }
+
+ /**
+ * Factory method to handle different types of URI Mappings.
+ *
+ * @param uriMapping the uri mapping string.
+ */
+ private void handleJID(String uriMapping) {
+ int index = uriMapping.indexOf("xmpp:");
+ int messageIndex = uriMapping.indexOf("?message");
+
+ int bodyIndex = uriMapping.indexOf("body=");
+
+ String jid = uriMapping.substring(index + 5, messageIndex);
+ String body = null;
+
+ // Find body
+ if (bodyIndex != -1) {
+ body = uriMapping.substring(bodyIndex + 5);
+ }
+
+ body = org.jivesoftware.spark.util.StringUtils.unescapeFromXML(body);
+ body = org.jivesoftware.spark.util.StringUtils.replace(body, "%20", " ");
+
+ UserManager userManager = SparkManager.getUserManager();
+ String nickname = userManager.getUserNicknameFromJID(jid);
+ if (nickname == null) {
+ nickname = jid;
+ }
+
+ ChatManager chatManager = SparkManager.getChatManager();
+ ChatRoom chatRoom = chatManager.createChatRoom(jid, nickname, nickname);
+ if (body != null) {
+ Message message = new Message();
+ message.setBody(body);
+ chatRoom.sendMessage(message);
+ }
+
+ chatManager.getChatContainer().activateChatRoom(chatRoom);
+ }
+
+ /**
+ * Handles the URI Mapping to join a conference room.
+ *
+ * @param uriMapping the uri mapping.
+ * @throws Exception thrown if the conference cannot be joined.
+ */
+ private void handleConference(String uriMapping) {
+ int index = uriMapping.indexOf("xmpp:");
+ int join = uriMapping.indexOf("?join");
+
+ String conference = uriMapping.substring(index + 5, join);
+ ConferenceUtils.joinConferenceOnSeperateThread(conference, conference, null);
+ }
+
}
\ No newline at end of file
diff --git a/src/java/org/jivesoftware/spark/Workspace.java b/src/java/org/jivesoftware/spark/Workspace.java
index cee85658..b20027ff 100644
--- a/src/java/org/jivesoftware/spark/Workspace.java
+++ b/src/java/org/jivesoftware/spark/Workspace.java
@@ -12,6 +12,7 @@ package org.jivesoftware.spark;
import org.jivesoftware.MainWindow;
import org.jivesoftware.MainWindowListener;
+import org.jivesoftware.Spark;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.filter.PacketFilter;
@@ -24,7 +25,6 @@ import org.jivesoftware.smackx.debugger.EnhancedDebuggerWindow;
import org.jivesoftware.smackx.packet.DelayInformation;
import org.jivesoftware.spark.component.tabbedPane.SparkTabbedPane;
import org.jivesoftware.spark.filetransfer.SparkTransferManager;
-import org.jivesoftware.spark.phone.PhoneManager;
import org.jivesoftware.spark.search.SearchManager;
import org.jivesoftware.spark.ui.ChatContainer;
import org.jivesoftware.spark.ui.ChatRoom;
@@ -277,6 +277,9 @@ public class Workspace extends JPanel implements PacketListener {
};
TaskEngine.getInstance().schedule(offlineTask, 10000);
+
+ // Check URI Mappings
+ SparkManager.getChatManager().handleURIMapping(Spark.ARGUMENTS);
}
diff --git a/src/java/org/jivesoftware/sparkimpl/settings/JiveInfo.java b/src/java/org/jivesoftware/sparkimpl/settings/JiveInfo.java
index 5a746188..86365977 100644
--- a/src/java/org/jivesoftware/sparkimpl/settings/JiveInfo.java
+++ b/src/java/org/jivesoftware/sparkimpl/settings/JiveInfo.java
@@ -17,11 +17,11 @@ public class JiveInfo {
}
public static String getVersion() {
- return "2.5.6";
+ return "2.5.7.beta1";
}
public static String getBuildNumber() {
- return "2.5.6";
+ return "2.5.7.beta1";
}
public static String getOS() {