What steps will reproduce the problem?
Token token = new Token();
token.setNS("my.name.space");
token.setType("myType");
// print out the state of the object. All good so far.
System.out.println("NS: "+token.getNS()+", Type: "+token.getType() );
token.setJSONObject(json);
// print out the state of the object again.
System.out.println("NS: "+token.getNS()+", Type: "+token.getType() );
// OOps! the values are null!
What is the expected output? What do you see instead?
The expected output should be the internal state of the object. i.e. is should
still have the values namespace and type that were set previously. This breaks
the encapsulation rule of object oriented programming.
The same problem exists if the Token were to be instantiated using the an
argument constructor e.g. new Token("my.name.space","myType")
The constructor should have the task of initializing the object's data members
and of establishing the invariant of the class, failing if the invariant isn't
valid. A properly written constructor will leave the object in a valid state.
This breaks the object oriented contract of instantiation.
A consumer of an instance of Token should not have to worry about the ORDER in
which the message are sent. Currently, if using setJSONObject() with a
consumer application's data, the NS and type cannot be set until AFTER the call
to set the json.
What version of the product are you using? On what operating system?
version 0.10
web app deployed on Tomcat.
Please provide any additional information below.
Original issue reported on code.google.com by BrianUnd...@gmail.com on 10 Jun 2011 at 2:11
Original issue reported on code.google.com by
BrianUnd...@gmail.com
on 10 Jun 2011 at 2:11