This is the granular log of changes and bug fixes to MetaBoss codebase. It is written in reverse order - the topmost entry corresponds to the most recent modification description Build 1.4.0001 ============== - Messages can now be contained inside DataDictionaries, which allows to model Messages applicable to the whole System or even whole Enterprise. - Moved to build with Apache Ant 1.6.5 - Moved to use Sun JWSDP 1.6. This integration means that during build of MetaBoss projects, the java.endorsed.dirs Java system variable must include JWSDP 1.6 endorsed dirs. For convenience the files from these directories have been copied to the thirdpartylib/jwsdp-1.6/endorsed. - Fixed bug SF-1363381 - Implemented feature requests SF-1338230, SF-1321626 Build 1.4.0000 ============== - Fixed bug SF-1312423 - In the MetaBossBuilder custom Ant tool added new type of module definition: it is used to specify the build of standalone data dictionaries. - In the MetaBossBuilder custom Ant tool renamed element to the (this element is a child of the module definition. This is done in order to harmonise the names with the new module definition. - Introduced AbstractOperation to simplify defininitions of different operations (eg. Service Operation Event Subscription Operation etc) This change requires to apply the following search and replace to xml files in all old models 1. Replace 'MetaBossModel.EnterpriseModel.Operation.inputFields' with 'MetaBossModel.EnterpriseModel.AbstractOperation.inputFields' 2. Replace 'MetaBossModel.EnterpriseModel.Operation.inputConstraints' with 'MetaBossModel.EnterpriseModel.AbstractOperation.inputConstraints' 3. Replace 'MetaBossModel.EnterpriseModel.Operation.outputFields' with 'MetaBossModel.EnterpriseModel.AbstractOperation.outputFields' 4. Replace 'MetaBossModel.EnterpriseModel.Operation.outputMessages' with 'MetaBossModel.EnterpriseModel.AbstractOperation.outputMessages' 5. Replace 'MetaBossModel.EnterpriseModel.EventSubscriptionOperation.inputFields' with 'MetaBossModel.EnterpriseModel.AbstractOperation.inputFields' 6. Replace 'MetaBossModel.EnterpriseModel.EventSubscriptionOperation.inputConstraints' with 'MetaBossModel.EnterpriseModel.AbstractOperation.inputConstraints' 7. Replace 'MetaBossModel.EnterpriseModel.EventSubscriptionOperation.outputFields' with 'MetaBossModel.EnterpriseModel.AbstractOperation.outputFields' 8. Replace 'MetaBossModel.EnterpriseModel.EventSubscriptionOperation.outputMessages' with 'MetaBossModel.EnterpriseModel.AbstractOperation.outputMessages' 9. Replace 'MetaBossModel.EnterpriseModel.EventSubscriptionOperationInputField' with 'MetaBossModel.EnterpriseModel.OperationInputField' 10. Replace 'MetaBossModel.EnterpriseModel.EventSubscriptionOperationOutputField' with 'MetaBossModel.EnterpriseModel.OperationOutputField' 11. Replace 'MetaBossModel.EnterpriseModel.EventSubscriptionOperationOutputMessage' with 'MetaBossModel.EnterpriseModel.OperationOutputMessage' - Introduced AbstractDataField to simplify defininitions of many different fields (eg. Structure fields, Operation fields etc) This change requires to apply the following search and replace to xml files in all old models 1. Replace 'MetaBossModel.DataDictionaryModel.StructureField.dataType' with 'MetaBossModel.DataDictionaryModel.AbstractDataField.dataType' 2. Replace 'MetaBossModel.DataDictionaryModel.StructureField.structureType' with 'MetaBossModel.DataDictionaryModel.AbstractDataField.structureType' 3. Replace 'MetaBossModel.DataDictionaryModel.Structure.structureFieldsOfType' with 'MetaBossModel.DataDictionaryModel.Structure.dataFieldsOfType' 4. Replace 'MetaBossModel.DataDictionaryModel.DataType.structureFieldsOfType' with 'MetaBossModel.DataDictionaryModel.DataType.dataFieldsOfType' 5. Replace 'MetaBossModel.EnterpriseModel.OperationOutputField.structureType' with 'MetaBossModel.DataDictionaryModel.AbstractDataField.structureType' 6. Replace 'MetaBossModel.EnterpriseModel.OperationInputField.structureType' with 'MetaBossModel.DataDictionaryModel.AbstractDataField.structureType' 7. Replace 'MetaBossModel.DataDictionaryModel.Structure.operationInputFieldsOfType' with 'MetaBossModel.DataDictionaryModel.Structure.dataFieldsOfType' 8. Replace 'MetaBossModel.DataDictionaryModel.Structure.operationOutputFieldsOfType' with 'MetaBossModel.DataDictionaryModel.Structure.dataFieldsOfType' 9. Replace 'MetaBossModel.DataDictionaryModel.DataType.operationInputFieldsOfType' with 'MetaBossModel.DataDictionaryModel.DataType.dataFieldsOfType' 10. Replace 'MetaBossModel.DataDictionaryModel.DataType.operationOutputFieldsOfType' with 'MetaBossModel.DataDictionaryModel.DataType.dataFieldsOfType' 11. Replace 'MetaBossModel.EnterpriseModel.OperationInputField.dataType' with 'MetaBossModel.DataDictionaryModel.AbstractDataField.dataType' 12. Replace 'MetaBossModel.EnterpriseModel.OperationOutputField.dataType' with 'MetaBossModel.DataDictionaryModel.AbstractDataField.dataType' - Introduced AbstractMessageField to simplify defininitions of many different messages (eg. Operation Output message, Event Update messages etc) This change requires to apply the following search and replace to xml files in all old models 1. Replace 'MetaBossModel.EnterpriseModel.OperationOutputMessage.messageType' with 'MetaBossModel.EnterpriseModel.AbstractMessageField.messageType' 2. Replace 'MetaBossModel.EnterpriseModel.Message.operationOutputMessagesOfType' with 'MetaBossModel.EnterpriseModel.Message.messageFieldsOfType' Build 1.3.0003 ============== - Created drag-and-drop capability for some model elements in the Design Studio. - Fixed bugs SF-1250754, SF-1251457 and SF-1238609 - Fixed transaction management mechanism and transaction management proxy generation to take care of the transactions which were managed or timedout while underlying implementation code was executing. (See bug report SF-1238609). Also improved logging around transaction management. - Added ModelVersion top level model element. It contains the version of the model and the description of the version - Initial release of the System UsageSpecification - UseCase modelling capability. This invovles modifications to the Enteprise Model, Design Studio etc. Build 1.3.0002 ============== - Fixed bugs SF-1233182 and SF-1233157 - Modified SystemCoreCode generator interface and default impelementation in the way that it can be used to generate code for the DataDictionaries. Build 1.3.0001 ============== - Reworked packaging of the adapters in order to enable adapters to the data dictionary elements, such as Structures. This has invovled the following: 1. The adapter package name now includes suffix '.services' or '.types' (before there were none) 2. In order to keep package names roughly the same length (Windows has an unfortunate limit of max 255 characters file path) we have shortened packagenames of the standard adapters as follows: WAS: generic.stringstructuresadapter NOW: generic.stringstructures WAS: generic.xmlstringsadapter NOW: generic.xmlstrings WAS: generic.simplifiedstringstructuresadapter NOW: generic.simplifiedstringstructures WAS: generic.domelementsadapter NOW: generic.domelements Note that these names must also be changed in the ant file builder expert task 3. Generated Web services namespaces have changed from something like webservices:/HatMaker/Crm/CoreDomainSupport/DataManagement to webservices:/HatMaker/Systems/Crm/Services/CoreDomainSupport/DataManagement This is again to allow data dictionaries to have distinct namespaces - Added ability to access Business Objects instances which were loaded into the Domain before. This ability improves data access performance for some types of transactions. The generated BODomain class now has getCached() operation for each Entity type in the domain. This method returns the array of cached instances. - Introduced ability to have an Array parameters in the Entity Selectors. The array parameter can only be used as part of the IN condition. For example for the selector where DesiredValues input parameter is declared an array type the SQL could be: " ${EntAttribute.Priority} IN (${Inputs.DesiredValues}) " This is in responce to the Feature Requests SF-1226041 and SF-1068487, which are now closed - Introduced EnterpriseTimeServicesProvider abstract interface. It allows to integrate generated code with the time service in the Enteprise This is in responce to the Feature Request SF-1225933, which is now closed - Fixed the way DataDictionaries are displayed in the model tree inside the Design Studio - Added ability to import DataDictionaries into the Enterprise models - Integrated with new version of Jamon (Ver 1.3) Build 1.3.0000 ============== - Improved metadoc generation. Documentation now includes element counts in the index panel - Started to implement feature request SF-1212422 - Fixed bug SF-1212404 - Modified the Enterprise model. DesignLibrary element can now own any number DataDictionary elements whereas previously it could only own at most one DataDictionary. This change is necessary to facilitate importing of external DataDictionaries in the Enterprise model (planned for implementation in the near future). This change means that the existing models created with older versions of MetaBoss are not compatible with the new one and have to be changed a little. This is also the reason why the minor version number has been incremented for this release. Following changes are required: 1. File storage.properties which is located in the root directory of the model. Change line com.metaboss.sdlctools.models.metabossmodel.datadictionarymodel.DataDictionary=DataDictionary/Model.xml to com.metaboss.sdlctools.models.metabossmodel.datadictionarymodel.DataDictionary=DataDictionaries/${Instance.Name}/Model.xml 2. Move Enterprise DataDictionary file from DesignLibrary/Datadictionary/Model.xml to DesignLibrary/DataDictionaries//Model.xml 3. For each System move System DataDictionariy files from Systems//Datadictionary/Model.xml to Systems//DataDictionaries/Default/Model.xml 4. Mass search and replace in all xml files comprising the model text /DesignLibrary/Datadictionary/Model.xml to /DesignLibrary/DataDictionaries//Model.xml 5. For each System mass search and replace in all xml files comprising the model text /Systems//Datadictionary/Model.xml to /Systems//DataDictionaries/Default/Model.xml 6. (Optional) The name of the DataDictionary in the DesignLibrary is now forms part of the resulting Java package where all DataTypes and Strructures are residing. In order to keep Java package exactly the same (if this is what you want) you need to get rid of the top Namespace element inside the Model.xml file representing DataDictionary definition. Build 1.2.0003 ============== - Improved transaction status related exception messages coming out of the TransactionProxy layer. - Implemented generation of java code for Structures located in the DataDictionaries. Build 1.2.0001 ============== - Improved features available in the dependencies view. Two new commands : 'Remove elements of type' and 'Hide elements of type'. - Reviewed and corrected Web Services documentation. - Change to the Enteprise model. StructureFields, OperationInputFields, OperationOutputFields and OperationOutputMessages are now ordered collections (used to be unordered). Build 1.2.0000 ============== - Added the facility to study dependencies between model elements in the Design studio. This facility is based on displaying an interactive diagram of the dependencies between components. - Fixed the problem where Design Studio was only displaying single value for the array of properties (reported internally) Build 1.1.0003 ============== - Fixed the problem with using array of primitive data types in OCL constraints (to do with oclIsUndefined() support) - Added createFromArbitraryString() and getAsArbitraryString() to the TimestampField and TimeField templates. This allows to parse data type from the string populated using other time / date format. Build 1.1.0002 ============== - Fixed bugs SF-156440, SF-1156436, SF-1156327, SF-1156308, SF-1153169, SF-1149503 - Design Studio can now maintain multiple domain and other diagrams in the same package - Fixed small spelling mistake in the model. This means that the old model files are not compatible with this release. To fix it - search and replace 'OclExpresion' with 'OclExpression' in all xml files which comprise the model. Build 1.1.0000 ============== - Introduced support for constraints expressed in OCL (Object Constraint Language). It is now possible to specify in the Model invariant constraints for Entities, Structures and Operation Inputs. MetaBoss generators will then create a data validation proxy for the business services layer (to actually use this code the datavalidation proxy must be plugged in via JNDI) and will generate entity validation code into the Business Object implementation code. The bottom line is that the constraints can now be modelled and guarding code generated from the Model. See Validation constraints overview in the Design Studio Guide for more details. - In the MetaBoss Enterprise Model the Structure element has been moved from the MetaBossModel.EnterpriseModel to the MetaBossModel.DataDictionaryModel. This means that the old model files are not compatible with this release. To fix it - search and replace 'MetaBossModel.EnterpriseModel.Structure' with 'MetaBossModel.DataDictionaryModel.Structure' in all xml files which comprise the model. - Fixed bug SF-1118394 Build 1.0.0011 ============== - Improved performance of the MDR- based MetaBoss model repository by modifying a few inefficient pieces of code which were discovered during profiling. - Fixed the long standing "generated code too large" bug in wscompile (part of JAXRPC in JWSDP). This is done by overwriting the file generated by wscompile with the one generated by MetaBoss - Created generic profiling proxy, which is able to monitor performance of the operations on component interfaces. This proxy uses the third party product JamonApi. The code for the JamonApi has been modified slightly. Until these changes are accepted by the JamonApi paroject, we will build our own version of the JamonApi jar. - Moved to JWSDP 1.5 - Implemented feature requests SF-1096138, SF-995750 Build 1.0.0010 ============== - Fixed problems with using validation pattern for the data types which use StringField template. - Introduced regular expression based categories in the StringField enterprise type template. - Continued to write the Beginners Guide. It is now 100% complete, except optional chapter on modelling using generic UML tool. Build 1.0.0009 ============== - Integrated ScenarioRunner application from the MetaBoss Testing Framework with Ant. - Continued to write the Beginners Guide. It is now about 90% complete. Build 1.0.0008 ============== - Continued to write the Beginners Guide. It is now about 85% complete. - Fixed a small bug in model constraints validation to do with checking for empty mandatory association error message - Fixed a bug where it was impossible to create empty or concealed instance of the Entity Instance Identifier data type - Added facility to Include external files in the ParametersDocument element in the Test case specification - Added ability in the Test Scenario Runner to specify list (rather than one only) of directories with test cases. Test cases are sorted by file name inside the directory, but directories are executed in the order they were specified. Build 1.0.0007 ============== - Continued to write the Beginners Guide. It is now about 40% complete. - Created Domain Support Services Modelling Assistant and moved it out of the build file. - Added Web Services Server generation capability to the MetaBossBuilder Ant task Build 1.0.0006 ============== - Started to write the Beginners Guide. It is still in its infancy (about 15% complete) - Moved to JWSDP 1.4. In this release Sun has renamed some Xerces and Xalan packages (they basically have replaced the name 'Apache' with 'Sun') and compatibility with pieces which refer to these packages explicitly has been broken. Such is the case with castor. In order to resolve it MetaBoss now includes proper and official Xerces and Xalan releases so mechanisms like Test Scenario Runner do not depend on whole JWSDP any more - they just depend on standalone Xerces and Xalan. - Moved to JDK 1.4.2_05. - Added the Microsoft .NET/C# example of the Web Services client. Build 1.0.0005 ============== - Cut over to the next major release number. The Release 1.0 roadmap is complete ! Build 0.6.0457 ============== - Allowed automatic repetition of the test cases by introducing extra numberOfRuns attribute in the TestCaseScenario. - Fixed bugs SF-1015032, SF-1012668, SF-1016445, SF-1016461 - Implemented the BO reload functionality - used when there is a need to reload the changes done by someone else. - Improved the variety of macros available in the jndi mapping for the MetaBossComponentNamingProvider.jar. Keywords ${component},${componentName},${componentPackage},${client},${clientName},${clientPackage} are now supported. Build 0.6.0456 - First production stable build. Build 0.6.0454 ============== - Added TextDataField type template which supports the large text data fields (eg. CLOBs on Oracle). - Finished full round trip import / export functions converting model between MetaBoss XMI and UML XMI formats. - Documented UML Profile for MetaBoss. - Moved HatMaker example build to use MetaBoss expert model builder Apache Ant task. Build 0.6.0451 ============== - Enchanced JNDI component mapping capability to include wildcards which are very similar to ant patterns. Only '*' and '**' are supported. Also increased granularity of caller definitions. It is now possible to use class and method name when specifying JNDI component mapping for a particular caller. Build 0.6.0448 ============== - Retired com.metaboss.util.StackTrace class. We now use java.lang.StackTraceElement which is available since JDK 1.4 - Moved all template source attachments out of the MetaBoss model to the generator plugin. This is necessary to make a model truly independent and able to be imported from UML. - Finished the pluggable generators framework. It is now possible to plugin the generators (in jars or directories) consisting only from templates and xml files (no Java coding involved in the creation of the generator plugin itself). Supported template languages are java, velocity and jamon Build 0.6.0447 ============== - Added isQuery attribute to the operation. Practical use of it is that it forms the base for the decision whether to retry the operation invocation after network or hardware failure. Build 0.6.0445 ============== - Based on the previous change made to the schema, Test Scenarion Runner (part of the Testing Framework) will now set 'OperationFailure' test case status every time when IsSuccessful flag equals 'false' - Revised the schema generated and used by the domelements adapter, xmlstrings adapter and testing framework as follows: -- Schema now can "survive" new fields being added to structures as it is now subelement position independent. This means that the existing XML documents (eg. Test Cases), do not need to be edited after addition of the new fields to the model (and therefore schema) for as long as the document does not wish to include the new field. -- Moved to use local element declarations instead of global ones. This has shortened the names of the elements in the schema - Field elements are no longer global and therefore no longer need to be prefixed with structure type name. -- Moved all output messages into the subelement in the Result structure element (they were at the top level before). This is done for easy identification of messages and iteration over messages. -- Introduced boolean flag to every the Result structure element This is done for easy identification of operation outcome. - Further progress in UML Profile for MetaBoss and conversion utilities between MetaBoss Model and UML Model. Convert MetaBoss Model to UML Model is almost done (everything except entity state machine definitions). Build 0.6.0443 ============== - Updated documentation especially in the Tesing Framework and Quality Assurance area. - Introduced new Special XML Elements feature in the Testing Framework. - Improved and optimised ordering and limiting of the business objects collections. - Fixed XML escaping problem in the dom elements adapter generator. Build 0.6.0442 ============== - Fixed the bug reported in 977125 support request on sourceforge. This was about NullPointerException in ScenarioRunner thrown when Input Document is empty. - Fixed the problem reported in 977137 feature request on sourceforge This was about autogenerated comments being in front of the ones provided by human. Build 0.6.0441 ============== - Updated documentation especially in the Tesing Framework area. - Added UML XMI file to the example documentation. - Provided example of the more complex state machine in the Order entity of the HatMaker example. Build 0.6.0439 ============== - Added support for XPath searches in the repository. Implemented with use of Jaxen (1.0 FCS) - Added first cut of the facility to export MetaBoss models in XMI UML notation. - Changed code generators to use normalised entity attribute names and not the names from the model This improves code consistency and allows human names in the model. Build 0.6.0436 ============== - Added support for MySQL (4.1.1 alpha) database. Any earlier release of MySQL does not cut it because there is no support for subqueries. - Improved speed of generation from inside ant by moving task executions inprocess. - Added ability to relax element matching in the regression test by specifying "unorderedMatch" specimen element type. Build 0.6.0435 ============== - Added ability to save pending changes to the domain at any point in time. Build 0.6.0434 ============== - Added Linux/Unix/MAC OS studio startup scripts. - Integrated Design Studio with latest release of jgraph (3.4.1) - Tighter integration of System Log window in the Design Studio with the logging framework. Messages submitted to commons-logging and Log4j now appear in this window - Improved documentation especially in the Tesing Framework area. - Improved display and management of model validation errors in the Design Studio. - Initial version of the "Attempt to rectify errors in the Model" command in the Design Studio and the rectifyModel() operation in the Model Repository. - Added one more test cases to the MarketingQueries test in the HatMaker test scenario - just to test some more conditions Build 0.6.0429 ============== - Implemented regression testing facility in the Tesing Framework. This is basically validation of the test scenario outcome against specimen log. - Some minor bug fixes to O/R mapping code generation related to singular cardinalities Build 0.6.0414 ============== - Implemented deferred inserts and deletes of the many-to-many association. They are now executed after all creates updates and deletes. - Newly created entity now allows one state transition from initial state within one transaction. Build 0.6.0413 ============== - Moved to JWSDP Version 1.3 Build 0.6.0350 ============== - Introduced first version of Documentation Generator - Ongoing improvement of the technical documentation distributed with release Build 0.6.0223 ============== - Introduced licensing mechanism, which includes configurrable authorship properties Build 0.6.0100 ============== - Big move to NetBeans MDR. The model BO library has been replaced by MDR - Fixed some bugs and leftover tasks to do with entity inheritance Build 0.5.0351 ============== - Fixed some bugs in generation of code for domain admin service implementatuion and transaction management proxy - Added some more utilities to MetaBossCore.jar Build 0.5.0318 ============== - Improved SQL Selector macro language. ${EntAttribute.xxxxxx} now means column name qualified with curent alias. ${Attribute.xxxxxx} means just column name Build 0.5.0123 ============== - Moved to Java SE SDK 1.4.2. Build 0.5.0100 ============== - Added facility to model inheritance. Entity can extend another entity. Entity can be declared as final or abstract. Code generation facility is under development, but not ready yet. - Allowed creation, editing and deletion of entities, associations and association roles from the model. Build 0.4.0265 ============== - Added first release of the testing framework. MetaBossSystemTester is able to run any combination of test cases defined in XML. - Allowed direct access to BOMessage and BOOperation from the BOMetaBossDomain object. Build 0.4.0129 ============== - Added JNDI lookup into the com.metaboss.javatemplate It is now possible for the template to lookup components via template context passed to it. Need to modify the context we pass to velocity template for this to take effect on velocity. - Jamon is integrated and is now available as one of the template types. Build 0.4.0007 ============== - Created component implementation plugin functionality. Allows to dynamically discover implementations of components on the specially defined components implementation path. - Added some more generators for the XML oriented adapters - generic.xmlstrings generic.domelements Build 0.3.1199 ============== - Modified Oracle generator to produce Oracle 9 TIMESTAMP column definition instead of DATE as it was before Build 0.3.1166 ============== - Fixed the population of the JDBC Statement (was in the reverse order to the statement)