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; } }