<?xml version="1.0" encoding="UTF-8"?> <java version="1.6.0" class="java.beans.XMLDecoder"> <object class="com.horstmann.violet.SequenceDiagramGraph"> <void method="addNode"> <object id="LifelineNode0" class="com.horstmann.violet.ImplicitParameterNode"> <void property="name"> <void property="text"> <string>fs:Filesystem</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>160.0</double> <double>73.0</double> </void> </object> </void> <void method="addNode"> <object id="ActivationBarNode0" class="com.horstmann.violet.CallNode"> <void method="addChild"> <object id="LifelineNode1" class="com.horstmann.violet.ImplicitParameterNode"> <void property="name"> <void property="text"> <string>file:FileSource</string> </void> </void> </object> </void> <void property="implicitParameter"> <object idref="LifelineNode0"/> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>192.0</double> <double>209.0</double> </void> </object> </void> <void method="addNode"> <object idref="LifelineNode1"/> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>274.0</double> <double>202.0</double> </void> </object> </void> <void method="addNode"> <object id="LifelineNode2" class="com.horstmann.violet.ImplicitParameterNode"> <void property="name"> <void property="text"> <string>User</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>34.86475730998367</double> <double>0.0</double> </void> </object> </void> <void method="addNode"> <object id="ActivationBarNode1" class="com.horstmann.violet.CallNode"> <void method="addChild"> <object idref="LifelineNode0"/> </void> <void method="addChild"> <object id="LifelineNode3" class="com.horstmann.violet.ImplicitParameterNode"> <void property="name"> <void property="text"> <string>b:TNBuilder</string> </void> </void> </object> </void> <void method="addChild"> <object idref="ActivationBarNode0"/> </void> <void method="addChild"> <object id="ActivationBarNode2" class="com.horstmann.violet.CallNode"> <void method="addChild"> <object id="ActivationBarNode3" class="com.horstmann.violet.CallNode"> <void method="addChild"> <object id="ActivationBarNode4" class="com.horstmann.violet.CallNode"> <void property="implicitParameter"> <object idref="LifelineNode1"/> </void> </object> </void> <void method="addChild"> <object id="LifelineNode4" class="com.horstmann.violet.ImplicitParameterNode"> <void property="name"> <void property="text"> <string>ftn:FileTN</string> </void> </void> </object> </void> <void method="addChild"> <object id="ActivationBarNode5" class="com.horstmann.violet.CallNode"> <void property="implicitParameter"> <object idref="LifelineNode4"/> </void> </object> </void> <void method="addChild"> <object id="LifelineNode5" class="com.horstmann.violet.ImplicitParameterNode"> <void property="name"> <void property="text"> <string>fs:FileStream</string> </void> </void> </object> </void> <void method="addChild"> <object id="ActivationBarNode6" class="com.horstmann.violet.CallNode"> <void property="implicitParameter"> <object idref="LifelineNode4"/> </void> </object> </void> <void property="implicitParameter"> <object idref="LifelineNode3"/> </void> </object> </void> <void property="implicitParameter"> <object id="LifelineNode6" class="com.horstmann.violet.ImplicitParameterNode"> <void property="name"> <void property="text"> <string>d:DirTreeNode</string> </void> </void> </object> </void> </object> </void> <void method="addChild"> <object id="ActivationBarNode7" class="com.horstmann.violet.CallNode"> <void property="implicitParameter"> <object idref="LifelineNode4"/> </void> </object> </void> <void property="implicitParameter"> <object idref="LifelineNode2"/> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>66.86475730998367</double> <double>80.0</double> </void> </object> </void> <void method="addNode"> <object idref="LifelineNode3"/> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>539.756828460011</double> <double>126.0</double> </void> </object> </void> <void method="addNode"> <object idref="LifelineNode6"/> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>651.0</double> <double>0.0</double> </void> </object> </void> <void method="addNode"> <object idref="ActivationBarNode2"/> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>683.0</double> <double>305.0</double> </void> </object> </void> <void method="addNode"> <object idref="ActivationBarNode3"/> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>571.756828460011</double> <double>328.0</double> </void> </object> </void> <void method="addNode"> <object idref="ActivationBarNode4"/> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>306.0</double> <double>351.0</double> </void> </object> </void> <void method="addNode"> <object idref="LifelineNode4"/> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>331.97135964975513</double> <double>374.0</double> </void> </object> </void> <void method="addNode"> <object idref="ActivationBarNode5"/> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>363.97135964975513</double> <double>457.0</double> </void> </object> </void> <void method="addNode"> <object idref="LifelineNode5"/> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>418.8259109283281</double> <double>480.0</double> </void> </object> </void> <void method="addNode"> <object idref="ActivationBarNode6"/> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>363.97135964975513</double> <double>563.0</double> </void> </object> </void> <void method="addNode"> <object class="com.horstmann.violet.NoteNode"> <void property="text"> <void property="text"> <string>1. User wants to add a file to a dir in the iso node</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>143.89406091532933</double> <double>16.868736840587744</double> </void> </object> </void> <void method="addNode"> <object id="NoteNode0" class="com.horstmann.violet.NoteNode"> <void property="text"> <void property="text"> <string>2. It creates the source filesystem and the custom builder</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>317.51829970572646</double> <double>74.92004824517142</double> </void> </object> </void> <void method="addNode"> <object id="PointNode0" class="com.horstmann.violet.PointNode"> <void id="Rectangle2D$Double0" property="bounds"> <void method="setRect"> <double>570.819415201306</double> <double>142.7048538003265</double> <double>0.0</double> <double>0.0</double> </void> </void> <void property="bounds"> <object idref="Rectangle2D$Double0"/> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>570.819415201306</double> <double>142.7048538003265</double> </void> </object> </void> <void method="addNode"> <object id="PointNode1" class="com.horstmann.violet.PointNode"> <void id="Rectangle2D$Double1" property="bounds"> <void method="setRect"> <double>218.81410916050066</double> <double>114.16388304026121</double> <double>0.0</double> <double>0.0</double> </void> </void> <void property="bounds"> <object idref="Rectangle2D$Double1"/> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>218.81410916050066</double> <double>114.16388304026121</double> </void> </object> </void> <void method="addNode"> <object id="NoteNode1" class="com.horstmann.violet.NoteNode"> <void property="text"> <void property="text"> <string>3. It gets the file from the filesystem and add it to parent dir</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>379.1320632384976</double> <double>217.4323774110454</double> </void> </object> </void> <void method="addNode"> <object id="PointNode2" class="com.horstmann.violet.PointNode"> <void id="Rectangle2D$Double2" property="bounds"> <void method="setRect"> <double>327.03195662574825</double> <double>218.46075295682857</double> <double>0.0</double> <double>0.0</double> </void> </void> <void property="bounds"> <object idref="Rectangle2D$Double2"/> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>327.03195662574825</double> <double>218.46075295682857</double> </void> </object> </void> <void method="addNode"> <object id="NoteNode2" class="com.horstmann.violet.NoteNode"> <void property="text"> <void property="text"> <string>4. The dir delegates in the builder. 5. The builder stat's the source file. In this example it's a reg. file</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>767.038589176755</double> <double>206.92203801047344</double> </void> </object> </void> <void method="addNode"> <object id="PointNode3" class="com.horstmann.violet.PointNode"> <void id="Rectangle2D$Double3" property="bounds"> <void method="setRect"> <double>694.4969551615891</double> <double>312.7614712457156</double> <double>0.0</double> <double>0.0</double> </void> </void> <void property="bounds"> <object idref="Rectangle2D$Double3"/> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>694.4969551615891</double> <double>312.7614712457156</double> </void> </object> </void> <void method="addNode"> <object id="PointNode4" class="com.horstmann.violet.PointNode"> <void id="Rectangle2D$Double4" property="bounds"> <void method="setRect"> <double>314.9148790283507</double> <double>359.23720542189034</double> <double>0.0</double> <double>0.0</double> </void> </void> <void property="bounds"> <object idref="Rectangle2D$Double4"/> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>314.9148790283507</double> <double>359.23720542189034</double> </void> </object> </void> <void method="addNode"> <object id="NoteNode3" class="com.horstmann.violet.NoteNode"> <void property="text"> <void property="text"> <string>6. The conversion is not needed, so the builder just creates a FileTreeNode</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>762.2817607167442</double> <double>335.3564064307673</double> </void> </object> </void> <void method="addNode"> <object id="PointNode5" class="com.horstmann.violet.PointNode"> <void id="Rectangle2D$Double5" property="bounds"> <void method="setRect"> <double>522.2869299335649</double> <double>399.9594286575042</double> <double>0.0</double> <double>0.0</double> </void> </void> <void property="bounds"> <object idref="Rectangle2D$Double5"/> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>522.2869299335649</double> <double>399.9594286575042</double> </void> </object> </void> <void method="addNode"> <object id="NoteNode4" class="com.horstmann.violet.NoteNode"> <void property="text"> <void property="text"> <string>7. Sets the attributes from source</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>774.1738318667714</double> <double>413.8440760209469</double> </void> </object> </void> <void method="addNode"> <object id="NoteNode5" class="com.horstmann.violet.NoteNode"> <void property="text"> <void property="text"> <string>8 ...and a FileStream to read contents from the FileSource</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>762.2817607167442</double> <double>478.0612602310938</double> </void> </object> </void> <void method="addNode"> <object id="PointNode6" class="com.horstmann.violet.PointNode"> <void id="Rectangle2D$Double6" property="bounds"> <void method="setRect"> <double>534.9181953038541</double> <double>453.1845675071054</double> <double>0.0</double> <double>0.0</double> </void> </void> <void property="bounds"> <object idref="Rectangle2D$Double6"/> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>534.9181953038541</double> <double>453.1845675071054</double> </void> </object> </void> <void method="addNode"> <object id="PointNode7" class="com.horstmann.violet.PointNode"> <void id="Rectangle2D$Double7" property="bounds"> <void method="setRect"> <double>482.368075796364</double> <double>524.8261757327898</double> <double>0.0</double> <double>0.0</double> </void> </void> <void property="bounds"> <object idref="Rectangle2D$Double7"/> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>482.368075796364</double> <double>524.8261757327898</double> </void> </object> </void> <void method="addNode"> <object id="NoteNode6" class="com.horstmann.violet.NoteNode"> <void property="text"> <void property="text"> <string>9. Finally, the FileTreeNode is added to the parent dir, and returned to the user</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>757.5249322567332</double> <double>556.5489298212734</double> </void> </object> </void> <void method="addNode"> <object id="PointNode8" class="com.horstmann.violet.PointNode"> <void id="Rectangle2D$Double8" property="bounds"> <void method="setRect"> <double>689.7401267015781</double> <double>614.8200784564067</double> <double>0.0</double> <double>0.0</double> </void> </void> <void property="bounds"> <object idref="Rectangle2D$Double8"/> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>689.7401267015781</double> <double>614.8200784564067</double> </void> </object> </void> <void method="addNode"> <object idref="ActivationBarNode7"/> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>363.97135964975513</double> <double>656.0</double> </void> </object> </void> <void method="addNode"> <object id="NoteNode7" class="com.horstmann.violet.NoteNode"> <void property="text"> <void property="text"> <string>10. The user can change any attribute on the FileTreeNode</string> </void> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>735.3910524340093</double> <double>659.0235200658623</double> </void> </object> </void> <void method="addNode"> <object id="PointNode9" class="com.horstmann.violet.PointNode"> <void id="Rectangle2D$Double9" property="bounds"> <void method="setRect"> <double>373.3523804664971</double> <double>666.0945878777277</double> <double>0.0</double> <double>0.0</double> </void> </void> <void property="bounds"> <object idref="Rectangle2D$Double9"/> </void> </object> <object class="java.awt.geom.Point2D$Double"> <void method="setLocation"> <double>373.3523804664971</double> <double>666.0945878777277</double> </void> </object> </void> <void method="connect"> <object class="com.horstmann.violet.CallEdge"> <void property="middleLabel"> <string>«create»</string> </void> </object> <object idref="ActivationBarNode0"/> <object idref="LifelineNode1"/> </void> <void method="connect"> <object class="com.horstmann.violet.CallEdge"> <void property="middleLabel"> <string>«create»</string> </void> </object> <object idref="ActivationBarNode1"/> <object idref="LifelineNode0"/> </void> <void method="connect"> <object class="com.horstmann.violet.ReturnEdge"> <void property="lineStyle"> <object class="com.horstmann.violet.LineStyle" field="SOLID"/> </void> <void property="middleLabel"> <string>file</string> </void> </object> <object idref="ActivationBarNode0"/> <object idref="ActivationBarNode1"/> </void> <void method="connect"> <object class="com.horstmann.violet.CallEdge"> <void property="middleLabel"> <string>add_file(file,b)</string> </void> </object> <object idref="ActivationBarNode1"/> <object idref="ActivationBarNode2"/> </void> <void method="connect"> <object class="com.horstmann.violet.CallEdge"> <void property="middleLabel"> <string>create_file(file)</string> </void> </object> <object idref="ActivationBarNode2"/> <object idref="ActivationBarNode3"/> </void> <void method="connect"> <object class="com.horstmann.violet.CallEdge"> <void property="middleLabel"> <string>lstat()</string> </void> </object> <object idref="ActivationBarNode3"/> <object idref="ActivationBarNode4"/> </void> <void method="connect"> <object class="com.horstmann.violet.ReturnEdge"> <void property="middleLabel"> <string>S_IFREG</string> </void> </object> <object idref="ActivationBarNode4"/> <object idref="ActivationBarNode3"/> </void> <void method="connect"> <object class="com.horstmann.violet.CallEdge"> <void property="middleLabel"> <string>«create»</string> </void> </object> <object idref="ActivationBarNode3"/> <object idref="LifelineNode4"/> </void> <void method="connect"> <object class="com.horstmann.violet.CallEdge"> <void property="middleLabel"> <string>set attributes</string> </void> </object> <object idref="ActivationBarNode3"/> <object idref="ActivationBarNode5"/> </void> <void method="connect"> <object class="com.horstmann.violet.ReturnEdge"/> <object idref="ActivationBarNode5"/> <object idref="ActivationBarNode3"/> </void> <void method="connect"> <object class="com.horstmann.violet.ReturnEdge"> <void property="lineStyle"> <object class="com.horstmann.violet.LineStyle" field="SOLID"/> </void> <void property="middleLabel"> <string>ftn</string> </void> </object> <object idref="ActivationBarNode3"/> <object idref="ActivationBarNode2"/> </void> <void method="connect"> <object class="com.horstmann.violet.CallEdge"> <void property="middleLabel"> <string>«create»</string> </void> </object> <object idref="ActivationBarNode3"/> <object idref="LifelineNode5"/> </void> <void method="connect"> <object class="com.horstmann.violet.CallEdge"> <void property="middleLabel"> <string>set stream (fs)</string> </void> </object> <object idref="ActivationBarNode3"/> <object idref="ActivationBarNode6"/> </void> <void method="connect"> <object class="com.horstmann.violet.ReturnEdge"/> <object idref="ActivationBarNode6"/> <object idref="ActivationBarNode3"/> </void> <void method="connect"> <object class="com.horstmann.violet.ReturnEdge"> <void property="lineStyle"> <object class="com.horstmann.violet.LineStyle" field="SOLID"/> </void> <void property="middleLabel"> <string>ftn</string> </void> </object> <object idref="ActivationBarNode2"/> <object idref="ActivationBarNode1"/> </void> <void method="connect"> <object class="com.horstmann.violet.CallEdge"> <void property="middleLabel"> <string>«create»</string> </void> </object> <object idref="ActivationBarNode1"/> <object idref="LifelineNode3"/> </void> <void method="connect"> <object class="com.horstmann.violet.CallEdge"> <void property="middleLabel"> <string>get(path)</string> </void> </object> <object idref="ActivationBarNode1"/> <object idref="ActivationBarNode0"/> </void> <void method="connect"> <object class="com.horstmann.violet.NoteEdge"/> <object idref="NoteNode0"/> <object idref="PointNode0"/> </void> <void method="connect"> <object class="com.horstmann.violet.NoteEdge"/> <object idref="NoteNode0"/> <object idref="PointNode1"/> </void> <void method="connect"> <object class="com.horstmann.violet.NoteEdge"/> <object idref="NoteNode1"/> <object idref="PointNode2"/> </void> <void method="connect"> <object class="com.horstmann.violet.NoteEdge"/> <object idref="NoteNode2"/> <object idref="PointNode3"/> </void> <void method="connect"> <object class="com.horstmann.violet.NoteEdge"/> <object idref="NoteNode2"/> <object idref="PointNode4"/> </void> <void method="connect"> <object class="com.horstmann.violet.NoteEdge"/> <object idref="NoteNode3"/> <object idref="PointNode5"/> </void> <void method="connect"> <object class="com.horstmann.violet.NoteEdge"/> <object idref="NoteNode4"/> <object idref="PointNode6"/> </void> <void method="connect"> <object class="com.horstmann.violet.NoteEdge"/> <object idref="NoteNode5"/> <object idref="PointNode7"/> </void> <void method="connect"> <object class="com.horstmann.violet.NoteEdge"/> <object idref="NoteNode6"/> <object idref="PointNode8"/> </void> <void method="connect"> <object class="com.horstmann.violet.CallEdge"> <void property="middleLabel"> <string>set_permission()</string> </void> </object> <object idref="ActivationBarNode1"/> <object idref="ActivationBarNode7"/> </void> <void method="connect"> <object class="com.horstmann.violet.ReturnEdge"/> <object idref="ActivationBarNode7"/> <object idref="ActivationBarNode1"/> </void> <void method="connect"> <object class="com.horstmann.violet.NoteEdge"/> <object idref="NoteNode7"/> <object idref="PointNode9"/> </void> </object> </java>