=================================================================== MMBase 1.7.4 - Release Notes =================================================================== ============ INTRODUCTION: ============ This document describes the changes that have been made in the final release of MMBase 1.7.4, relative to the previous release of MMBase (1.6). Bug reports should be entered at the bug reporting system for MMBase at: ============ NEW FEATURES: ============ -------------------- General New Features: -------------------- [1.7.4] - Options on servlets and image-tag to make it possible to server images from seperate server (ported from 1.8). Documented in 1.8's documentation only. [1.7.3] - Cache tool in the adminpages has been made a bit better [1.7.2] - A unicast implementation for broadcasting changes in the cloud has been added. One can choose between the unicast en the multicast implementation. You need to change your config for this. See also update.txt for more information. [1.7.0] - Storing blobs (e.g. images) on disk has changed. Blobs are now stored as follows: The number of the object containing the blob is broken up in parts. The 3 least significant digits are ignored. The remaining digits are divided by powers of hundred (pairs of digits of 2). These are then broken up in nested directories. For instance, the field 'handle' of node with number 5447637 is stored as: data/databasename/basename_buildername/54/47/5447637.handle while the same field of node number 1205 is stopped as: data/databasename/basename_buildername/01/1205.handle where 'databasename', 'basename' and 'buildername' are depending on configuration and type of the node. This improves performance on systems when you get a large number of binary fields. Note: if you are upgrading from 1.7.0 RC1 you need to convert, because this 'breaking up' into directories did not yet exist then. Note: if you are upgrading from 1.6 or early 1.7 builds and used to store blobs on disk using the 'old' storage implementation or the 'support' implementation (from < 1.6), then too you need to convert if you want to use the 'new' storage now (which you want). Note that the 'databasename' and 'basename' parts are new in the path (these make it easier to toggle between configurations). Make sure the old 'blobdatadir' dir is now WEB-INF/data (use e.g. a symlink) You can convert the blobs via the admin pages /mmbase/admin admin->BLOBS (which can also be used to migrate from blobs-in-database to blobs-on-disk). - Query-object, which allows for several new taglib and MMCI features. - New storage layer, which allows for real transactions! - Some 'applications' (like editwizards) have been split up to separate jars. This will allow for easier partial upgrades of installations. - Added functionality to the jsp editors: better paging mechanism. - Added functionality to the jsp admin pages: add/change field descriptions -------------------------- MMCI (bridge) New Features: ------------------------- [1.7.0] - All interfaces of the new org.mmbase.storage.search package are part of the 'bridge' now. There is also a new 'Query' object in org.mmbase.bridge, which allows for query creation and modification in a generic way. - The new Query frame work allows for easy execution of 'aggregating queries' (e.g. counts) through the bridge. - The bridge implementation now also lets security modify its queries to exclude read-protected nodes. Depending on the security implementation and configuration this should speed up things. - Several small additions (like Cloud.getRelationManager(NodeManager, NodeManager, String)); ------------------- Taglib New Features: ------------------- [1.7.2] - #6582 Wish: lacking support for 'relativetime' guitype - #6624 Wish: Needing support for CP1252 [1.7.1] - #6441 container attribute missing on function-tags. - #6510 mm:relatednodes missing path attribute (also fixed for mm:listnodes) [1.7.0] - Content-Tag, which provides default escaping behaviour, postprocessing functionality, and content-type information. - Container tags. - Function Container tag. Allows for more complicated arguments to functions on e.g. Nodes. - List Container Tags. Allow for easier generic queries (using new Query frame work). The Query object can be changed with a 'constraint' tag, an 'ageconstraint' tag, a maxnumber tag and an 'offset' tag. The query can be executed by the already existing nodelist tags. Also the size tag, can optionally be used outside a list tag now (but inside a list container tag), and will then be calculated by the database (and not progamaticly). - 'previousbatches' and 'nextbatches' tags. A way to easily make a paging mechanism for big search results. - unrelatednodes tag. A tag to list all nodes (of a certain type) which are _not_ related to a node. - compare tag: valueSet attribute - List-tags now provide a kind of 'temporary' context for taglib variables. In practice this means that inner context tags (or 'remove' tags) will not be needed any more. ------------------------- Editwizards New Features: ------------------------- [1.7.2] - Optionlists can be multilingual - Extending the (search)list of the editwizards to show more than 10 pages and to show more paging information (i.e. number of items on page and number of pages found). [1.7.1] - You can now use radiobuttons if you use the ftype 'radio' (like an enum), and checkboxes (for values 1/0) if you use the ftype "checkbox". [1.7.0] - Multilevel queries can be used to fill optionlists ========================== BUG FIXES AND IMPROVEMENTS: ========================== ------------------- Generic Improvement: ------------------- [1.7.0] - Several tags in builder xmls are no longer mandatory, and sensible defaults will be used instead (for example in the editor section) - jspsmartupload has been replaced with jakarta's commons FileUpload component. ------------------ Generic Bug Fixes: ------------------ [1.7.3] - #6641 Builders: It is impossible to delete builders - #6640 Jumpers which have the same name as a directory aren't working with Tomcat 5.0.x [1.7.2] - #6254 searchquery Fieldaliases converted to lowercase in result of aggregating query. - #6612 searchquery NodeManager.getList(String, String, String) broken if security implementation does not implement Authorization.check(UserContext, Query, Operation) - #6570 Multicast does not refresh reldef and oalias caches - #6583 code does not check key == null - #6578 does not implement nodeRemoteChanged - #6585 Dove: Lack of base64 support in dove. Adding encoding attribute to dove dtd - #6583 Builders: users.java: remote change cookies -> users where user not in usercache: nullpointer exception - #6592 Builders: Deleting an image gives ClassCastException on ImageCaches.nodeLocalChanged - #6579 Builders: Problems with non-ASCII characters with ImageMagick and text, especially on Windows - #6591 Builders: NullPointerException at module.builders.Jumpers.getGUIIndicator - #6623 nodeRemoteChanged can be called recursively - #6625 Emailapplication: in application Email guinames has been mixed - EmailSendProbe: mailtime now may be null. Rewrote deprecated search() method to searchQuery and added constraint to match null-values. - Imagemagic: Make ImageMagick read text from a temporary file to make non-ASCII characters work on Windows. [1.7.1] - #6566 CKeyNumberCache not invalidated on 'remote' servers. - #6548 'blob converting' tool is not synchronized, can run more than once. - #6525 org.mmbase.module.SendMail: tries to send mail before it is properly initialized - #6524 mm:relatednodes constraint requires explicit qualification of field number - #6516 Some XSLT's of config/xslt give error with certain XSLT processors. - #6504 Length calculation in DateSupport is not working anymore - #6493 getValue on byte-field does not return null if field is unfilled. - #6485 If you define otype as a not-null NODE field (in object.xml) then you cannot import NODE fields any more. - #6482 Attachments: mimetype not re-determined if handle is replaced. - #6477 'format' function on Attachments not implemented. - #6453 GUI of url field of jumpers is no good. - #6452 If httppost.xml missing, dirty error in log, and you can't add it witout restart then. - #6437 JMSendmail does not properly encode mail messages - #6199 Unicode in images (convertimagemagic) is broken again. - #4413 Show and annotate functions of Config-module ignore encoding of the file. - #6521 jsp-editors: input fields are incorrect - #6472 jsp-editors: When deleting objects of first page, search result is not rememberd. - #6457 jsp-editors: 'Stacking' of history doesn't work well if started with search on number. - #6451 Problems on Windows with ImageMagick and text - #6543 Mmci: getNodeValue does not return proper Node instance - #6450 Mmci: Node#countRelations can be a bit slow. - #6503 searchquery Search query may not set field values in mmobjectnode - #6484 searchquery maxNumber not supported - #6476 searchquery dissalowed fields do not take in account that sql keyword might be case insentitive - #6454 searchquery 'count' queries by bridge are not equal to count queries by MMObjectBuilder - #6449 searchquery nodes=-1 not working. - #6448 searchquery inverse constraint not working in mysql. - #6443 searchquery Use of number IN ([constant]) causes unresolvable queries in Mysql - #6439 searchquery Inversing one constraint may inverse entire query - #6489 Utils LinkFinder.java -- String index out of range: -1 - #6464 Utils 'xmlfield' tranformer for 'emphasize' (_) is a bit to stupid. - #6490 Utils java.util.DateSupport: public static String getTimeSec(int val) returns 12h clock instead of 24h - #6421 Transactions Impossible to delete related nodes inside transaction - Database Layer: Storagemanagerfactory does not set the correct default transactionlevel - Database Layer: Killed connection can be put back in multi-pool. [1.7.0] - jaxp compliance. MMBase does not longer depend on an old version of xerces/xalan/xml-apis when running under java 1.4 you can remove those files - The HandleServlet now removes additional information left in jpeg files by PhotoShop 7. This extra information crashes the image Thread of Internet Exploder. While this was not a bug, this fix is very convenient. - Caching of Query results is done better. It is possible to cache everything. In 1.6 some queries accidentally where not cached. This fix is based on the new Query framework. - When exporting builder xmls, the state property of a field is now in lowercase (as defined by the dtd). - More robust in case Database not up yet if MMBase starts, or if database restart when MMBase remains up. ------------------ Security Bug Fixes: ------------------ [1.7.2] - #6572 CloudContextSecurity: All security caches are invalidated on logon of user. [1.7.1] - #6559 Security CCS:SecurityUser cache not started [1.7.0] - It is for a security implementation possible to define new ranks now. - Queries are checked by all 'official' security implementations. If there are read-restrictions on defined on your installation, you need to create an index on the owner fields. --------------- Core Bug Fixes: --------------- [1.7.3] - #6637 Query-caches are not invalidated correctly if queried on relation-object directly. [1.7.2] - #6633 RelatedNodesCache performes suboptimal - #6616 MMBase shoudl not give response code 500 but 503 on start-up - #6608 New builders are inited twice. - #6617 MMObjectBuilder.java: DEFAULT_ALINEA contains [1.7.1] - #6560 ClusterBuilder does not allow queries over nodemanagers with short name - #6531 Multicast Time To Live is not configurable, you should now be able to set the ttl using the property MULTICASTTTL in mmbaseroot.xml 1 default is 1 - #6526 You cannot define extra fields in object.xml. - #6511 StringIndexOutOfBounds exception in BasicQuery.java - #6506 When a field of a cluster-node is null, getStringValue might give [FIELD VALUE NULL] in stead of empty string. - #6483 Insrel does not make accurate check on 'dir' field - #6460 parseFieldPart does not escape all astriks - #6440 Different behavior on mm:list between 1.6 and 1.7 - #6432 MMObjectNode silenty fails on a wronly inserted relation node, page however gets corrupted - #6428 builder dtd's contains 'xml:lang' on db/name, which does not make sense. - #6427 NullPointer in BasicNode.java ------------------------- Database Layer Bug Fixes: ------------------------- [1.7.4] - #6653 If field null in resultset, NPE can occur, which fails the complete list. [1.7.2] - #6599 UNION queries in informix contains invailid relational constraints - #6609 Verify does not show the field it is actually looking for [1.7.1] - #6554 mmbase can't handle a mysql restart - #6498 Resultsets not closed/connectionpool depleted in PostgreSQL - #6486 Virtual NODE type field, error during creation of table. - #6481 Leaving numeric fields 'unset' before commiting, leaves them not present in the field values list of mmobjectnode, which is not recognized by database layer - #6469 InformixSQLHandler doesn't pass uni-directional relation-constraints - #6462 no automatic translation (adding 'm_') to fields in a listnodes 'constraint' attribute - #6444 Storagemanagerfactory does not set the correct default transactionlevel - #6436 Killed connection can be put back in multi-pool. - #5951 MMJdbc2NodeInterface lacks javadoc --------------------- Editwizard Bug Fixes: --------------------- [1.7.2] - #6634 Editwizard jsps depend on Encoding setting in mmbaeroot.xml - #6574 LIKE constraint in search-command does not work - #6573 New XSLs ignore 'prompt' s of search command - #6580 Can't use quotes in editwizard search - #6577 images in editwizard must always be uploaded (also attachments?) added fix for attachments - #6587 Uploading files. Associated fields (mimetype, size, filename) are not filled by upload of 'handle' fields by mm:fieldinfo [1.7.1] - #6420 List in list, subitems are not loaded on add. Also remove, readd doesn't work. - #6567 Could not trail path element with digit. - #6564 unable to make file upload mandatory - #6563 popup wizards don't work in deprecated wizard look - #6508 editwizard pass incorrect origin parameter to subwizard - #6501 If titles are 'null' the search of list.jsp does not work. - #6500 fieldtypes enum,double,long,float are not validated - #6487 Date-formats of lists don't consider set language. - #6473 It goes wrong if the referrer arguments contains / in its argument. - #6465 Editwizard does not handle xml characters very well (< and >) (html area AND text input) - #6434 Public ID not registered. - #6430 Edit-rights are not always checked - #6418 timezone problems - #6414 Javascript error on save - Better calculation of positioning of buttons in wizard in IE/Mac - ftype="enumdata" did not show the text label of the option - Font-size in some browsers was way to big in the EditWizard HTML area. Fixed it on 12px ----------------- Taglib Bug Fixes: ----------------- [1.7.2] - #6636 Multipart parse result not propagated to mm:included pages. - #6635 java.lang.NullPointerException for escape="text/xml" - #6569 Using wrong character encoding for post data - #6586 Uploading files. Associated fields (mimetype, size, filename) are not filled by upload of 'handle' fields by mm:fieldinfo - #6603 mm:constraint field="number" operator="IN" value="" does not work - #6589 mm:import crashes on escape="text/plain" and escape="none" - #6590 escape="lowercase" does not work on jspvar [1.7.1] - #6241 TreeTag: No way to order or constrain steps. - #6230 Taglib documentation wider than window. - #5986 Tree-functionality is too community-specific. - #6488 mm:import from session raises exception if no session if available - #6480 mm:fieldinfo type="reusesearchinput" not working for 'date' fields. - #6478 mm:listfunction not useable. - #6474 mm:listrelationscontainer mm:relatednode might give wrong node. - #6470 Constraints specified in listnodes not parsed to SearchQuery. - #6467 mm:fieldinfo options="date" type="usesearchinput" does not work as expected - #6461 mm:cloud 's delegate method not documented, and writing to session which is notg always secure. - #6458 mm:redirect not quite ok. - #6456 mm:formatter not working in windows. - #6455 Empty string in 'referids' gives an error - #6447 In contradiction to node-lists, referid="a" id="a" does not work for mm:fieldlist - #6442 ListTag is not corresponding with BasicStep - #6441 container attribute missing on function-tags. - #6438 to the page. The generic JSP-editors in /mmbase/edit/basic could not be fixed to work with and without EL. When you want to use these editors in a EL environment isELIgnored must manually be added to /mmbase/edit/basic/page_base_functionality.jsp (Unfortunately it cannot always be present, because this setting can cause errors in a JSP1 environment). The EL and MMBase Taglib expressions languages are actually very similar to each other. We will try to make MMBase Taglib compatible (perhaps optionally so) with EL in a next release. - The old database support classes are still in this release, but are not fully tested. These are deprecated please DO NOT use them anymore, but switch to the new database storage classes. - Orion version < 2.x doesn't support the final servlet api 2.3, because of this the jumpersFilter will not work. You will need to remove the following lines from : Jumpers Filter Jumpers Filter Filter used for jumpers org.mmbase.servlet.JumpersFilter Jumpers Filter /* And replace them with: servjumpers servjumpers org.mmbase.servlet.servjumpers (I'm not sure where the last line has to be: web.xml or orion-web.xml). - Length of email field inside Users and People builder isn't rfc-compliant, but with 255 it stays beyond a limit some databases use before switching to a bigger string-type (eg clob). - Not all HTML is html4 or xhtml valid - Sometimes it is needed to copy xml-apis.jar to <$CATALINA_HOME/common/lib/> or $ORION_HOME, eg if you're doing xslt-transformation or if you're using the editwizards. - Imagemagick does work with Windows 98/ME, but MMBase is not able to use it. You have to use Jai (Java Advanced Imaging API). You can do this by changing the properties in /WEB-INF/config/builders/applications/images.xml (after installation of 'Resource') or /WEB-INF/config/applications/Resources/builders/images.xml (before installation of 'Resource') into: org.mmbase.module.builders.ConvertJAI 20 Please keep in mind that the image builder is less powerful when using JAI instead of Imagemagick. - Jumpers jump to /index.html by default, which can e.g. shield the image servlet (if 'dotlessly' mapped). Remove the setting from jumpers.xml if you prefer nice 404's (this is like this on default) - Hsqldb uses the current dir for writing the database-files. This can be the bin dir from where you're starting the servlet-engine. You can change this to a dir you want, by changing the database-property in jdbc.xml. - Resin provides its own XSL-transformation implementation, on this area are some known problems. - Resin cannot swallow some of the larger jsp/taglib pages. ============ Requirements: ============ MMBase needs an servlet engine which supports the servlet api 2.3 and jsp api 1.2. Furthermore it needs a database and a jdbc-driver. The 'bin' distro does include a hsqldb database and driver. ========= Tested on: ========= The applications listed here are known to be tested with MMBase, but the list is probably a lot bigger :-) ------------- Java versions ------------- - J2SE 1.4.1_02 - J2SE 1.4.2 - J2SE Blackdown-1.4.2-rc1 - J2SE 1.5.0-beta (could not get editwizards working because of xalan/xerces troubles) ------------- Java compilers ------------- - sun jdk 1.4.2 (javac) - sun jdk 1.5.0-beta (javac, jikes does not work then?) - jikes version 1.18 using 1.15 jsp-editwizards don't work (when using jikes for jsp-compilation) using 1.16 mmbase does compile, but give VerifyExceptions on running. See: http://www-124.ibm.com/developerworks/bugs/?func=detailbug&bug_id=206&group_id=10 ------------------ Servlet engines / Application servers ------------------ These are the applications servers on which MMBase was tested. - Tomcat 4.1.29 - Tomcat 5.0.19 - Orion 1.5.2, 1.5.4, 1.6.0, 2.0.3 - Jetty 4.0.0 - Resin 2.1.0, 2.1.8, 3.0.6 --------- Databases --------- - IBM Informix Dynamic Server 9.40.FC1 - Hsqldb 1.7.0RC2 - Mysql Ver 11.12 Distrib 3.23.32, Ver 11.16 Distrib 3.23.49, Ver 11.15 Distrib 3.23.41 for pc-linux-gnu (i686) - Postgresql