diff --git a/build.xml b/build.xml
index 416d65c42..a300c9489 100644
--- a/build.xml
+++ b/build.xml
@@ -1272,6 +1272,8 @@ javax.swing.event, javax.swing.border"/>
manifest="${src}/net/java/sip/communicator/impl/version/version.impl.manifest.mf">
+
diff --git a/src/net/java/sip/communicator/impl/protocol/sip/ProtocolProviderServiceSipImpl.java b/src/net/java/sip/communicator/impl/protocol/sip/ProtocolProviderServiceSipImpl.java
index 07c09b0ae..d89c51178 100644
--- a/src/net/java/sip/communicator/impl/protocol/sip/ProtocolProviderServiceSipImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/sip/ProtocolProviderServiceSipImpl.java
@@ -16,6 +16,7 @@
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.protocol.event.*;
+import net.java.sip.communicator.service.version.*;
import net.java.sip.communicator.util.*;
import gov.nist.javax.sip.*;
import gov.nist.javax.sip.header.*;
@@ -2177,11 +2178,19 @@ public UserAgentHeader getSipCommUserAgentHeader()
try
{
List userAgentTokens = new LinkedList();
- userAgentTokens.add("SIP Communicator");
- userAgentTokens.add("1.0");
- String dateString
- = new Date().toString().replace(' ', '_').replace(':', '-');
- userAgentTokens.add("CVS-" + dateString);
+
+ Version ver =
+ SipActivator.getVersionService().getCurrentVersion();
+
+ userAgentTokens.add(ver.getApplicationName());
+ userAgentTokens.add(
+ ver.getVersionMajor() + "." + ver.getVersionMinor());
+
+ if(ver.isNightly())
+ userAgentTokens.add(ver.getNightlyBuildID());
+
+ String osName = System.getProperty("os.name");
+ userAgentTokens.add(osName);
userAgentHeader
= this.headerFactory.createUserAgentHeader(userAgentTokens);
diff --git a/src/net/java/sip/communicator/impl/protocol/sip/SipActivator.java b/src/net/java/sip/communicator/impl/protocol/sip/SipActivator.java
index 950e78279..4452bdc17 100644
--- a/src/net/java/sip/communicator/impl/protocol/sip/SipActivator.java
+++ b/src/net/java/sip/communicator/impl/protocol/sip/SipActivator.java
@@ -14,6 +14,7 @@
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.*;
import net.java.sip.communicator.service.media.*;
+import net.java.sip.communicator.service.version.*;
/**
* Activates the SIP package
@@ -30,6 +31,7 @@ public class SipActivator
private static NetworkAddressManagerService networkAddressManagerService
= null;
private static MediaService mediaService = null;
+ private static VersionService versionService = null;
private static ProtocolProviderFactorySipImpl sipProviderFactory = null;
@@ -146,6 +148,26 @@ public static MediaService getMediaService()
}
return mediaService;
}
+
+ /**
+ * Returns a reference to a VersionService implementation currently registered
+ * in the bundle context or null if no such implementation was found.
+ *
+ * @return a reference to a VersionService implementation currently registered
+ * in the bundle context or null if no such implementation was found.
+ */
+ public static VersionService getVersionService()
+ {
+ if(versionService == null)
+ {
+ ServiceReference versionServiceReference
+ = bundleContext.getServiceReference(
+ VersionService.class.getName());
+ versionService = (VersionService)bundleContext
+ .getService(versionServiceReference);
+ }
+ return versionService;
+ }
/**
* Called when this bundle is stopped so the Framework can perform the
diff --git a/src/net/java/sip/communicator/impl/protocol/sip/sip.provider.manifest.mf b/src/net/java/sip/communicator/impl/protocol/sip/sip.provider.manifest.mf
index 5646d00fe..a2ef9a49d 100644
--- a/src/net/java/sip/communicator/impl/protocol/sip/sip.provider.manifest.mf
+++ b/src/net/java/sip/communicator/impl/protocol/sip/sip.provider.manifest.mf
@@ -14,6 +14,7 @@ Import-Package: org.osgi.framework,
net.java.sip.communicator.service.netaddr,
net.java.sip.communicator.service.media,
net.java.sip.communicator.service.media.event,
+ net.java.sip.communicator.service.version,
javax.net.ssl,
javax.xml.parsers,
javax.xml.transform,
diff --git a/src/net/java/sip/communicator/impl/version/VersionImpl.java b/src/net/java/sip/communicator/impl/version/VersionImpl.java
index b8d5f6b16..e5c95b78f 100644
--- a/src/net/java/sip/communicator/impl/version/VersionImpl.java
+++ b/src/net/java/sip/communicator/impl/version/VersionImpl.java
@@ -6,6 +6,8 @@
*/
package net.java.sip.communicator.impl.version;
+import java.util.*;
+
import net.java.sip.communicator.service.version.*;
/**
@@ -59,10 +61,15 @@ public class VersionImpl
public static final boolean IS_NIGHTLY_BUILD = true;
/**
- * The name of this application.
+ * The default name of this application.
*/
- public static final String APPLICATION_NAME = "SIP Communicator";
+ public static final String DEFAULT_APPLICATION_NAME = "SIP Communicator";
+ /**
+ * The name of this application.
+ */
+ public static String applicationName = null;
+
/**
* Returns the VersionImpl instance describing the current version of
* SIP Communicator.
@@ -285,6 +292,21 @@ public static final VersionImpl currentVersion()
*/
public String getApplicationName()
{
- return APPLICATION_NAME;
+ if(applicationName == null)
+ {
+ try
+ {
+ applicationName =
+ ResourceBundle.getBundle("resources.application").
+ getString("applicationName");
+ } catch (Exception e)
+ {
+ // if resource bundle is not found or the key is missing
+ // return the defautl name
+ applicationName = DEFAULT_APPLICATION_NAME;
+ }
+ }
+
+ return applicationName;
}
}