This repository has been archived by the owner on Jun 20, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 16
/
ChangeLog
2140 lines (1906 loc) · 125 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
MAJOR CHANGES in JADE 4.1 (13 07 2011)
==========================================================================
GENERAL IMPROVEMENTS:
Kernel
- Added support for Aliases
- Added support for listening about ALIAS creation/removal
- Added support for measuring message delivery information as well as application specific information by means of the System Activity Monitoring (SAM) Service
- Implemented the ResourceManagementService to retrieve resource from other containers
- Added support for replicating service method invokations by means of the MainReplicationService
- Added conversation-id (if not specified) in protocols performed by means of the FIPAService.doFipaRequestClient() method
- Added support for detecting real sender when an agent sends a message specifying a different sender.
- Added support for listening to Front-End relevant events by means of the FEListener interface and the addListener() method of the MicroRuntime class
- Added method dump() in MainReplicationService to enable runtime inspection via ContainerMonitorAgent (see misc Add-On)
- Improved error message when a mandatory kernel service fails at startup time
- Added/made public/refactored methods isMain(), isMasterMain() and isBackupMain() in Profile class.
- Modified ContainerID constructor to initialize address and protocol consistently. This solves a bug in LEAP serialization that created problems in Agent Mobility as reported by matias sm.
- Added shutdown hook to make the platform shut down if the Main Container JVM unexpectedly exits
Behaviours & Interaction Protocols
- Added method newIteration() to the ContractNetInitiator class to implement Iterated-Contract-Net
- Prevented potential deadlock in callback method onSuspended() of threaded behaviours
- Added method getTerminatedChildren() in ParallelBehaviour to retrieve children that have already completed
- Parameter management methods of LoaderBehaviour made protected to support customizations.
- Added method handleMessage(...) in OntologyServer to override standard message handling
- Added fixed-period mode in TickerBehaviour
- Properly implemented reset() method of SequentialBehaviour class
Content Language and Ontologies
- BeanOntology: Added support for forcing the management of the value of a slot as a Serializable object by means of the manageAsSerializable attribute of the @Slot annotation
- Modified SLCodec to work with an ad-hoc dialect of the SL language that preserves Java types (int, long, float, double...) when the SL-preserve-java-types System property is set to true.
- Added support for specifying a mandatory aggregate slot with min-cardinality = 0
- Added support for using an ad hoc ClassLoader in SerializationOntology
- Modified AbsHelper.setAttribute() method to permit null values
- Added isAbsTemplate(), addPrefix(), removePrefix(), applyDefaultValues() methods to AbsHelper class
- Added AbsExtendedPrimitive: an extended abstract descriptor that can hold values of generic primitive types
In-process interface
- Added overloaded method getAgent(String name, boolean isGuid) in ContainerController class to allow retrieving agents whose names are not in the form <local-name>@<platform-name>
- Modified DynamicJadeGateway so that if the init() method is not called the gateway starts with the default configuration
- Modified DynamicJadeGateway.init() method so that, if agentClassName is null, the default GatewayAgent one is used
Others
- HTTP MTP: Connection timeout made configurable. FIX by Libor Svehlak [Siemens]
- Added method getJADELogger() in Logger class to replace old getMyLogger() method
BUG-FIXES:
- Fixed bug in SSIteratedContractNetResponder (indicated by Henrique Lopes Cardoso): the first CFP message was passed to the handleCfp() method at each iteration
- Fixed bug in ObjectSchemaImpl.isAssignableFrom()
- Fixed bug in isLocalHost() method by Felix Krull. Previous version failed in case you set local-host in the container config to a local address which is not the address delivered by InetAddress.getLocalHost().getHostName(), but the address of another local interface.
- Fixed bug in NotificationService and Sniffer tool when an agent sended a messages specifying a different sender
- Fixed bug on visualization of properties and AIDs of pending and received ACLMessages shown by the IntrospectorAgent (Indication by Cuong P. Nguyen).
- Fixed bug in Main Replication mechanism when the local-host option was specified (bug reported by Tom Pannell)
- Fix in FE-to-BE SSL communication to prevent recursion when the SSLEngine is in closed state (by Eduard Drenth)
- Fixed bug in handleGatewayDisconnected of DynamicJadeGateway when gateway container dies.
- Fixed bug in AgentMobilityService - Deserializer: Added management of primitive java type (used if the moved agent declares a field of type Class with value a primitive type)
- Fixed bug in BeanOntology related to externalization of aggregates containing a null element
- Fixed bug in SimpleSLCodec to properly handle cases of String whose value is "(..." or ")...". Bug reported by Kostas (geniko09).
- Fixed bug in Logger deserialization: reconstructed Logger was not linked to the logging system
- Fixed bug: When moving/cloning agents replicated main containers where not properly kept in synch. Bug reported by Jamie Forth (Goldsmiths, University of London)
JADE-LEAP
- Jade Android restructured and revisited as a JADE-LEAP Target
JADE-OSGi:
- Added support for split container.
ADD-ONS:
- Misc Add-On:
- Added extensible JADE Administration Command Line Interface (package jade.cli)
- Added support for invoking Behaviour.dump() method when present in Agent DUMP
- Web Service Dynamic Client - WSDC Add-On:
- Added support for invoking WebServices using the WS-Addressing specification
- Added timeout when discovering Web Services
- Fixed bug in WebService invocation with IN/OUT headers
- Fixed bug in fault management with SOAP 1.2
- Added support for wsdl tag <Any/>
- Web Service Integration Gateway (WSIG)
- Modified to properly handle Java enum types
- Added support for using the @Slot annotation in mapper method parameters too
- modified to properly manage array/collection in mapper method parameters
- Modified default optionality value in mapper methods parameters: primitive class -> MANDATORY; non primitive class -> OPTIONAL
- WSIG specific annotation packaged in a separated jar
- Added support for adapting action results by means of the @ResultConverter annotation
- Modified WSIG Servlet to listen to gateway notifications and react properly
- Modified wsdl generation to properly handle minOccur in aggregate slot
- Fixed bug in soap response with null slot
- Removed limitation related to aggregates with the same type/dimensions
- Test Suite Add-On:
- Codec and Ontology properly registered in stand-alone execution mode too. Indicated by Leonardo C. Fraga
- Caught and traced JADE startup exceptions caused by JAVA_HOME environment variable syntax problems
EXAMPLES:
- New example on OntologyServer usage
- New example on alias declaration
- New example on JadeGateway usage
- New example on JADE Kernel Service development
DOCUMENTATION:
- Updated LEAP User Guide
- Updated WSIG Guide
POSSIBLE BACKWARD INCOMPATIBILITIES:
We do not expect any backward compatibility with respect to the previous JADE version
MAJOR CHANGES in JADE 4.0 (20 04 2010)
==========================================================================
GENERAL IMPROVEMENTS:
Kernel
- Restructured JADE kernel so that JADE and JADE-LEAP are now a single platform that can use two different IMTP modules for container-to-container interactions:
- The LEAP IMTP (jade.imtp.leap.LEAPIMTPManager class)
- The RMI IMTP (jade.imtp.rmi.RMIIMTPManager class)
The configuration can be done by means of the -imtp configuration option.
- Added support for checking if an UNREACHABLE node appears to be dead due to a long network disconnection by means of the NetworkChecker interface
- Added property Profile.NO_DISPLAY to avoid initializing AWT stuff when JADE is launched without the display
- Added support for NO_CLONE and SYNCH_DELIVERY (ACLMessage user defined properties) in ACL Message delivery system.
- Added support for "local" services i.e. services that do not require their class to be in the classpath of the Main Container
- Modified LEAP IMTP to support having containers belonging to different platforms in the same JVM (see the jade.enable.multiple.platforms System property)
- Substituted deprecated methods show() and hide() with setVisible(true|false) in jade.gui and jade.tools packages
- Restructured/simplified "extended properties" hierarchy
Behaviours
- Added OntologyServer class to handle REQUESTs refering to a given ontology in a simplified way
Content Language and Ontologies
- BeanOntology class and related classes moved from the Misc add-on to the JADE core distribution
- Properly managed fields of type byte[] (array of bytes) as ontological primitive types
- Added Facets for Permitted-Values, Default-Value, Documentation, Regexp
Others
- Added support for registering connection/disconnection listeners to the JadeGateway
BUG-FIXES:
- Fixed bug in Sniffer Agent: it did not serve correctly requests to start sniffing agents received as ACLMessages. Bug reported by Hanno Felix Wagner (University of Duisburg-Essen)
- Fixed bug in Sniffer Agent: the scrollbar disappeared when starting to sniff a new agent. Fix by Hanno Felix Wagner (University Of Duisburg-Essen)
- Fixed bug in HTTP MTP: when installing both an HTTP MTP and an HTTPS MTP in the same platform (different containers), messages were not properly routed to the right MTP. Fix by Libor Svehlak (Siemens)
- Fixed bug in IteratedAchieveREInitiator: there was an Inconsistent FSM error introduced by a previous modification on FSMBehaviour.deregisterState(). Bug reported by José Miguel Benedicto Ruiz
- Fixed bug in AgentMobilityService: An exception occurred when a migrated agent terminated and its home container was no longer there. Bug reported by sawal xp
JADE-OSGi:
- Redefined isLocal() method of the OSGiBridgeService class to avoid requiring it to be present in the Main Container classpath
- Fixed annoying exception when stopping the JADEOSGi bundle (problem notified by ALVARO CARRERA BARROSO - Telefonica I+D)
ADD-ONS:
- TrustedAgents Add-On (NEW!)
- New add-on developed by Eduard Drenth (Logica) that allows making sure only agents with a token that can be validated will be allowed to join the Jade Platform.
- Misc Add-On:
- BeanOntology class and related classes moved into the JADE core distribution
- ContainerMonitorAgent: Implemented the action DUMP-SERVICES, returning the services installed on a given container
- Web Service Dynamic Client - WSDC Add-On:
- Added defaultValue, regex, permitted values and cardinality in parameters, headers and schemas
-Added update definition function for cached WSDL
-Added security settings in DynamicClientCache
-Added HTTP Basic Authentication
-Added WS-Security Username Token
-Added WS-Security mustUnderstand flag
-Added WS-Security Timestamp
-Fixed bugs: DynamicClient thread-safe
-Fixed bugs: SOAP 1.2 compatibility
- Security Add-On:
- Fixed bug when encrypting a message with more than one receiver (reported by Popp, Caroline J.) due to non-deep-cloning of envelope properties and SecurityObjects
- Also inverted preferred position of SignatureService and EncryptionService (now we encrypt a signed message) in order to keep the same signature for each receiver when more than one is specified.
- Test Suite Add-On:
- Modified to use the JAVA_HOME environment variable (if present) when launching a new JADE instance
- XMLCodec Add-On
- Modified to use friendly primitive types instead of BasicOntology ones
- Modified decoding by order to try to assign values to slots on the basis of their types when some values is missing
EXAMPLES:
- Fixed problem in examples.bookTrading.BookSellerGui (fix by Doru Kaytar)
- Simplified examples.PingAgent.PingAgent and aligned with the revisited JADE Administration Tutorial
DOCUMENTATION:
- Fully revisited the JADE Administration Tutorial according to the evolutions in JADE 4.0
- Reorganized Online documentation index
- Updated/revisited according to the evolutions in JADE 4.0
- JADE Programmar's guide
- JADE Administrator's guide
- JADE Programming Tutorial
- LEAP User Guide
- JADE OSGi Guide
- BeanOntology Tutorial
- Content Language and Ontology Tutorial
- Arguments and Properties Tutorial
- Fixed name of property jade_mtp_http_https_friendListFilePass as indicated by Libor Svehlak (Siemens)
- NEW Jade tutorial in Portuguese by Andre Filipe
POSSIBLE BACKWARD INCOMPATIBILITIES:
- API
- The "extended properties" classes in the jade.util package have been fully restructured and merged
into a single class called ExtendedProperties
- Command line
- The agent specification syntax in the command line has changed according to the LEAP style:
- The separator between agent specifiers is the ';' instead of the blank
- The separator between agent arguments (if any) is now the ',' instead of the blank
- Blanks are NOT allowed!
See the example below
java -cp ... jade.Boot -gui a1:myPackage.MyClass(arg1,arg2);a2:myPackage.MyClass
The old style syntax can still be used by means of the jade.Boot3 bootstrap class as below:
java -cp ... jade.Boot3 -gui a1:myPackage.MyClass(arg1 arg2) a2:myPackage.MyClass
- jar files
- All JADE classes are now included into a single jar file called jade.jar (while until version 3.7 they where scattered accross 4 files: jade.jar, jadeTools.jar, http.jar and iiop.jar)
MAJOR CHANGES in JADE 3.7 (01 07 2009)
==========================================================================
GENERAL IMPROVEMENTS:
Kernel
- Added support for loading agents (and possibly other types of objects) whose code is stored in different spaces (jar file outside the classpath, OSGi bundles...) by means of the ObjectManager class
- Modified NotificationService, related classes and JADE internals to handle RECONNECTED and LEADERSHIP_ACQUIRED container events
- Enhanced MainReplicationService with support for application specific checks on connectivity status when a Main Container replica is considered dead due to a long disconnection
- Modified UDPNodeMonitoringService to improve the management of UDP ping packets from un-monitored nodes (orphan nodes)
- Added method resetTerminators() in Runtime to allows clearing the list of Runnable objects to be executed on JADE termination
Behaviours
- Added WrapperBehaviour to allow modifying behaviours methods on the fly
- In Ticker and Waker behaviour added restart in stop method
Content Language and Ontologies
- Registered java classes for primitive schemas. Added support for java collection aggregates to BasicOntology.toObject().
- Added adjustPrimitiveValues() method in BasicOntology to automatically convert primitive values according to the required type
- Fixed Set management in AbsHelper and BCReflectiveIntrospector.
- Added isAssignableFrom() method to ObjectSchema to performs a structural compatibility check on schemas
DF
- Modified DFService to set max-result to -1 (infinite) by default when creating a DF subscription message
Interaction Protocols
- Modified SSResponderDispatcher to initialize the conversation-id if not set and manage cases where createResponder() returns null
- Modified SubscriptionInitiator to properly set the reply-with field in the CANCEL message when a response to the CANCEL message is expected
Others
- Added class jade.util.leap.HashSet;
- Modified build process to recreate parsers only if both the JAVACC_HOME variable is set AND the makeParsers property is set to true in the build.properties file
BUG-FIXES:
- Fixed bug in jade.jar manifest: Replaced backslash with slash in Class-Path property
- Fixed bug in BasicOntology serialization
- Fixed bug on set of AbsObject: duplication of attribute names in case of multiple set of same attribute
- Fixed bug on container shutdown: the shutdown of a peripheral container living in the same VM of a main container used to stop the multicast listener of the main container.
- Fixed methods getConceptNames(), getActionNames() and getPredicateNames() in Ontology to consider super-ontologies too (bug indicated by Vadim Kimlaychuk)
- Fixed bug on removal of the local (main) container on platform shutdown: since the local node is not monitored the local container was not properly removed
JADE-LEAP:
- Added support for Java Platform Micro Edition SDK 3.0
- Modified FaultRecoveryService and JADE kernel to support reattachement of nodes that were considered dead due to a long network disconnection
- Completed support for ServiceHelper on split container
- Added FEService class to allow using the TopicManagement Service on split containers
- Added support for KILL Orphan Node Policy in FaultRecoveryService. This force a termination of the orphan node.
JADE-OSGi (NEW):
- Added support for running a JADE container inside an OSGi environment
- Added support for packaging agents into separated bundles
- Added support for giving agents access to OSGi features
ADD-ONS:
- Misc Add-On:
- Modified BeanOntology to support beans that do not implement ontological interfaces (Predicate, AgentAction, Concept)
- Added support in BeanOntology to retrieve elements type in aggregate slots from generics when present
- Modified ContainerMonitorAgent to invoke agent dump() method if defined
- Added support for showing wrapped behaviour information when using a WrapperBehaviour in ContainerMonitorAgent
- Web Service Integration Gateway - WSIG Add-On:
- Added support form managing ontologies with private constructor and exposing their singleton instance by means of the getInstance() static method (singleton pattern)
- Implemented soap fault management
- Web Service Dynamic Client - WSDC Add-On (NEW):
- Added support for web service dynamic (i.e. no WSDL import or class generation) invocation and introspection
- Added support for certificates (https) and http proxy
- Added support for retrieving Services, Ports, Operations and Parameters documentation
- Added support for caching DynamicClients by means of the DynamicClientCache class
- Test Suite Add-On:
- Added support to fix the port of the TSDaemon RMI UnicastRemoteObject by means of the tsdaemon.remoteobjectport system variable
- Semantic Framework Add-On
- Added extension for reasoning about institutional concepts (obligations, institutional powers, institutional actions...)
- Added new demo of a b2b mediation platform
- XMLCodec Add-On
- Modified to handle string slots as xml attributes. Improved string encoding to escape forbidden character (<>&"')
- Fixed bug for aggregate type (now decode with correct collection class)
DOCUMENTATION:
- Added tutorial on using JADE agents inside an OSGi environment
- Added tutorial on Web Service Dynamic Client
- Revisited tutorial on HTTP MTP configuration
- Revisited Online Documentation page
- Revisited FAQ page
- Several improvements to the Javadoc
POSSIBLE BACKWARD INCOMPATIBILITIES:
- Added reconnected() and leadershipAcquired() methods to the ContainerListener interface
MAJOR CHANGES in JADE 3.6.1 (04 11 2008)
==========================================================================
GENERAL IMPROVEMENTS:
Kernel
- Modified UDPNodeMonitoringService to explicitly ping a node that is not sending UDP packets before marking it as UNREACHABLE.
- Added method getFailureReason() to AMSService to retrieve from an AMS FAILURE message the reason why a message was not delivered to an agent
- Modified MessagingService to support message delivery to local agent even when the main container is unreachable
- Added support for onSuspended(), onResumed() and onAborted() callback methods on threaded behaviours
- Modified FIPAService.doFipaRequestClient() to throw FailureException, RefuseException or NotUnderstoodException depending on the response message
Content Language and Ontologies
- Added support for using concept slot names as functions (to create sentences like (= (age (Person :name John)) 41) ) by means of the ConceptSlotFunction class
- Added ContentException as common base class of CodecException and OntologyException to allow common handling of language and ontology related problems
- Added methods getSlotValue() and setSlotValue() in the Introspector interface
- Added method getSuperSchemas() to retrieve all super-schemas of a given schema (feature suggested by Antonio Amado)
- Modified AbsPrimitive to properly manage Long/Integer and Double/Float
- Modified methods getActionNames(), getConceptNames() and getPredicateNames() of the Ontology class to preserve case.
Tools
- Modified RMA Start Agent dialog box to provide a list of valid agent classes and to check that the agent name is set
- Added possibility of specifying a timeout in the message exchange supported by the SocketProxyAgent
BUG-FIXES:
- Fixed problem related to concurrent execution of block() and restart() in composite behaviours with several levels of nesting (in some cases a behaviour could remain blocked even if a message arrived)
- Added sanity check in LoaderBehaviour to avoid NullPoinerException in case of null parameters (problem reported by Mehrdad Senobari)
- Modified BasicProperties to avoid circular argument substitution exception when two threads search for the same property in parallel (problem reported by Henrique Lopes Cardoso)
LEAP:
- Modified LEAP connection pool to release connections when idle for more than 2 min
ADD-ONS:
- Misc Add-On:
- Added BeanOntology class that allows creating ontologies without the need of defining the schemas for ontological elements: schemas are automatically created from the ontological classes (beans)
- WSIG Add-On
- Management of different WSDL styles:
- rpc/encoded (reorganized according to W3C standards)
- document/literal(wrapped) WS-I compliant (set as default style)
- WSDL kept in memory (optionally written to file system)
- Support for standard WSDL download via http (http://.../MyService?WSDL)
- Proper management of java.util and jade.leap.util collections
- Proper management of optional ontological slots
- Management of Date fields according to the ISO-8601 standard
- Proper handling of multiple soap requests
- Improved example code
DOCUMENTATION:
- Added tutorial on creating ontologies by means of the BeanOntology class
POSSIBLE BACKWARD INCOMPATIBILITIES:
- Methods getSlotValue() and setSlotValue() were added to the jade.content.onto.Introspector interface --> Developers who created their own implementation of such interface will have to implement these methods
MAJOR CHANGES in JADE 3.6 (05 May 2008)
==========================================================================
GENERAL IMPROVEMENTS:
- Added support to specify the jar file where to load agent code at agent startup
- SubscriptionResponder: Modified according to comments by Chris Audley and Henrique Lopes Cardoso
- Extended TopicManagementService to deal with registrations to topic templates (e.g. foo.bar.*)
- Added responder class for Iterated-Contract-Net protocol using the Single-Session approach
- Added SSResponderDispatcher class to manage protocol initiation messages and dispatch them to SSResponder behaviours
- Added support for different implementations of the Agent MessageQueue. By Arend Freije [a.freije@minihouse.com]
- Added method setO2AManager() in Agent class to associate a single behaviour to the O2A communication mechanism.
- Modified automatic main detection mechanism to print a warning and go on when the initialization fails (on the Main Container) and it was not explicitly tured on
- Modified automatic main detection mechanism to require users to specify '*' as platform name (on peripheral containers) when they want to connect to whatever platform
- Added support to deregister transitions in FSMBehaviour
- Modified MainReplicationService to issue NEW_NODE and NEW_SLICE VCommands when a Main Container replica enters the ring
- Added method dump() to BaseService to support runtime service inspection by means of the ContainerMonitorAgent (misc Add-On)
- Added method getLocalServices() in ServiceManager interface
- Modified KeyStoreKeyManager to support selection of the keystore type (default still JKS, but other possible, eg. PKCS12). By Arend Freije [a.freije@minihouse.com]
- Added method hasDefaultTransition() in FSMBehaviour
- Sustituted AgentContainer#livesHere() with isLocalAgent()
- Modified SLCodec to support Java primitive types (long, int, float double) preservation in un-typed attributes
BUG-FIXES:
- Fixed bug in SSAchieveREResponder related to the receiption of successive messages when a performative different than REQUEST was used (Fix by Chris Audley)
- Fixed bug in WakerBehaviour reset() method
- Included HTTPS-classes in http.jar (also fixed build.xml). By Arend Freije
- Fixed bug in inter-platform communication: if the receiver did not exist in the remote platform no FAILURE message was returned to the sender
- Fixed problem when the PersistentDeliveryService stores a message for a foreign receiver (this information was lost by the PersistentDeliveryProxy).
LEAP:
- FrontEndCOntainer: Modified method exit() to avoid deadlock when activated from MicroRuntime.stop()
- BEManagementService: Added sanity check to avoid using a cancelled SelectionKey (problem indicated by Reza Mohseny)
- Added support for Object-2-Agent communication on split containers
- Fixed bug in FEService.
ADD-ONS:
- JADE-ANDROID Add-on
- New Add-on allowing deployment of JADE-based applications on Google Android platform
- Misc Add-on
- Added support for leader election within an open group (members can appear and disappear at any time) of agents
- Added support for DUMP-SERVICE action in ContainerMonitorAgent
- WSIG Add-on
- Support for optional/unordered parameters in Web Service invocations
- Improved AgentAction object construction from Web Service parameters
- Improved exception handling and error messages
- Added support for further WSDL customization by means of the OntologyName and SuppressOperation annotations.
- Modification to use XML validation schemes at non-standard addresses.
- Fixed problem related to usage of Basic Ontology types (such as AID) as Web Service operation parameters (bug indicated by Jason Woodrich)
- Some fixes to make things fully compliant to standards.
- Updated Guide and examples.
- XMLCodec Add-on
- Modified to preserve Java primitive types (long, int, float double) in un-typed attributes
- Modified to properly handle SET and SEQUENCE aggregates
DOCUMENTATION:
- Updated guides
POSSIBLE BACKWARD INCOMPATIBILITIES:
API: NONE
EXPECTED BEHAVIOUR:
- The detect-main option specified on peripheral containers requires the specification of the name of the platform
to connect to by means of the -name option. In order to connect to whatever platform it is possible to specify -name *
MAJOR CHANGES in JADE 3.5 (25 June 2007)
==========================================================================
GENERAL IMPROVEMENTS:
DF
- Modified DF to automatically remove subscriptions of dead agents when the autocleanup option is specified
- Modified DF to support a pool of thread serving registration, deregistration and search requests when using DB-based KnowledgeBase (option jade_domain_df_poolsize)
- Modified DF to support turning off content validation mode (option jade_domain_df_disablevalidation)
- Optimized DF search when using DB-based KnowledgeBase
- Modified DF to cache subscription relevant information. This speeds up performances when detecting subscribed agents to be notified about registration updates
Content language and ontologies
- Created CFReflectiveIntrospector to support usage of java.util classes in ontological classes
- Added methods to get predicate, concept and action names from an ontology
- Committed automatically generated SL and ACL parser classes
- Added method to define action-result type in AgentActionSchema
Kernel
- Added automatic Main-Container detection via multicast (option detect-main)
- Modified MainReplicationService to support detailed REMOVED_CONTAINER and DEAD_AGENT events notification instead of just RESET meta-event
- Modified FullResourceManager to avoid annoying stack traces at platform shutdown
- Modified MainContainerImpl to start the AMS and DF threads in the SystemAgent Thread Group
- Added dump-options option to print out configuration options at container startup
- Modified ContainerID class to include main/non-main indication
- added package scoped method getThread in the class Agent
- added package scoped methods getSize in jade.core.messaging.OutBox
- added package scoped methods getThreadPoolStatus and getThreadPool in jade.core.messaging.MessageManager
- added public methods getQueueSize and getThreadPool in jade.core.messaging.MessagingService
- Modified CodeLocator to use Base64 encoder by Apache commons-codec instead of sun.misc.BASE64Encoder as suggested by Jordi Cucurull Juan
- Modified CodeLocator to deal with ClassLoader instead of jar files by Jordi Cucurull Juan
- Modified AgentMobilityService to work with Java6 (load incoming agent classes by calling Class.forName(<class-name>, true, cl) instead of cl.loadClass(<class-name>)
MTP
- Integrated patch by Arend Freije (Minihouse) to avoid http MTP block all delivery processes when one takes a lot of time.
Tools
- Modified AgentTree class to show agents within a container in alphabetical order
- Improved management of colors in the Sniffer
BUG-FIXES:
- Integraed fix by Geoffrey De Smet to properly deal with loggers that are not JADE loggers.
- Fixed problem with Mobility and Java6 due to Java6 backward incompatibility https://glassfish.dev.java.net/issues/show_bug.cgi?id=714
- Added sanity check in MainContainerImpl.containerAgents() as indicated by Carlo Corda.
- Added sanity check on MainContainerImpl to deal with terminating agents while a query-agents-on-location action is served.
LEAP:
- Added support for ServiceHelper retrieval and usage in split container execution mode
- Added support for automatically changing the local port of the Main Container in case the specified port (or the default one) is busy (jade_imtp_leap_LEAPIMTPManager_changeportifbusy option).
- Added detach/attach functionality to the split execution mode
- Modified LEAP ConnectionPool to move connection creation outside a synchronized block. This avoids blocking all threads trying to interact with remote containers when one is taking a lot of time opening a network connection (e.g. due to TCP timeouts)
- Fixed bug in single-connection FE-BE connector class (jade.imtp.leap.JICP.FrontEndDispatcher) related to duplicated session-ID
- Fixed bug when restarting JADE-LEAP inside Tomcat (or another application that uses different classloaders each time) "No skeleton for object-id" reported first by Jaran Nilsen
ADD-ONS:
- Persistence Add-on
- Some fix to properly support MySql DB (by Vincenzo Gioviale)
- Misc Add-on
- Added dump of threads owned by an Agent (its Thread and its threaded behaviours)
- Added dump of all threads in a container
- Added dump of deliverer threads
- JADE-SHARP Add-on
- New add-on allowing Microsoft .NET clients (fully compatible with .NET Compact Framework) to connect to a JADE-based multi agent system and to exchange ACLMessages with remote agents
- Security Add-on
- Fixed bug (OutOfMemoryError) in encryption mechanism when encoding block-size is 0
- Fixed bug (ArrayIndexOutOfBoundException) in PermissionFIlter while checking an incoming KILL_CONTAINER command
- Reorganized messaging example to allow showing that a message is encrypted using the Sniffer
DOCUMENTATION:
- New tutorial on JADE-JESS integration by Henrique Lopes Cardoso (University of Porto)
- Updated tutorial on Content Languages and Ontologies with information about the new CFReflectiveIntrospector
- New examples about the topic-based message delivery mechanism
- Updated the Programmer's Guide with information about the topic-based message delivery mechanism
- Updated the Administrator's Guide with information about the automatic main detection mechanism
- Adjusted javadoc information for kernel level services classes
POSSIBLE BACKWARD INCOMPATIBILITIES:
API: NONE
EXPECTED BEHAVIOUR:
- When using Main Container replication, tool-agents now receive detailed REMOVED_CONTAINER and DEAD_AGENT events instead of just the RESET meta-event.
A fully backward-compatible behaviour can be obtained by setting to true the jade_core_replication_MainReplicationService_snapshotonfailure configuration option
MAJOR CHANGES in JADE 3.4.1 (15th November 2006)
==========================================================================
GENERAL IMPROVEMENTS:
- Modified HTTP MTP to properly select the XML parser (by Krešimir Jurasovic - University of Zagreb).
- Substituted getHostName() with getCanonicalHostName() in HTTP MTP to resolve domain problems.
- Added support for low-level container introspection by means of the ContainerMonitorAgent (jade_core_AgentContainerImpl_enablemonitor parameter).
- Added method getParam(int index) to JADE commands (jade.core.Command class).
- Modified message tracing mechanism to take the ACLMessage.TRACE user define property into account.
- Improved agent cloning error management.
- Added generation of ShutdownPlatformRequested AMS event (Introspection Ontology)
- Modified ThreadedBehaviourFactory to support Threaded-behaviour suspension.
- Modified default behaviour of jade.wrapper.gatreway.GatewayAgent to automatically call releaseCommand() when a Behaviour is passed in the execute() method of the JadeGateway class.
- Refactored Notification Service to i) use sinks for owned commands, and ii) dispatch ContainerEvents.
- Modified Agent.powerUp() method to avoid starting the agent thread two times.
BUG-FIXES:
- Fixed bug in SSResponder when initiator and responder are the same agent
- Fixed bug in ParallelBehaviour related to remotion of already terminated children (indicated by Juan A. Suárez-Romero - University of A Coruña)
- Fixed deadlock problem in OutgoingEncodingFilter due to useless synchronized block on AgentContainerImpl.
- Fixed bug notified by Maciej Gawinecki so that when trying to kill multiple agents at the same time from the RMA only the first one was actually killed (jade.tools.ToolAgent class).
- Fixed bug in jade.BootGUI (notified by Maciej Gawinecki, fix by Walter, Patrick A).
- Fixed problems in jade.proto.SSIteratedAchieveREResponder.
- Fixed bug in conversation ID generation (in some cases it was not unique) in the FIPAService.doFipaRequestClient() method.
- Fixed problem about jar file removal in CodeLocator (by Jordi Cucurull Juan).
- Fixed problem with the -main configuration option in BootProfileImpl.
- Fixed problem in the visualization of pending/sent messages in the Introspector agent.
- Fixed problem in Introspector agent related to behaviour status updating.
- Fixed bug in ToolNotifier: an inner behaviour did not block waiting for incoming messages --> in certain cases a terrible waste of CPU could be experienced.
LEAP:
- Modified CommandDispatcher skeleton ID generation mechanism to avoid problems when a container terminates and then restarts with the same name
- Modified to support socket timeout configuration (jade_imtp_leap_JICP_JICPPeer_connectiontimeout parameter)
- Fixed problem with reconnection after DROP_DOWN in single-connection BE-FE dispatcher class (jade.imtp.leap.nio.BackEndDispatcher)
ADD-ONS:
- Semantics Framework
- Improved the interface of OntologicalAction (new constructor) and SemanticBehaviour (RUNNING constant)
- Improved the simplification of EqualsNode (between an IRE and a value) and the toString method of MatchResult
- Beangenerator
- Fixed problem with Protege owl import
- ASCML
- parameters without name are passed to an agent as value-only and not as 'name=value' (AgentLauncherThread.java)
- added close-button in ParameterDialog
- dialog may now set to be not visible (ExceptionDialog.java)
- when changing the name of the society instance, check if the society instance is the default-society of the society type and if so, also change the name of the default society instance within the society type (SocietyInstance.java)
- Reworked the whole ToolRequester code to be expandable more easily.
- fixed bug in passing parameters to a newly created agent (AgentLauncherThread.java)
- fixed bug. Because of this bug, it was not possible to create more than one new Agent-/SocietyType.
- fixed bug: in case some references could not be resolved a society type is loaded into the repository anyway (ModelManager.java)
- WSIG
- Several updates and bug fixes
- Persistence
- Updated to run with Hibernate 3.x.
- Added a lot of sanity checks to avoid NullPointerExceptions
- Updated examples not to use deprecated methods
- Provided minimal demo to experience persistence features
- Test Suite Framework
- Added support for retrieving the ID of a remote JADE instance started by means of the TSDaemon through the getJadeInstanceId() method.
- Added system property tsdaemon.port and tsdaemon.name for TSDaemon configuratraion.
DOCUMENTATION:
- New Tutorial on JadeGateway usage by Viktor Kelemen
- Hardly improved JadeGateway javadoc
- Fixed error in code example in the Programmer's Guide as indicated by Fábio Silva Carvalho
- Completely revisited Persistence Guide
- Completely revisited WSIG Guide
POSSIBLE BACKWARD INCOMPATIBILITIES:
NONE
MAJOR CHANGES in JADE 3.4 (28th February 2006)
==========================================================================
GENERAL IMPROVEMENTS:
- Notification of agent deregistrations with the DF (Pavel Tichy)
The notification to subscriber will contain new set of services, i.e.:
1) registration - all registered services
2) modification - modified set of services (some can be removed some can be added in comparison to previously registered list)
3) deregistration - empty set of service
- Modified persistent DF DB schema in order to store String service properties as plain String instead of enconding them in Base64
- Added support for db-abortonerror DF property.
- Added support for Iterated search when using the persistent DF.
- AMS: modified killContainer() to throw NotFoundException if the container to kill does not exist.
- AMS: Added -jade_domain_ams_maxresult option to modify the AMS maximum number of results to include in a search response.
- Added support for Serializable agent arguments in agent creation through the ams.
- AMSSubscriber: added support for subscribing to the AMS of a remote platform
- Added support for timeout in JadeGateway command processing.
- Added check to prevent main-peripheral container inconsistencies in JadeGateway
- Added default implementation of GatewayAgent processCommand() method automatically dealing with "behaviour commands"
- Added method shutdown() in JadeGateway to kill the JadeGateway container
- Modified UDPNodeMonitoring service to automatically propagate settings from the main container to peripheral containers.
- Modified UDPNodeMonitoring service to also work between replicated main containers
- ProfileImpl modified to preserve services settings when reusing an old Properties object inside a new Profile
- Added method getPrevious() in FSMBehaviour to retrieve the previous state
- Added initial support for starting agents from separate jar files (i.e. jar files not included in the classpath)
- Added support for %C wild-card in agent names.
- Restructured the AgentTree class and modified rma, sniffer and introspector GUIs accordingly.
- Modified tooltip of container host in AgentTree to get host address instead of name.
Getting the host name from the Swing thread is dangerous as in particular cases it may block for a long time.
- Restructured some code in MessagingService and added support for message traceability.
- Added support for ACLMessage.IGNORE_FAILURES user defined properties in message delivery.
- Modified MessagingService to avoid sending back FAILURE messages to the AMS.
- Added method getWrappers() in ThreadedBehaviourFactory class
- Integrated CodeLocator (by Joan Ametller - UAB) in AgentManagementService and AgentMobilityService to support MigrationService
- Added IntrospectionServer behaviour to inspect agent fields at runtime
- Added support for runtime platform introspection through the -jade_core_AgentContainerImpl_enablemonitor option
- New version of the LogManager agent Supporting management of logs in remote containers too.
- Added class PlatformID: a Location representing a platform (by Joan Ametller).
- Replaced starlight Base64 codec (that was distributed under GPL license) with commons-codec (that is distributed under ASL license).
(Suggestion of Geoffrey De Smet)
- Modified jade.proto.Initiator class to put the Vector of actually sent messages in the DataStore at the ALL_INITIATIONS_KEY key
- Added support for iterated-fipa-request protocol
- Added single-session version of responder protocol classes
LEAP:
- Added FaultRecoveryService. By activating this service both on the main and on peripheral containers,
a platform can survive to a fault and a successive restart of the main container. The FaultRecoveryService
provides an alternative fault tolerance support with respect to the MainReplicationService and should be used in
situations where there is the possibility that all replicated main-containers crash at the same time.
- Added support for retrieval of BE connected status from BEManagementHelper
- DeliverableDataInputStream/DeleivarebleDataOutputStream modified to use the LEAPACLCodec to serialize/deserialize AID and ACLMessages
- FrontEndContainer modified to make the BE repeat the resynch process if synchronization fails
- Simplified reconnection/BE-recreation procedure in BIFEDispatcher by separating input and output related methods
- JICPServer: Added support for management of local host addresses.
- Restored single-connection BE-FE dispatcher classes.
- Removed support for stand-alone container in MIDP
- Added method log(level, message, Throwable) in the PJAVA and MIDP versions of jade.util.Logger.
- Added "tail" command in OutputViewer
- Modified jade.util.leap.Properties class to read manifest properties as LEAP-<prop-name> instead of MIDlet-LEAP-<prop-name> (indication by Markus Backer)
- Modified build scripts to support MIDP compilation with JDK1.5
- Modified build scripts to remove pjava dependency from JDK1.1.x
- Modified target minimize to get jar, dlc and manifest interactively
- Several updates from Federico Pieri to keep the .NET version up to date.
- Fixed several details in the demo
- Revisited user guide
ADD-ONS:
- Semantics Framework
- New add-on developed by France Telecom (JADE-Board member).
Created new Semantic Framework add-on to exploit the semantics of FIPA ACL.
- Inter-Platform Migration Service
- New add-on developed by Universita Autonoma de Barcelona
By installing this service agents can migrate not only between containers in the same platform, but also between different JADE platforms.
This occurs when an agent specifies a PlatformID object as the destination when it calls doMove() or doClone().
- ASCML
- New add-on developed by University of Aachen.
By means of this add-on it is possible to declaratively define societies of agents and then
automatically deploy scenarios compliant to these societies specifying which agents to start
which dependencies relates them and son on.
- XMPP
- New add-on developed by Vicente J. Botti (Departamento de Sistemas Informaticos y Computacion Universidad Politecnica de Valencia).
This add-on includes a new JADE MTP that supports communicating agents and FIPA platforms using a more natural way to develop conversations:
Jabber, an Instant Messaging (IM) protocol designed to sustain lengthy bidirectional communications among entities on the Internet.
- Untraceability Service
- New add-on developed by Rafal Leszczyna at European Commission Joint Research Centre.
A typical scenario of employing a mobile agent is composed of the following steps:
i) an agent's goal is described, ii) the agent is dispatched from a container (called a base container/station or a source container/station)
and it roams until the goal is achieved, iii) the agent returns to the base station with results.
To allow such scenario, a mobile agent must store somewhere the address of its base container. Usually it saves it explicitly in its state.
This makes the address available to all. Anyone interested may learn the agent's place of origin which gives a strong indication of the agent's owner.
Such feature is undesirable in many agent applications where privacy of agents' owners should be respected.
The Untraceability Service allows an implementation of the above scenario while the address of the base station is kept secret.
- TestSuite
- TestGroupExecutor modified to perform test cleanup also when a test is skipped.
- Modified TestUtility.createAgent() methods to treat arguments as Objects
- Added the possibility of specifying a timeout in TestUtility.requestAMSAction()
- XMLCodec
- Fixed some problems and added utility methods to export/import ontological entities to/from intuitive and easy-to-read/write XML files
BUG FIXES:
- Fixed synchronization problem in ParallelBehaviour.handle()
- JADE platform shutdown modified to properly close the HTTP-MTP and the RMI.
(patch kindly provided by David Bernstein on 15/6/2005)
- AgentContainerImpl modified to properly shutdown IMTPManager after unsuccessful startup.
- DFAgentDescription, SearchConstraints now implement Concept in order to make "happy" the Ontology. (reported by Alexander Pokahr on Wed 22/06/2005 14:23)
- Some fixes and improvements (from David Bernstein) in SocketProxyAgent:
1. made SocketProxyAgent.DEFAULT_PORT public
2. changed ad hoc file logging to JADE logging
3. classes separated into their own source files
4. try agent startup arguments before "<agent-name>.inf" config file
5. add in BlueJade JadeBridge class and have it take its default port from SocketProxyAgent
6. some commenting and formatting cleanup
7. added ACLMessage version of sendMessage() in addition to string version in JadeBridge
8. WaitAnswersBehaviour: made message template less restrictive for case where the response comes not from the first agent in the receiver list
9. fixed bug in method run() of Connection class for SocketProxyAgent: use of uninitialized field prevents message from being read from input stream. Fix adapted from BlueJade.
- Fixed problem related to main container replication in pure JADE when launching the master and backup on different hosts.
- Fixed AMS unexistence problem after main container crash with replicated main containers by means of the "latent" state.
- Fixed bug in DeliverableDataInputStream when deserializing password (JADe-S) as reported by Alex Schustal
- Fixed synchronization problem in OutBox (MessagingService) as reported by Rick Kissh.
- Added deserialization capability in the SLCodec through the method readObject on the basis of the bug fix proposed by Alexander Pokahr.
Added set of constants in FIPANames for representing SL-ontologies.
- Bug fix: an execption was thrown by the constructor of CaseInsensitiveString when null was passed as a parameter
- Fixed deadlock in ThreadedBehaviourFactory (monitors: Scheduler and ThreadedBehaviourWrapper)
- Fixed ClassCastException in ProfileImpl by Geoffrey De Smet
- Fixed bug in AMS search max-result reported by Alexander Pokahr.
- Fixed problem when using the same object as both outgoing and incoming filter of a service as indicated by Joan Ametller
- Fixed bug in AgentContainer.removePlatformListener() as indicated by Jay D. Askren
DOCUMENTATION:
- Updated the Administrator's guide to reflect changes in UDPNodeMonitoring service.
- Added tutorial on XMPP MTP
- Revisisted LEAP User Guide
- Added Document on methodology for JADE based systems
POSSIBLE BACKWARD INCOMPATIBILITIES:
NO code-related backward incompatibilities are foreseen in this release.
However due to licensing problems the Starlight Base64 class is no longer included in the JADE distribution.
As a consequence code directly referencing that class will no longer compile. The org.apache.commons.codec.binary.Base64
class should be used instead.
MAJOR CHANGES in JADE 3.3 (2nd March 2005)
==========================================================================
GENERAL IMPROVEMENTS:
- Added jade_core_messaging_MessagingService_attachplatforminfo to attach
version and date information to the envelope of messages sent to remote platforms
- Added JADEGateway and GatewayAgent class to easyly interface a Servlet with a
JADE based system
- Added method shutdown() in Service interface for Service cleanup uperations
- Added UDP based node monitoring mechanism to support scalability on the number
of containers and temporary disconnections
- DF
- Several optimizations in the search mechanism
- Fixed support for other DB than MS Access.
- Added easy configuration to use HSQLDB through the jade_domain_df_db-default
- Added support for customized DFKBFactory objects
- Added jade_domain_df_db-cleantables option to reset DFDB tables at startup
- AgentContainerImpl class modified to send back a FAILURE message to the sender
when an ACLMessage is blocked by a filter before reaching the messaging source sink
- AID class modified to properly handle numeric agent local names also in MIDP
- Several minor modifications to support compilation with JDK1.5
- Added class jade.util.AccessControlList to manage black and white lists.
- TickerBehaviour,WakerBehaviour: Made uniform. Added method onWake()
- MessageManager:
- Modified to keep the size of its queue under control
- Corrected parameter names for pool size and max queue size
- ContaineTable: Added timeout in waitUntilEmpty()
- Improved threaded behaviour interruption mechanism
- HashCache is now synchronized and uses a LinkedList instead of a Vector
- Scalability improvements:
- added support for child nodes that are monitored by a parent
node instead of the main-container
- Now the platform accepts nodes with no container
- Improved the log levels of several classes
- Integrated support for HTTPS in HTTP MTP (Credits to UAB)
- Adjusted syntax of content of AMS FAILURE messages
- Added method getFailedReceiver() in AMSService to parse AMS FAILURE messages
- Restructured the agent life cycle management mechanism, now handled by different LifeCycle objects
- Added CallbackInvokator class to handle invokation of service specific agent callback methods
- Package jade.wrapper: Added ContainerController interface and fixed problems on platform listener registration
- Modified PlatformManagerImpl to accept services with null slices
- New java.logging based logging mechanism introduced in jade.core
- Modified behaviour loading mechanism to support IN and OUT parameter handling
- FSMBehaviour: added callback method for state entrance
- Filter: modified to handle service name.
- CommandProcessor: made package-scoped
- BaseService: modified to provide empty implementation for all Service methods.
ADD-ONS:
- WSIG
- Created new add-on for Web Services integration. By means of this add-on
an agent can register its services to the DF and these services are
automatically made available to remote programs as if they were Web Services.
Similarly, by registering a Web Service in the UDDI registry provided by
the WSIG add-on, this Web Service is made available to agents as if it
was another agent.
- LEAP
- Modified PJAVA version of the jade.util.Logger class to support redirection of logs to file
- Length of String content of ACLMessages written into 4 bytes to support long messages
- Improved handling of agent startup errors due to name clashes
- ConnectionListener interface modified to handle all events with a single method (Back.
- JICPClient: Added check on null response from server
- Added jade.imtp.leap.nio package and BEManagementService and NIOBEDispatcher to manage BackEnds using java.nio
- Fixed bug on BEManager re-creation
- modified JICPMediator interface
- Added mutual SSL authentication
- Changed PDPContextManager interface
- modified HTTPBEDispatcher and HTTPFEDispatcher to properly handle msisdn information
- Modified HTTPClientConnection to properly handle HTTPProxy authentication
- Modified JICPServer to support one leap.properties file per peer
- j2se.xml modified to copy logging images
- Added mechanism to support automatic connection drop-down between FE and BE and SMS-based restoration
- buildLEAP.properties, build.xml, midp.xml modified to properly handle classes that are dependent from the WMA
- Adjusted dotnet.xml and added .NET related preprocessor directives
- AgentContainerImpl: modified to handle bootstrap agents in midp too.
- OutputViewer: added "tail" functionality
- Fixed bug in LEAPFrameCodec related to long message.
- TAGLIB
- Fixed compilation problems in the examples (Daniel Le Berre)
- RDFCodec: fixed bug in URI (Spanoudakis Nikos). It creates a backward incompatibility
as content encoded by the new RDF codec cannot be decoded by old RDFCodec
- Security
- Removed setting of security factory class which overwrites user configuration settings
- Modified GroupCertificate: Rest of the certificate can be more than just the subject
- Modified JADESecurityFactory to handle DelegationCertificate
- Permission filter: Load rows into the checkerTable by a custom CheckerTableFiller
- Security services: improved logging
- CredentialsEngine: d/encoding now works also if the SDSINameImpl contained into a JADEPrincipalImpl is null.
- Persistence
- Modified PersistenceHelper to make it uniform with other helpers
- Added Savable interface
- Added example on persistence basic usage
- TestSuite
- Modified code and added ant target for automatic test suite execution
- TestUtility. ';' substituted wit path.separator
DOCUMENTATION:
- Several improvements in API documentation
- Tutorial on Ontologies and Content Languages improved thanks to comments and contributions from David Cabanillas
- Added links to 2 new tutorials: FIPA specifications and slides on Programming with JADE
- Added new tutorial on how to setup an SSL-based mutual authenticated connection between JADE containers
- Fixed code include in an example of the JADE tutorial for beginners
BUG FIXES:
- Fixed bug in jade.util.Logger initialization: some logging printouts were lost
- Fixed bug on launching a backup main container on a different host with respect to the master main
- Fixed bug on TBPair removal: memory leaks removed (Bug ID 36 reported by "anonymous" and later by Owen Cliff)
- Fixed bug in ObjectSchema.getFacets()
- Fixed bug on EOF detection in SocketProxyAgent (by Andrei Marculescu)
- Fixed bug reported by Alex Moore: notification of a terminating agent was given to method bornAgent instead of deadAgent.
- Fixed bug reported by Christian Poecher:in synchronous O2ACommunication, Agent#getO2AObject() does not unblock the putters thread.
- Fixed bug about containers with the same name
- ACLMessage: Fixed bug # 42: Null content object caused ACLMessage.getContentObject to throw NullPointerException
- Fixed deadlock bug reported by Pavel Vrba (19/11/2004) between restartLater and notifyRestarted
- LEAPFrameCodec and LEAPCodec: fixed bug in encoding Strings of length 1
- Sniffer and ToolNotifier: fixed bug in dealing with messages with
multiple receivers
- Principal and Credentials in the message shutdownPlatform and killContainer
were not properly managed by the security add-on
- PersistentDeliveryService: messages were not properly restored
- MessageManager: avoided deliverer crash
- jade.core.Agent: fixed bug in putO2AObject synch (Christian Poecher)
- LEAP-IMTP: did not manage properly a keep-alive time < 0
- Fixed bug in ACLMessage when cloning the reply-to slot
- Fixed bug in ThreadedBehaviourFactory related to interruptions in blockingReceived
- Fixed bug in behaviour dynamic loading
- FIXED logger overwriting bug in logging for J2se
- Fixed bug LEAPCodec related to long message.
POSSIBLE BACKWARD INCOMPATIBILITIES:
- The ConnectionListener interface has been modified in a backward incompatible way:
instead of one method per event there is now a single method to handle all possible events.
MAJOR CHANGES in JADE 3.2 (26th July 2004)
==========================================================================
GENERAL IMPROVEMENTS:
- Added the new security add-on. It is compatible with the service-oriented kernel of JADE and it
includes 4 security-related services: Security-, Permission-, Signature- and Encryption- service
.
It also provides support for RMI ov er SSL.
Behaviours:
- added ThreadedBehaviourFactory that allows executing a behaviour in- a dedicated thread
- FSMBehaviour: Added method to handle FSM inconsistencies
Logging:
- Reimplemented the logging support based upon java.util.logging
- Added new tool, LoggerManager, launchable via RMA GUI. It allows to
modify the logging level at run-time on a per-class basis.
Transport:
- HTTP is now the default MTP instead of IIOP (Joan Amettler)
- Introduction of the PLatformManager and restructuration of the IMTPManager
- Added support for byte[ ] in SL codec
- Added support for transporting multi-byte charset (Denso IT Labs). It
required using a newer version of JavaCC (version 3.2)
Persistence:
- Added PersistenceService with support for agent save, load, reload,
freeze and thaw on relational database. The PersistenceService is based
on Hybernate and is distributed in the Persistence add-on.
- Added proper buttons and menu items in the RMA to activate the
persistence-related actions.
- Modified jade.util.leap classes to be persistent.
- JADE tools made persistent
- Added persistence ontology
Others:
- Added a new generic ontology, called SerializableOntology, that allows to manage
generic serializable objects. As a consequence, the DF is now able to deal with
generic serializable properties.
- Improved the fault-tolerance of a split container
- ProfileImpl handles both dots '.' and underscores '_' in config parameter keys.
- Kernel: added get/setPreferredPosition() methods to support dinamic filter positioning mechanism
- Added optional mechanism for automatic DF clean-up when registered agents terminate
- Dynamic agent loading from a separate JAR file (still experimental, contributions from JADE Community)
- Added support for requesting Introspector/Sniffer to start observing agents (Univ. Aacken)
BUG FIXES:
- Contract-net example: fixed bug on handleRejectProposal()
- Fixed a bug related to envelopes in inter-container communication.
- fix to blockingReceive(): when executed from a separate Thread, it generated an infinite loop
- Fixed bug concerning the restarting of composite behaviours from arbitrary
threads. (Juan Manuel Serrano)
- Fixed bug #122 reported by Carl Timmer: bad dealing of numerical ServiceDescription
properties.
- Fixed bug #108 reported by Ian Dickinson: bad dealing of numerical expressions in
ACLParser.
- Fixed bug: messages sent in the takeDown() method were not delivered.
- SL: managed the cases when 'true' or 'false' are the values of an AbsPrimitive that
wraps a String,
- Added AlreadyRegistered predicate in JADEManagementOntology.
- Added sanity check when delivering a message to an agent whose
container has just disappeared in the meanwhile.
- New containers were not notified about currently installed MTPs: fixed.
- Fixed bug #127: the ProfileImpl for a container was badly initialized and a new MTP
was instantiated.
- Fixed bug #120: the AMS aid did not return transport addresses
- Added support for different payload encodings according to the charset passed in the
"PayloadEncoding" slot of the envelope (Bug 109)
- Bug fix: a NullPointerException was thrown by fill/extractContent when ontology/language was null.
- Composite behaviours were not properly restarted from arbitrary threads (Juan Manuel Serrano)
ADD-ONS:
- LEAP:
- Modified to handle any version of the Wireless Tool Kit (including most recent versions)
- Improved fault-tolerance
- Added hooks for integrating a RadiusManager.
- Improved the build process
- Added LEAP BackEnd configuration support through property file.
- The JADE-LEAP split container can be used to launch agents from applets (see AppletBoot.java)
- HTTP MTP: Various bug fixing
- Released the Test Suite Framework as a new add-on
- Released new security add-on
- Released new persistence service add-on
- Improved the Protege bean-generator by adding support for OWL (Chris Van Aart)
and by fixing a bug that generated bad ontology java class with some slot names.
- new HSM (Hierarchical State Machine) add-on (University of California at
Santa Cruz and the University of Utah)
DOCUMENTATION:
- Programmer's Guide: Added sections on: fipa-subscribe IP (Edward Curry), threaded behaviour.
- Updated the Administrator's Guide and the LEAP Guide.
- Updated the tutorial of David Grimshaw
- Improved the JADE-Servlet tutorial (Fabien Gandon)
- Added new tutorial on logging
- Updated the Security Guide, it includes also a step-by-step tutorial.
OTHERS:
- migrated the bug tracking system from jitter-bug to mantis