Date: 31 July 2008
Archive: Version 0.1
Initial release (beta). Targets SAMP WD v1.0 (25 June 2008).
Date: 19 September 2008
Archive: Version 0.2
xmlrpc package itself defines a pluggable
interface for providing XML-RPC client and server functionality;
two implementations are also provided, in the packages
xmlrpc.apache
and
xmlrpc.internal.
The Apache one is basically what was there in previous versions;
the internal one is completely freestanding, and if this is used
the Apache XML-RPC library is not required for operation.
ConnectorGui
provides Actions suitable for insertion in a general SAMP control menu,
and
SendActionManager
provides menus and Actions for sending particular messages.
snooper:client.HubConnector
to gui.ConnectorGui.HubClient privateKey member is now an Object
not a String, for greater generality.RegInfo(String,String,String) constructor
withdrawn.HubRunner class moved from package hub
to xmlrpc.
Date: 25 September 2008
Archive: Version 0.2-1
jsamp.xmlrpc.impl property now correctly propagated
to JVM running external hub.hubmonitor which meant that
sometimes window did not appear.
Date: 9 December 2008
Archive: Version 0.3
HubRunner in
(default) msg-gui mode and then run
HubTester. Or just use the hub with your own
SAMP clients.
Note that this functionality incurs some overhead - if not used
no such overhead is incurred.
xml-log and rpc-log options
to -xmlrpc flags of command-line tools, and classes
org.astrogrid.samp.xmlrpc.internal.*LoggingInternal*.
DefaultSendActionManager with other,
more capable, SendActionManager subclasses.
This makes it easy to handle the results from messages which
have been sent, for instance by passing the information to the
user graphically or in other ways.
gui.GuiHubConnector now contains the
Swing-related functionality which was previously in
(its superclass) client.HubConnector, and also
all the functionality from the now removed class
gui.ConnectorGui.
HubRunner and ConnectorGui APIs modified
to permit use of various different hub implementations
(with different graphical characteristics -
see HubMode).
-xmlrpc flag.callAll and
notifyAll hub methods as per agreed modifications to
the standard at version 1.1.
Affects hub and client API, implementation and test suite.samp.hub.disconnect
MType.SampUtils.isSampChar() convenience method.createTag method to
HubConnector.string characters.
Date: 27 March 2009
Archive: Version 0.3-1
GuiHubConnector.createRegisterOrHubAction method,
which registers if it can, else offers the user to start a hub.
This may be the only button you need.
call and callAll
to HubConnector - these allow you to make asynchronous
calls so that the results are delivered as callbacks to
supplied objects without having to worry about registering
handlers and matching tags.
createTargetSelector/createTargetAction
methods to SendActionManager class.
These give another way (button plus combo box) go allow users
to trigger a send.
.samp lockfile noting that contact XML-RPC
URL hostname is configurable.
SampUtil.
samp.httpd.
Also added some utility classes in that package to facilitate
serving dynamic resources and resources from the classpath.
This is because having a simple self-contained HTTP server
may be useful for client implementations doing SAMP-like things
other than strictly communicating with the hub.
ResultHandler and LogResultHandler classes
moved from package gui to client.
Date: 5 August 2009
Archive: Version 1.0
Though this version is numbered 1.0, it's not a giant leap ahead of the previous one (0.3-1). However, this is the first release since SAMP became an IVOA Recommendation, and this toolkit is believed to be fully compliant with that standard. The intention is that backwardly incompatible changes will be kept to a minimum following this release.
New functionality:
jsamp.server.port provided to
allow selection of the default server port.
jsamp.lockfile provided to support
non-standard lockfile location.
-clientname and -clientmeta flags to
Snooper command-line tool.
samp.secret string for
HubRunner if you don't want it chosen randomly.
Changes to behaviour (note some of these may have backward compatibility issues):
SampUtils.getLocalHost())
is now "127.0.0.1", not the DNS name; in certain network environments this
works better than the alternatives, though it's less good for
inter-machine communications.
This default can be altered by setting the samp.hostname
system property; it has two new special values "[hostname]" and
"[hostnumber]".
samp.localhost renamed to
jsamp.localhost
(the old name is still recognised for backward compatibility).
-xmlrpc flag from command-line tools;
the jsamp.xmlrpc.impl system property should be used
instead.
API Changes (note some of these may have backward compatibility issues):
DefaultClientProfile class;
this is now the recommended way of getting a general purpose ClientProfile
object (rather than using StandardClientProfile.getInstance().
Using this will aid pluggability (ability to use with non-standard
profiles in the future).
UtilServer class; this can help to reduce the number
of HTTP servers run by a JSAMP application,
and provides convenience methods for exporting
local (e.g. file: or classpath) URLs.
parseValue utility method to SampUtils
class.
HubConnector.connectionChanged.
LockInfo moved from org.astrogrid.samp
package to org.astrogrid.samp.xmlrpc,
which is where it should have been.
Bugfixes:
jsamp.version file now included in source
zip archive.messagesender tool.
Date: 21 July 2010
Archive: Version 1.1
Protocol extension:
jsamp.lockfile and jsamp.profile
system properties which did the same job in a non-standard way
have been withdrawn.
This has some backwardly incompatible consequences:
jsamp.lockfile and jsamp.profile
system properties withdrawn;
use SAMP_HUB environment variable instead.
SampUtils.LOCKFILE_NAME constant withdrawn;
use StandardClientProfile.LOCKFILE_NAME instead.
SampUtils.getLockFile() method withdrawn;
use StandardClientProfile.getLockUrl() instead.
If you want to find out if a hub is running, instead of
SampUtils.getLockFile().exists(), use
DefaultClientProfile.getProfile().isHubRunning().
LockInfo.readLockFile(File) method withdrawn;
use LockInfo.readLockFile(URL) instead.
LockInfo.readLockFile() method withdrawn;
use StandardClientProfile.getLockInfo() instead.
LockWriter no-arg constructor withdrawn.
Enhancements:
-httplock flag to hubrunner, which allows publication
of lockfile by HTTP for use by non-localhost clients.Usability:
java -jar jsamp.jar")
with no arguments
now starts the hub rather than just printing a usage message.isHubRunning.
This is more general (and easier to use) than testing something like
StandardClientProfile.getLockFile().exists().HubRunnner.runHub method now returns the running
HubRunner instance.Bugfixes:
faultCode was string instead of int).addShutdownHook in
XmlRpcHubConnection. It seems that signed applets may not have the
appropiate permissions.Minor improvements:
DefaultClientProfile.getProfile()
rather than StandardClientProfile.getInstance() as they should
(hence will be correctly influenced by SAMP_HUB
environment variable).getClientMap is called
before declareSubscriptions on a HubConnector,
since without declaring subscriptions the client map won't work.
Date: 15 Feb 2011
Archive: Version 1.2
The two main changes at this release are generalisation of the hub running framework to allow multiple profiles to run interfacing to the same hub simultaneously, and implementation of the experimental Web Profile. The former was motivated by the latter (though should really have been present from the start). This work was suggested by Jonathan Fay and financially supported by Microsoft Research, whose support is gratefully acknowledged. There are also a number of bug fixes and minor enhancements.
Hub framework:
The
org.astrogrid.samp.hub.HubRunnerclass has been deprecated in favour of the new class org.astrogrid.samp.hub.Hub. This can be used from the command line or programmatically to start a hub, and it can run zero or more profiles, defined by the new HubProfile interface, simultaneously. HubProfile implementations are provided for the Standard Profile and the Web Profile, and you can plug in your own at runtime. This class is now the Main-Class defined in the jar file's Manifest, so invoking (e.g. clicking or java -jar) the jsamp-*.jar file will now invoke this class. Documentation of the command-line usage is on the Command-line Tools page. By default only the Standard Profile is run, so simply invoking the jar file will have much the same behaviour as it did in previous versions, that is starting a Standard Profile-only hub. Which profiles are run can be influenced in various ways, including by defining thejsamp.hub.profilessystem property.A new "facade" mode of hub operation has been introduced, which allows tunnelling from one hub profile to another (mostly of interest to hub profile implementors).
There have been a number of other backwardly incompatible changes to the hub implementation classes: Most of the
HubServiceinterface has been replaced usingHubConnectionandReceiverhas been replaced withCallableClient, reducing amount and duplication of code, and some assumptions specific to the Standard Profile have been removed from the interfaces of hub classes which are properly profile-independent. These changes are not believed likely to affect anybody who is not writing hub implementation code.
Web Profile:
This release also includes client and hub implementations of the experimental Web Profile. Implementation is in the new package org.astrogrid.samp.web. Note that this profile is still under discussion and details of the definition may change in the future.
Bug fixes:
SampUtils.uriEncode/Decode).HubConnector, HttpServer,
InternalServer and ApacheServer
(thanks to Laurent Bourgès).Minor changes and enhancements:
handleCall method in SampXmlRpcHandler
interface gets an additional argument.java.awt.Window.locationByPlatform
system property is set, if it does not already have an explicit value,
in the JSamp class.createResponse
which may be overridden for more flexibility.
Date: 2 Aug 2011
Archive: Version 1.3
Various changes relating to configurable use of profiles and the Web Profile in particular, to match the SAMP 1.3 WD, and to enable experimentation with multi-profile configurations while we gain experience with security options. There is more discussion in the new Profiles page, but the main changes are:
hub command flag
-web:extraprofiles and system property
jsamp.hub.profiles.extra.
hub command:
-web:[no]cors,
-web:[no]flash,
-web:[no]silverlight,
-web:[no]urlcontrol.
map argument and not a
string argument to register(),
as per the change to the Web Profile specification.
Hub.runHub(), still works though.
The Hub GUI window now has menus:
JSON is now used as the standard serialization/deserialization format for SAMP objects in a few places:
toJson and fromJson in
SampUtils class.
messagesender and snooper tools
on the command line using JSON syntax.
Other items:
ClientProfile.isHubRunning method now probes more
agressively for a hub (for instance in the Standard Profile it pings
rather than just looking for the .samp file).
This is a change to both the API and the implementations.org.astrogrid.samp.web.AuthResourceBundle_xx.properties
resource; run AuthResourceBundle.main() for example output.HubMonitor now correctly uses
DefaultClientProfile rather than
StandardClientProfile.
Date: 26 Oct 2011
Archive: Version 1.3-1
messagesender command-line tool has new flags
-targetname and -targetid which replace the
previous -target flag.ResourceHandler.addResource
(thanks to Omar Laurino).-web:auth extreme mode to hub.SampException not SecurityException
on registration failure; this makes failures less verbose in the hub.
Date: 12 Dec 2011
Archive: Version 1.3-2
x-samp.query.by-meta MType.Hub class to determine whether the hub
is running and with what profiles.-subs flag to Snooper tool.{}").x-samp.mostly-harmless" and a value of
"1" (harmless) or "0" (harmful).