Parser and formatter functional
=== Remaining Major Tasks as of 7.25.2011 Code Review 1 Results ===
# Typed Array case Code review took place on August 9th, 2011 at NexJ with Grace Batumbya, Brian Lim and Mixed Typed Array Case (DONE)# Integration Test and rewrite Unit Tests# Documentation# Optimization Strategies and Techniques (Deferred until after first code review)# Internal line-by-line code reviewAndrew Borzenko in attendance.
As ==== Major changes include: ====# Allowing modes for all message parts, not just the root.# Refactoring methods to check for != right condition instead of 7checking for the wrong condition to throw an exception.27(whitelist instead of blacklist)# Formatting all primitives before writing or storing them, particularly timestamps and other format sensitive strings.2011 Additional Identified Tasks# Cyclic ReferencesCreating a RootJSONMessagePartMapping extending JSONMessagePartMapping ==== Code Review Notes ===={| border="2"! Issue! Description! Status! Priority|- | Exception TODO| Complete exceptions marked by TODO| Incomplete! |- | Use Hashholder instead of HashSet| Use HashHolder in the XMLJSONMessagePartLoader instead of HashSet and whenever appropriate replace HashSet with HashHolder| Incomplete! |- | Change 0x000 for byte| For root modes, change 0xXXX to a cast to byte. Also do not use leading zeroes.| Incomplete! |- | Document methods fully in javadoc style| Document every method fully in javadoc style. Also document parameters, and use full English sentences. Make sure special settings like root mode or mode are well documented enough to use| Incomplete! |- | Remove/Use InvocationContextAware| Do not implement the invocation context aware interface if not used by the class. Or, use the interface for formatting of primitives.| Incomplete! |- | Name methods XXXPart, not XXXNode| Rename methods to be XXXPart, for example as writeCompositeMessagePart, instead of writeCompositeMessageNode.| Incomplete! |- | Format primitive values before outputting to writers.| Use the StringFormatter to format primitive values before outputting to the writer. For example, timestamps must be formatted before outputting to the writer.| Incomplete! |- | Make sure exceptions output the correct message part.| Make sure exceptions output the correct message part, for example the inner part, rather than always the root part. More specific is better.| Incomplete! |- | Wrap fail| Wrap all instances of fail with IntegrationException.# OID| Incomplete! |- | Change design document to note that MessageTable only supports one message.| Design document should reflect all special settings of JSON parser and formatter. Specifically, any normally standard features which are not implemented by the JSON parser/formatter should be noted.| Incomplete! |- | Override JSONParse| Override parse method of JSONParser in the JSONMessageParser class. Do this to avoid changing JSONParser.| Incomplete! |- | Use primitive formatter when reading.| When reading information in from a stream in the formatter, use primitive formatter to determine the correct format of a primitive.| Incomplete! |- | Remove spaces after new Object[]{(remove space here)}| Remove spaces after the curly brackets for all exceptions.| Incomplete! |- | Add a newline after creating each object or after each decision construct.| Add newlines to conform to NexJ coding style.| Incomplete! |- | Remove StringParsre from JSONMessagePartMapping| Either remove StringParser from the mapping, or use it in formatting primitives. Do not leave it in if it is not used.| Incomplete! |- | Create class called RootJSONMapping| Create a class called RootJSONMapping for each CompositeMessagePart. This root JSON mapping will handle the "mode" for each CompositeMessagePart.| Incomplete! |- | Allow root modes for each CompositeMessagePart| Rename root mode to mode, so that each CompositeMessagePart can use every type of mode.| Incomplete! |- | Rename m_sFormat| Rename the variable m_sFormat if not used (or use it and keep the name).| Incomplete! |- | Space before break keyword.| Put a space before all break keywords.| Incomplete! |- | Pass enumerations into formatMessageRoot| Do not use member/class variables for storing information unless absolutely necessary. Prefer to pass parameters around so that objects do not grow large as the parser/formatter iterates.| Incomplete! |}
==Project Phases==