CHANGELOG for featherlite framework core (RSP), Version 3.3.0 r21616 This plug-in provides all the classes of the featherlite framework core required to build featherlite server applications with the Eclipse IDE. To install the latest version of the plug-in, save it using the link below. Extract and import it to your Eclipse IDE installation. Please consult the Getting Started guide which can be downloaded on the documentation page. ------------------------------------------------------------------------ [Bugfix] added a missing i18n property which leads to further exception in case of an exception [Bugfix] change all fields to be transient, which should not be serialized in RSPConnection implementations [Bugfix] Corrected generics to allow for generic parameterized element selections [Bugfix] Corrected selector to ignore missing state variables, Control handler to correctly handle the timer. [Bugfix] Corrected Task(Element e) Constructor to read operators of type long; error message corrected to disregard locator, but ID. [Bugfix] fixed a bug in the AgentToConnectionNavigator where it is expected that the RSPConnectionHandler is always registered as a featherlite component. Now if the handler does not exist, the empty list is returned [Bugfix] Fixed a nullpointer when the ExecutionClientUpdateHandler is stopped before started [Bugfix] fixed a problem, where a task is set to WARNING, although it has already been set to EXECUTED. This bug occurred in situations where the task length is 0, and the computer is very slow, and lead to race conditions. [Bugfix] fixed a situation in IntegrationConnection where if either IOAcceptor or IOConnector is not set, getUri() causes a null pointer exception [Bugfix] fixed a situation in the PlanWorkflowCommand where the top level workflow itself was not planned in parallel [Bugfix] fixed a situation where after an IntegrationMessage has been processed, the IOService registration is not properly removed [Bugfix] fixed a situation where an integration message might not be set to successful although it was handled correctly [Bugfix] fixed a situation where even if the IntegrationMessage notification failed, the message is still set to SUCCESSFUL [Bugfix] fixed a situation where the SimplePlanBasedControlHandler does not cancel the task on shutdown [Bugfix] fixed a situation where the simple plan based control handler says it can't shutdown because it isn't started which is wrong if stop was called right before [Bugfix] fixed a situation where the TcpIpAcceptor does not properly check what the result of reader.readLine() is in readPackage() [Bugfix] fixed bugs in formatting the IntegrationMessages IAgentObject body elements to a single XML string with no new lines in the XmlModel- and XmlObjectConverters [Bugfix] fixed bugs with the integration components where mode is not properly set [Bugfix] fixed bugs with the integration components where state is not properly set [Bugfix] fixed bug with missing roll-back of planned workflows if one of the selected orders could not be planned [Bugfix] fixed keyset problem in LinkedListMap [Bugfix] fixed problems where nullpointers arise in some components if they are stopped before started [Bugfix] fixed problems where the *FileAcceptors go into a live loop if files are not readable [Bugfix] fixed problem with saving parameter to objectives [Bugfix] fixed the comparator as it never would return 0 if integers were equal [Bugfix] fixed the integration view as it was not updated correctly [Bugfix] fixed workflow rollback problem, in the case the recursive planning failed (Bug 525) [Bugfix] moved RSPTransaction.publish() into finally block, since we have commands which can not be undone but still produce updates in exceptional situations [Bugfix] removed bug, if the placement result is null [Bugfix] removed @Override annotation from DescriptiveObjective.getCopy() and the abstract DescriptiveElement.getCopy() as these conflict with IObservable.getCopy() [Bugfix] SetTaskPlacement Command corrected to delete the operators that stem from the original placement when shifting the task to a new resource, and operators are computed anew. [Bugfix] State variables now always set lower and upper bounds. [Interface] added a new IntegrationHandler.getIoServices() to retrieve the IOServices registered under a specific key [Interface] added code to allow policies on tasks, i.e. to call the resource selection policy configured to the task [Interface] added method to element maps to get all objects stored for the given type [Interface] changed interface to get RSPConnections from RSPConnectionHandler to be a list not a map [Interface] changed the names of configuration options for the *SocketEndpoints as they were a bit misleading, and didn't allow proper simultaneous use [Interface] changed the setting of the integration message state to be done in the IntegrationConnection and added throws Exception to the process methods of the *EndPoints and IOConnector as the try/catch blocks are in the IntegrationConnection [Interface] Moved the "Model" tag from XMLModelConverter to TagNames. Old now deprecated, will be removed in 6 months (November 2011). [Interface] needed to refactor the RSPConnection a bit for the updating of the state changes [Interface] refactored RSPConnection.queueSize() to RSPConnection.getQueueSize() [Interface] removed the setMsgString method on IntegrationMessage. It was never used and makes no sense, as the message string is dynamically created by the body of the message [Interface] renamed FilePollingAcceptor to FileDirectoryAcceptor [New] added 4 services to manipulate RSPConnections [New] Added a configuration option to validate that the types of objects received in the XmlModelConverter are all of the same type [New] added a convenience method to query a new unique id on the server in the RSPRemoteHelper class [New] added a detection for (un)nested AgentObjects in a received XML DOM element to the Xml*Converters [New] added a new FileDirectoryConnector [New] Added a new FileHelper.humanizeFileSize(File) method [New] added a new method which is to be used to convert IAgentObjects to dom4j Elements allowing sub classes to create special purpose XML elements [New] added a new state message to the integration message so that in exception situations an error message can be set on the IntegrationMessage [New] added an objective set on the script to reverse the sequence of tasks during workflow creation [New] Added a simple system tray implemented in the RSPSystemTrayIcon class. It has a single action to shutdown the featherlite instance and has a static no argument method to load [New] added configuration option to configure which log4j properties file is to be used. The new config is 'rsp.log4j.properties'. If this config is not defined, then the previous default file name 'log4j.properties' is used. [New] added convenience method to format with two keys/values to MessageFormat [New] added functionality to FileDirectoryAcceptor, allowing it to either read to a String or a byte array [New] added functionality to XmlModelConverter and XmlObjectConverter, allowing it to either parse from a String, or from a byte array [New] Added keySet operation to object filter, allowing to retrieve the set of all keys that are being processed in this filter. [New] added MapOfMap implementation using LinkedHashMap which is more suitable for ElementMap implementations [New] added name and id of the state variable to the violation [New] Added priority by order date, one with higher priority for earlier dates, one with higher priority for later dates. [New] added resource selection policy always selecting the first placement result [New] added SelectFirstResourceForWorkflowCommand [New] Added selector for ProcessingState [New] added TcpIpAcceptor and TcpIpConnector integration components [New] added XmlObjectConverter which can parse a single IAgentObject which is a root element [New] Implemented a CsvFileAcceptor for parsing CSV files [New] implemented an integration framework scenario for accepting Excel files [New] implemented the publish() method of the TimedClientUpdater to allow publishing to be forced by a client. This is used by the ServiceHandler [New] implemented validate method checking, if a parameter with id 'script' is declared on the order [New] Import Model On Server Action, query and dialog. Allows to import a model on the server from a remote client. [New] made IntegrationMessages to be updateable by adding IObserverable to the interface definition and added the needed changes to the integration handler [New] Refactored update calls from Services to Commands [New] Persistency support for LongState, LongValue, and LongChange added and tested. [New] Query all models in a models folder and subfolder. [New] refactored the integration message archivator [New] refactored to move the observer updates to the commands [New] updated the POI library for reading Excel documents to version 3.7 ------------------------------------------------------------------------ CHANGELOG for featherlite framework core (RSP), Version 3.2.0 r20631 [Bugfix] Bug entry 439 (internationalization keys followed by punctuation) solved. [Bugfix] Corrected faulty de-serialization of Transaction ID on ITransactionObjects. [Bugfix] Corrected update model with template: concurrent modification exception resolved, and change in type of attributes is now considered as well [Bugfix] Fixed Mantis 0000092: Time Correction in default confirmation in the case of error [Bugfix] fixed updating of Workflows and WorkCalendars, which were not updated through the ImportModelService [Bugfix] MessageFormat: fixed a situation where the beginning of the message is not formatted [Bugfix][New] Implemented floating point absolute precision comparisons to a precision given at an agent level. Major changes: IFloatPrecision interface to be implemented by structures storing floating-point values; some functions of existing such structures have thus turned deprecated; removed toPrecision() methods in Agent and RSPMath, which moved to package com.rsp.core.base.helper; toString methods must return the complete representation of the number values (due to correct handling of precision); updated state value filtering methods in float State variable; updated slot search to account for the given precision. [Bugfix] ObjectFilter now is set to use generics in order to restrict the classes of object it is allowed to process. [Bugfix] Resolved: 0000127: Null Pointer exception in getting actual state, when no value at t=0 is defined on the resource [Bugfix] updated methods to reflect refactorings in main RSP plug-in [Bugfix] Zero length tasks with a consume succeeded even if resource did not have enough capacity, by planning at time infinity. Fixed. [Interface] added method to ask the DAO factory if it implements paging, since the JE and NoSQL do not implement paging [Interface] added update method declarations to all data access objects and added a DAO interface for DescriptiveTask objects [Interface] Created Abstract Control handler that implements functions common to all existing control handlers. [Interface] deprecated the KEY_ALL in the ObserverHandler, as it is better practice to register for every single key, for which the listener wants to be notified. [New] adapted all classes to the changes in the interface structure. [New] adapted java docs to changes in interfaces [New] adapted to the changes in using update instead of save in DAO, if the object already existed [New] added a marker interface for all classes to whom a agent observer can listen to (IObservable) [New] Added a Query to retrieve the list of featherlite container components [New] added interface for agent objects that can be stored in element maps (ICoreObject) [New] Added new priority types, added unit testing. [New] Added the ChangeComponentStateService to allow the changing the state of featherlite container components [New] Support for event based execution of workflows with time ordering "Collection" added. [New] Command that puts a task in state planning onto another resource based on a given placement result. [New] CostCalculation now part of APS. Priorities based on cost shifted to APS as well. [New] Filter updated to handle requests by Object type as well. [New] fixed and tested RMIExecutionHandler so that RMI execution can be performed between two featherlite agents [New] Agent.getChildElement() version that does not require parent object, but only the Locator [New] Manipulating an object using two different keys in the same object filter now throws an exception rather than logging an error. [New] ObjectFilter throws an exception in case of invalid operations. [New] re-factored all classes formerly implementing IAgentObject. The IAgentObject implementations are now restricted to a smaller set only, mainly those, which are (or might be) persisted. [New] renamed abstract class for objects to whom a policy can be attached from RSPCoreObject to PolicyContainer for not to confuse them with ICoreObject implementations, which are a subset of IPolicyContainer classes only. [New] renamed the interface for all objects to whom policies can be attached to to IPolicyContainer [New] Reset actual states command in execution client. (Requirement 117). Current state not changed since it's unclear what shall happen in a plan based execution context with later values. [New] The existing CostCalculationPolicy is now deprecated. Use the new TaskCostCalcilationPolicy which is in the APS Plugin instead. To be phased out in 6 months (August 1st, 2011). ------------------------------------------------------------------------ CHANGELOG for featherlite (RSP), Version 3.1.0 r19785 [Bugfix] added missing policy configuration of CostCalculationPolicy [Bugfix] corrected RSPComponentLifecycle implementations of various classes which performed an initialize instead of a run, or didn't return true if the call succeeded [Bugfix] fixed a problem where when the PersistenceHandler is requested through the RSPContainerHelper class, and it is explicitly said that it is not required, the helper still threw an exception if the PersistenceHandler did not exist [Interface] deprecated calls to Command.runInTransation() and Command.runInScheduler() [Interface] re-factored RSPComponentContainer to not use a separate sequence for initialize, start, stop and shutdown. Now the definition of the components in the RSPContainer.xml file define the sequence in which they are initialized: Initialize and Run are top to bottom, and Stop and Shutdown Bottom to Top. [New] added a new method to RMIAgentObserver with which it is possible to ping a client seeing if it is still alive, or to notify the client that the server is shutting down [New] Changed Policy References in code to TypeOfPolicy.POLICY_KEY, which is now uniform overall. Made other references to constants for policies as deprecated (to remove in June 2011). [New] Major changes, re-factorings and code clean-ups of the ObserverHandler, ClientHandler, ClientUpdater and RMIClientHandler ------------------------------------------------------------------------ CHANGELOG for featherlite (RSP), Version 3.0.0 r19548 [Bugfix] added exporting of state values of the state variables [bugfix] added missing locking [Bugfix] added null check in undo method [Bugfix] added trimming of string values when converting to values for *ListParameters [Bugfix] Before we had start and duration attributes on workflows, which had to be updated for every change in start and duration of the elements. But it turned out to be much to error prone to always expliciteliy call the update from the command (see Bug 0000474). To fix, I re-factored the code to calculate the start, duration and end of the workflow every time we request it. [Bugfix] catch an exception when logger.info fails in FeatherliteRmiSocketFactory [Bugfix] changed access to actual states to methods call, to avoid null pointer exceptions accessing the actual min and max, since they are lazy loaded [Bugfix] checked command rollback implementation. part I [Bugfix] checked command roll-back implementation. part II [Bugfix] checked command roll-back implementation. part III [Bugfix] Corrected erroneous removal in case of addition of an existing order ID. [Bugfix] Corrected failure of plan based controller to execute certain tasks; refactored to ensure everything works as it should. [Bugfix] ExecuteWorkflowCommand added to correct transaction. [Bugfix] Faulty UI update of failed workflows solved. [Bugfix] fixed a bug in accessing single objects via RMI [Bugfix] fixed a problem where importing of the composite objects Bounds, GraphicsData, ManagementData and Objectives from XML, if no ID, Name or Type is set. They are now set if missing [Bugfix] fixed bugs where using locator does not get parameter form parameterized element [Bugfix] fixed error in the usage of the 'ignore' parameter [Bugfix] Fixed ORPlugin mapping for new fields in StateVariables [Bugfix] fixed rollback problem of the command [Bugfix] fixed the problem with zero duration tasks, which caused consume tasks to be placed, even if the bound were violated [Bugfix] made the string state to work as expected [Bugfix] Mantis 470: corrected allocation such that duration of X milliseconds fit in a slot of length x milliseconds. [Bugfix] Minor FindBugs solves. [Bugfix] Modified behavior of MultiSelectorQuery: all and selectors must match and at least one or selector. Empty (and-/or-) lists always match. [Bugfix] Off periods addition undo-command corrected [Bugfix] removed check, if the policy key was already registered [Bugfix] removed the compacting of valuers for the string state, which caused errors [Bugfix] resolved bug in upward search for time relation policies of WorkflowElements [Bugfix] Slotted FloatState variable now rounds up times correctly if time is a multiple of the given slot size. [bugfix] solved problem with implementing the undo method in the plan order command [Bugfix] Some calendar policies may return null if no slot is found. Corrected Nullpointer that occured. [Bugfix] State Variables getForwardInterval made robust against overflow of time w.r.t Long.MAX_VALUE. [Bugfix] Time Relation takes parent workflow's date if the parent workflow has planning direction midpoint. Fixes issues with non top-level midpoint workflows [Bugfix]we changed the update method of workflow to fix [Bugfix] we fixed a bug which occurred in the roll-back of shift task commands, when the placement of the tasks failed. [Bugfix] Wrong comparison in equals for state corrected [Interface] Added a FeatherliteType class which is used to defined the type of the Featherlite instance. RSPStarterInit and RSPConfig now use them to properly configure the featherlite instance [Interface] Added violateBounds function in state variable, which is required to check if a value violates the bounds on the state variable. Changes implemented in the different state variables. Added a StateBoundsViolationHandler to check for violations on state vars. This is now activated in the PlanningPostInitializer class. Removed LogisticCapacityPlacement policy. [Interface] Changed forward/backward/direction constants to com.rsp.core.base.model.constants.TimeDirection. [Interface] Changed the simple plan-based execution controller. Should now work in a rudimentary fashion. [Interface] implemented AbstractCommand.undo()-method to log a warning if undo is not implemented (needed for project specific code where undo's are not always implemented) [Interface] deprecated the AbstractCommand.runInTransaction() and .runInScheduler()-methods. Better is to used RSPTransaction.addCommand() and ControlHandler.addCommand() respectively [Interface] modified the RSPRemoteObserver to send the key with every notification. This is required to implement a single remote observer per application (plugin) [New] implemented a new remote agent observer used by all client views to update [Interface] Refactored many constructors of core model objects to have the required arguments. This solves certain issues where NullPointers are thrown when the locator is retrieved of a core object. [Interface] Updated the bound checking on state variables to come from the variable declarations itself and not from the resource. As a consequence, the functions in the placement policies do not require modifying the bounds on the state variable. As of now, the functions for placement passing the bounds as parameters are deprecated. [New] added a convenience method to throw RSPExceptions when they have the rsp.message key [New] added a data structure to store lists of objects in a map [New] added a data structure to store sets of objects in a map [New] added a parameter selector for FloatParameter [NEW] added a placement policy to be used for truck transport using the capacity and the mode state to place [New] Added a query handler similar to the service handler to be used as endpoint to perform queries. The handler also provides methods to get singel objects form remote suide, which was formerly done by the element map handler. The latter has been removed. Please note, that the query handler is a RSPComponentLifecycle and has to be registered as a component to be initialized at startup in the contaner configuration. If not registered, the clients will throw an exception stating that no query handler is registered. [New] added commands to attach and detach workflows [New] added command to detach a workflow by undoing all changes made on state variables but not deleting the workflow [New] added dialog, action etc. to assign a resource to a planned task form the gantt context menu [new] Added functions to model editor to edit the slot size of slotted state variables. [New] Added new Function to StringState to query the value at or next later value for a given time. [New] Added planning for Collection of task (like group but arbitrarily start synchronization). [New] added some policies to test PLan Based Execution Control [New] added support to close orders and tasks [New] added support to import workflows from xml model data [New] added support to re-assign a task from it's current resource to an alternative resource [New] added support to the DeafaultWorkflowCreationPolicy to turn task on or off by a boolean parameter with id 'ignore' [New] added the RSPAgent.toPrecision(double)-method with which a global precision can be be achieved. [New] Added time discrete state variable interface, and implemented for floatstate. Changed visibility of some methods to be inheritable from within the package. [New] changed the standard views content provider to receive all object updates from a single content provider, which is registered from inside the RSPCoreActivator [New] Execution now consistently checks that execution does not cause any violation on the upper and lower bounds of the resource. Interface to the State Variables has been extended. The use of the actualState is now deprecated; use actualMaxState and actualMinState functions instead. [New] implemented action, service and command to assign a task to new resource without re-scheduling. [New] implemented undo [New] [Interface] Extended plan based control handler. Interface change requires control handler to give the workflow date which shall be set when adding the workflow's controller to the controller. [New] marked as deprecated [New] Midpoint planning implemented, with shift & reschedule task command. [New] New Resource selector based on values of string state variable. [New] only building plug-ins if it exists [New] Plan Based Execution should now be in a correct functional state. [New] re-factored the transaction roll-back and implemented undo in Commands. During this some unused commands and services were removed and the set state commands were cleaned up. [New] Reimplemented ISO durations to comply the PT1M format with the T delimiter for time information. Models have been adapted, any input of the form P1H or P1S fail, P1M means one month, PT1M one minute. [New] Set to Started in control view. Note that because of this and to guarantee a predictable behavior of the execution despite start and end times of tasks may have be enforced manually, SetToStartedCommand now corrects the task's start time to "now". [New] Slimmed plan-based execution. [New] Updated interface of time slotted state variables. [NEW] Work calendars include off times. Using APS VacationPeriodicCalendar they are taken into account in scheduling. Updated persistence and model editor. ------------------------------------------------------------------------