Starting from:

$29.99

Distributed Objects using Reflective Serialization/Deserialization


Assignment 3
Distributed Objects using Reflective Serialization/Deserialization
The goal of this assignment is to create two programs (on two separate computers) that communicate with
each other over a network connection (see diagram below). The Sender program will create one or more
arbitrary objects, serialize these objects into a JDOM document, and then send this document as a stream of
bytes to the Receiver program using a socket connection. The Receiver program will convert the incoming
byte stream into a JDOM document, deserialize the document into objects, and display the objects to
screen.
byte stream
(Network)
JDOM
document objects
Sender
Object
Creator
Serializer Socket
objects
JDOM
document
Socket Deserializer
Visualizer
(Object
Inspector)
Receiver
The Object Creator
This part of your system will create arbitrary objects under control of the user. Allow the user to create one
or more objects from a selection of objects using some sort of text-based menu system or GUI. You must
demonstrate that your system can handle the following kinds of objects:
• A simple object with only primitives for instance variables. The user of your program must also be
able to set the values for these fields.
• An object that contains references to other objects. Of course, these other objects must also be
created at the same time, and their primitive instance variables must be settable by the user. Your
program must also be able to deal with circular references (i.e. objects connected in a graph).
• An object that contains an array of primitives. Allow the user to set the values for the array
elements to arbitrary values.
• An object that contains an array of object references. The other objects must also be created at the
same time.
• An object that uses an instance of one of Java’s collection classes to refer to several other objects.
These objects, too, must be created at the same time.
The Serializer
Serialization will be implemented in a Java class called Serializer, and will be invoked using the method:
public org.jdom.Document serialize(Object obj)
This method will serialize the complete state of the object passed in as parameter, and produce an XML
document that can be stored to file, printed out, or sent over a network connection. Use the facilities
provided by JDOM to help you do this, in particular the Document and XMLOutputter classes.
The XML document must have one root element with the tag-name serialized. The object, and any other
objects that may need to be serialized, will be nested within the root element, listed one after the other. For
example:
<serialized
<object . . .
. . .
</ obj ect
<object . . .
. . .
</ obj ect
</serialized
The element object will have two attributes: class and id. The class’s value will be the name of the class of
the object, and the id’s value will be object’s unique identifier number, most likely created using
IdentityHashMap. For example:
<object class=’’Zoo’’ id=’’0’’
Nested within each object element will be 0 or more field elements. Each field element will have two
attributes: name and declaringclass. The name’s value will be the name of the field, and the
declaringclass’s value will be the name of the field’s declaring class. For example:
<fiel d na me=’’city’’ declaringclass=’’Zoo’’
. . .
</fiel d
If the type of the field is a primitive, store the primitive as content of a value element. For example:
<fiel d . . .
<val ue23. 7</ val ue
</fiel d
If the field is a reference to another object, store the id of that object as content of a reference element. For
example:
<fiel d . . .
<reference5</reference
</fiel d
Of course, the object being referred to must also be serialized, and will be another object element nested
inside the root element. Array objects will be similar to the object element described above, except that an
additional length attribute is used, and each element of the array will be stored as content to a value or
reference element, depending on the component type. For example:
<object class=’’[ C’’ id=’’8’’ lengt h=’’5’’
<val ueS</ val ue
<val uem</ val ue
<val uei </ val ue
<val uet </ val ue
<val ueh</ val ue
</ obj ect
The Network Connection
Java provides the java.net.Socket class to help implement a network connection between two programs.
Initially, while testing your system, you can run the two programs on the same computer. However, when
demonstrating your system to the TAs, you must show that it works over a network connecting two
separate computers.
The Deserializer
Deserialization will be implemented in a Java class called Deserializer, and will be invoked using the
method:
public Object deserialize(org.jdom.Document document)
This method will deserialize an XML document passed in as parameter, returning the reconstituted object
(and any objects it refers to). Use the facilities provided by JDOM to help with this, in particular the
Document and SAXBuilder classes.
The Visualizer
This part of your system displays the deserialized objects to screen. You can use a text-based or graphical
user interface for this. The Object Inspector you created in Assignment 2 may be helpful here. Be sure that
this part of the system shows that the deserialized objects are properly recreated.
Other Requirements
You must demonstrate a working program to your TA during lab time shortly after the due date. Make
certain you show that all requirements of the system have been fulfilled and implemented correctly. You
must also use version control, unit testing, and refactoring throughout this assignment.
Submit the following:
1. An electronic copy of your source code, unit tests, your version control logs, and a record of your
refactorings (in a Word, PDF or text file call refactorings). Use the Assignment 3 Dropbox Folder in
D2L to submit electronically.
Advanced Programming Techniques
Assignment 3 Grading
Student:__________________________________________
Functionality
Object Creation
Simple object 2 ______
Object with references to other objects 2 ______
Object with array of primitives 2 ______
Object with array of references 2 ______
Object using collection instance 2 ______
Serialization to JDOM document
Simple object 2 ______
Object with references to other objects 2 ______
Object with array of primitives 2 ______
Object with array of references 2 ______
Object using collection instance 2 ______
Sending/Receiving of byte steam 4 ______
Deserialization from JDOM document
Simple object 2 ______
Object with references to other objects 2 ______
Object with array of primitives 2 ______
Object with array of references 2 ______
Object using collection instance 2 ______
Object Visualization 10 ______
Other Requirements
Version control (show log files) 4 ______
Unit Tests 4 ______
Refactoring (described in refactorings file) 4 ______
Design Quality 4 ______
Total 60 ______ _____%

More products