InfoGrid 2.9.4 Released
This release contains some major improvements, in particular to the way the object graph is mapped to and from the web. Download or browse documentation here.
General:
- improved stability and error reporting
- lots of bug fixes
- more tests
- removed symbolic links from SVN; was an endless source of frustration
Core:
- renamed TraversalDictionary to TraversalTranslator: it can be much more dynamic than a dictionary
- implemented KeywordTraversalTranslator with fixed translation keywords
- implemented XpathTraversalTranslator with a pseudo-subset of Xpath
- introduced AllNeighborsTraversalSpecification instead of null TraversalSpecification; introduced StayRightHereTraversalSpecification
- MeshObject’s userVisibleName now always returns value of a Property called “Name” if the MeshObject has one; this seems a sensible default for many applications
- MeshObjectIdentifierFactory now has a pointer back to the MeshBase to which it belongs. Downside is one cannot use the same instance of MeshObjectIdentifierFactory for multiple MeshBases any more.
- got rid of MeshStringRepresentationContext, which partially overlapped with the purpose of MeshStringRepresentationParameters; only historical reasons can explain why we had both
- removed title/target/additionalParameters argument from HasStringRepresentation.toStringRepresentationLinkStart; now handled as parameters in StringRepresentationParameters
- simplified StringRepresentation of PropertyValues and related
- additional pre-defined StringRepresentations e.g. HttpPost
- distinguish between formatting Properties (which may be null) and PropertyValues; no more muddling with funny MeshObject context parameters; formatting is now performed via DataType
- use correct ClassLoader to load ResourceHelper default properties file during Module initialization
- correct initialization of ResourceHelper in module.adv
- expanded MeshObjectSet and MeshObjectSetFactory API
Identity-related:
- refactored LID implementation to use an “instructions” based approach to the pipeline, instead of an exceptions-based approach. This is more flexible for users of the module.
- fixed typo about credential vs. credtype.
- renamed LidPersona to LidAccount; more natural to talk about it using that name
- added LidAccountStatus and SiteIdentifier to LidAccount for multi-tenancy
- factored account and session-related concepts from org.infogrid.lid.model.lid into new SubjectArea org.infogrid.lid.model.account.
- new custom tag library that deals with identity
Model-related:
- fixed code generation bug for descriptions of values in EnumeratedDataTypes
- code generator to generate static constants for all EnumeratedValues.
- added AccountCollection to account LID model
- expanded TestModel to cover both optional and mandatory PropertyTypes; renamed PropertyTypes correspondingly
- improved Test model for more comprehensive testing
- better user-visible strings for EntityTypes Bookmark, Account and WebResource
Viewlet/GUI-related:
- Viewlet framework and tag library extensions for including Viewlets in Viewlets; updated Viewlets accordingly; now allows in-context editing, change of viewlet types etc. for included JeeViewlets; no contiguous TraversalPath from top required
- support REST-ful URLs on hierarchical Viewlets e.g. GraphTreeViewlet with multiple Viewlet alternatives in contained Viewlet
- removed iframe in (Net)MeshWorld; hierarchical Viewlets is better approach
- various HTML fixes and improvements related to the rendering and editing of PropertyValues
- removed rootPath on all custom tags; not needed or used
- sanitized formatting of Identifiers; it’s still not totally sane but a lot more so
- eliminated PropertyValueTag.{css,js} and replaced with PropertyTag.{css,js}
- removed -moz-opacity CSS value per recent Firefox updates
- fix HTML doctype to make IE more happy
- BlobViewlet to get its PropertyType from URL argument not POST argument
- footer element for MeshObjectSetIterate tag
- do not print iterateHeader and iterateFooter when set has no content in MeshObjectSetIterateTags
- default POST behavior is now redirect-to-GET on same URL, so browser refresh is not as awful
- added missing setter methods on StructuredResponse
- created SetSizeTag to print the size of a MeshObjectSet in JSP
- slight changes how MeshObjects are shown on screen by default (dropped annotation in which non-standard MeshBase they are)
- overflow: auto; to support long CSS floats
- added orderBy property to setIterate JSP tags
- added ability to sort in the inverse direction
- created propertymeter JSP tag for bar graphs or temperature graphs based on Properties
- default sorting in JSP MeshObjectSet tags is by user-visible String
- don’t set domains on cookies when run from localhost; makes life of developers hard
- generate Javascript for PropertyValues
- eliminating unnecessary projects by moving their code into other projects:
- org.infogrid.jee.rest -> org.infogrid.jee.viewlet
- org.infogrid.jee.rest.net -> org.infogrid.jee.viewlet.net
- renaming projects:
- org.infogrid.jee.rest.net.local -> org.infogrid.jee.viewlet.net.local
- org.infogrid.jee.rest.net.local.store -> org.infogrid.jee.viewlet.net.local.store
- org.infogrid.jee.rest.store -> org.infogrid.jee.viewlet.store
- renamed meshObjectLoopVar to loopVar in custom tags
- added arrivedAt property to Viewlet
- enctype attribute on safeForm is all lowercase
- created SaneUrl, new supertype of SaneRequest that allows to reuse API for URLs and servlet requests; slight API naming changes httpHost vs. server; allows us to get rid of OverridingSaneRequest nonsense
- DEFAULT_LINK_START/END_ENTRY now consistently on StringRepresentation
- removed RestfulRequest, replaced with a MeshObjectsToViewFactory that directly translates SaneRequest into MeshObjectsToView
- an instance of MeshObjectsToViewFactory must now reside in Context
- removed NetViewletDispatcherServlet; not needed any more
- removed most redundant methods on Viewlet; better have one clear way how to do it only
- upgraded ViewletFactoryChoice: now HasStringRepresentation and contains MeshObjectsToView; this means unfortunately that ViewletFactory setup in applications needs to pass MeshObjectsToView to their choices()
- ViewedMeshObjects now keeps reference to MeshObjectsToView that it took its data from
- removed unnecessary request attributes like JeeViewlet.VIEWLET_STATE_TRANSITION_NAME: can be obtained via Viewlet
- made MeshObjectsToView an interface and subtyped to JeeMeshObjectsToView and NetMeshObjectsToView for cleaner model
- renamed getMeshObjects to getViewedMeshObjects for consistency
- ViewletState has moved from JeeViewlet to JeeViewedMeshObjects; added isDefaultState

Leave a comment: