<?xml version="1.0" encoding="UTF-8"?>

<umldiagrams>
  <classdiagram name="canDispenser_javadoc.xml.aud" id="canDispenser_javadoc.xml.aud">
    <package name="canDispenser.dispenser" id="canDispenser.dispenser">
      <classifiers>
	<class name="ServerConnector" id="canDispenser.dispenser.ServerConnector" visibility="public">
	  <annotation>
	    <![CDATA[talks to server:
 
 - when dispenser is started notify server
 - when server asks for fill-level, answer :-) 
 geometry(x=300,y=200)]]>
	  </annotation>
	  <geometry x="300" y="200" />
	  <attributes>
	    <attribute name="name" id="canDispenser.dispenser.ServerConnector.name" visibility="public" type="String" />
	    <attribute name="cm" id="canDispenser.dispenser.ServerConnector.cm" visibility="public" type="ContentManager" />
	    <attribute name="dc" id="canDispenser.dispenser.ServerConnector.dc" visibility="public" type="DispenserConnector" />
	  </attributes>
	  <operations>
	    <operation name="ServerConnector" id="canDispenser.dispenser.ServerConnector.ServerConnector-java.lang.String-" visibility="public" signature="(java.lang.String name)" />
	    <operation name="remove" id="canDispenser.dispenser.ServerConnector.remove-" visibility="public" signature="()" returntype="void" />
	    <operation name="setContentManagerHandle" id="canDispenser.dispenser.ServerConnector.setContentManagerHandle-canDispenser.dispenser.ContentManager-" visibility="public" signature="(canDispenser.dispenser.ContentManager cm)" returntype="void" />
	    <operation name="getContentInformation" id="canDispenser.dispenser.ServerConnector.getContentInformation-" visibility="public" signature="()" returntype="java.lang.String[]">
	      <annotation>
		<![CDATA[Checks the contentManager for Content information. ]]>
	      </annotation>
	    </operation>
	  </operations>
	</class>
	<class name="ConsumerInterface" id="canDispenser.dispenser.ConsumerInterface" visibility="public">
	  <annotation>
	    <![CDATA[creates a simple userInterface for the consumer. ]]>
	  </annotation>
	  <geometry x="100" y="150" />
	  <operations>
	    <operation name="ConsumerInterface" id="canDispenser.dispenser.ConsumerInterface.ConsumerInterface-java.lang.String-canDispenser.dispenser.ContentManager-" visibility="public" signature="(java.lang.String name, canDispenser.dispenser.ContentManager cm)" />
	  </operations>
	</class>
	<exception name="IllegalNameException" id="canDispenser.dispenser.IllegalNameException" visibility="public">
	  <annotation>
	    <![CDATA[this exception is thrown by the ContentManger when someone tries to refill with an unkown name
 geometry(x=500,y=20)]]>
	  </annotation>
	  <geometry x="500" y="20" />
	  <operations>
	    <operation name="IllegalNameException" id="canDispenser.dispenser.IllegalNameException.IllegalNameException-java.lang.String-" visibility="public" signature="(java.lang.String s)" />
	  </operations>
	  <relations>
	    <generalization name="generalization-canDispenser.dispenser.IllegalNameException-java.lang.Exception" id="generalization-canDispenser.dispenser.IllegalNameException-java.lang.Exception" external="java.lang.Exception" />
	  </relations>
	</exception>
	<class name="Startup" id="canDispenser.dispenser.Startup" visibility="public">
	  <annotation>
	    <![CDATA[The Startup-Class allows the creation of a new dispenser.
 geometry(x=100,y=20)]]>
	  </annotation>
	  <geometry x="100" y="20" />
	  <attributes>
	    <attribute name="l" id="canDispenser.dispenser.Startup.l" visibility="friendly" static="true" type="int" />
	    <attribute name="CAPACITY" id="canDispenser.dispenser.Startup.CAPACITY" visibility="friendly" static="true" type="int" />
	  </attributes>
	  <operations>
	    <operation name="Startup" id="canDispenser.dispenser.Startup.Startup-" visibility="public" signature="()" />
	    <operation name="main" id="canDispenser.dispenser.Startup.main-java.lang.String_array-" visibility="public" static="true" signature="(java.lang.String[] argv)" returntype="void" />
	    <operation name="getNewDispenser" id="canDispenser.dispenser.Startup.getNewDispenser-java.lang.String-" visibility="public" static="true" signature="(java.lang.String name)" returntype="canDispenser.dispenser.ContentManager" />
	    <operation name="log" id="canDispenser.dispenser.Startup.log-java.lang.String-" visibility="public" static="true" signature="(java.lang.String str)" returntype="void" />
	    <operation name="mlog" id="canDispenser.dispenser.Startup.mlog-java.lang.Object-java.lang.String-java.lang.String-" visibility="public" static="true" signature="(java.lang.Object o, java.lang.String methodName, java.lang.String params)" returntype="void" />
	  </operations>
	</class>
	<exception name="NotInStockException" id="canDispenser.dispenser.NotInStockException" visibility="public">
	  <annotation>
	    <![CDATA[this exception is thrown by the ContentManger when someone tries to get an item which isn't in stock
 geometry(x=500,y=100)]]>
	  </annotation>
	  <geometry x="500" y="100" />
	  <operations>
	    <operation name="NotInStockException" id="canDispenser.dispenser.NotInStockException.NotInStockException-java.lang.String-" visibility="public" signature="(java.lang.String s)" />
	  </operations>
	  <relations>
	    <generalization name="generalization-canDispenser.dispenser.NotInStockException-java.lang.Exception" id="generalization-canDispenser.dispenser.NotInStockException-java.lang.Exception" external="java.lang.Exception" />
	  </relations>
	</exception>
	<class name="Lemonade" id="canDispenser.dispenser.Lemonade" visibility="public">
	  <annotation>
	    <![CDATA[this class represents a lemonade-object.
 geometry(x=500,y=300)]]>
	  </annotation>
	  <geometry x="500" y="300" />
	  <attributes>
	    <attribute name="type" id="canDispenser.dispenser.Lemonade.type" visibility="friendly" type="String" />
	    <attribute name="info" id="canDispenser.dispenser.Lemonade.info" visibility="friendly" type="String" />
	  </attributes>
	  <operations>
	    <operation name="Lemonade" id="canDispenser.dispenser.Lemonade.Lemonade-" visibility="public" signature="()" />
	    <operation name="getType" id="canDispenser.dispenser.Lemonade.getType-" visibility="public" signature="()" returntype="java.lang.String" />
	    <operation name="getInfo" id="canDispenser.dispenser.Lemonade.getInfo-" visibility="public" signature="()" returntype="java.lang.String" />
	  </operations>
	  <relations>
	    <generalization name="generalization-canDispenser.dispenser.Lemonade-canDispenser.dispenser.DispenserItem" id="generalization-canDispenser.dispenser.Lemonade-canDispenser.dispenser.DispenserItem" to="canDispenser.dispenser.DispenserItem" />
	  </relations>
	</class>
	<interface name="DispenserItem" id="canDispenser.dispenser.DispenserItem" visibility="public">
	  <annotation>
	    <![CDATA[this interface defines the methods for an item which can be put in a dispenser.
 geometry(x=700,y=100)]]>
	  </annotation>
	  <geometry x="700" y="100" />
	  <operations>
	    <operation name="getType" id="canDispenser.dispenser.DispenserItem.getType-" visibility="public" signature="()" returntype="java.lang.String" />
	    <operation name="getInfo" id="canDispenser.dispenser.DispenserItem.getInfo-" visibility="public" signature="()" returntype="java.lang.String" />
	  </operations>
	</interface>
	<exception name="NoServerFoundException" id="canDispenser.dispenser.NoServerFoundException" visibility="public">
	  <annotation>
	    <![CDATA[this exception is thrown by the ContentManger when someone tries to get an item which isn't in stock
 geometry(x=100,y=230)]]>
	  </annotation>
	  <geometry x="100" y="230" />
	  <operations>
	    <operation name="NoServerFoundException" id="canDispenser.dispenser.NoServerFoundException.NoServerFoundException-java.lang.String-" visibility="public" signature="(java.lang.String s)" />
	  </operations>
	  <relations>
	    <generalization name="generalization-canDispenser.dispenser.NoServerFoundException-java.lang.Exception" id="generalization-canDispenser.dispenser.NoServerFoundException-java.lang.Exception" external="java.lang.Exception" />
	  </relations>
	</exception>
	<class name="ContentManager" id="canDispenser.dispenser.ContentManager" visibility="public">
	  <annotation>
	    <![CDATA[The ContentManager handles the Content of a dispenser.
 geometry(x=300,y=20)]]>
	  </annotation>
	  <geometry x="300" y="20" />
	  <attributes>
	    <attribute name="name" id="canDispenser.dispenser.ContentManager.name" visibility="friendly" type="String" />
	    <attribute name="sc" id="canDispenser.dispenser.ContentManager.sc" visibility="friendly" type="ServerConnector" />
	    <attribute name="capacity" id="canDispenser.dispenser.ContentManager.capacity" visibility="friendly" type="int" />
	    <attribute name="items" id="canDispenser.dispenser.ContentManager.items" visibility="private" type="Vector" />
	  </attributes>
	  <operations>
	    <operation name="ContentManager" id="canDispenser.dispenser.ContentManager.ContentManager-java.lang.String-int-canDispenser.dispenser.ServerConnector-" visibility="public" signature="(java.lang.String name, int capacity, canDispenser.dispenser.ServerConnector sc)" />
	    <operation name="shutdown" id="canDispenser.dispenser.ContentManager.shutdown-" visibility="public" signature="()" returntype="void" />
	    <operation name="getContentInformation" id="canDispenser.dispenser.ContentManager.getContentInformation-" visibility="public" signature="()" returntype="java.lang.String[]" />
	    <operation name="refill" id="canDispenser.dispenser.ContentManager.refill-java.lang.String-int-" visibility="public" signature="(java.lang.String type, int amount)" returntype="void" />
	    <operation name="getOne" id="canDispenser.dispenser.ContentManager.getOne-java.lang.String-" visibility="public" signature="(java.lang.String type)" returntype="void" />
	    <operation name="createItem" id="canDispenser.dispenser.ContentManager.createItem-java.lang.String-" visibility="private" signature="(java.lang.String type)" returntype="canDispenser.dispenser.DispenserItem" />
	  </operations>
	</class>
	<class name="Water" id="canDispenser.dispenser.Water" visibility="public">
	  <annotation>
	    <![CDATA[this class represents a water-object.
 geometry(x=700,y=300)]]>
	  </annotation>
	  <geometry x="700" y="300" />
	  <attributes>
	    <attribute name="type" id="canDispenser.dispenser.Water.type" visibility="friendly" type="String" />
	    <attribute name="info" id="canDispenser.dispenser.Water.info" visibility="friendly" type="String" />
	  </attributes>
	  <operations>
	    <operation name="Water" id="canDispenser.dispenser.Water.Water-" visibility="public" signature="()" />
	    <operation name="getType" id="canDispenser.dispenser.Water.getType-" visibility="public" signature="()" returntype="java.lang.String" />
	    <operation name="getInfo" id="canDispenser.dispenser.Water.getInfo-" visibility="public" signature="()" returntype="java.lang.String" />
	  </operations>
	  <relations>
	    <generalization name="generalization-canDispenser.dispenser.Water-canDispenser.dispenser.DispenserItem" id="generalization-canDispenser.dispenser.Water-canDispenser.dispenser.DispenserItem" to="canDispenser.dispenser.DispenserItem" />
	  </relations>
	</class>
      </classifiers>
    </package>
    <package name="canDispenser.server" id="canDispenser.server">
      <classifiers>
	<class name="Logging" id="canDispenser.server.Logging" visibility="public">
	  <annotation>
	    <![CDATA[The Logging is used to track the method-calls for anuclad
 geometry(x=100,y=500)]]>
	  </annotation>
	  <geometry x="100" y="500" />
	  <attributes>
	    <attribute name="mLogger" id="canDispenser.server.Logging.mLogger" visibility="public" static="true" type="PrintStream" />
	    <attribute name="firstTime" id="canDispenser.server.Logging.firstTime" visibility="public" static="true" type="boolean" />
	    <attribute name="mLogFromStack" id="canDispenser.server.Logging.mLogFromStack" visibility="public" static="true" type="Stack" />
	    <attribute name="currentTime" id="canDispenser.server.Logging.currentTime" visibility="friendly" static="true" type="int" />
	    <attribute name="l" id="canDispenser.server.Logging.l" visibility="friendly" static="true" type="int" />
	  </attributes>
	  <operations>
	    <operation name="Logging" id="canDispenser.server.Logging.Logging-" visibility="public" signature="()" />
	    <operation name="log" id="canDispenser.server.Logging.log-java.lang.String-java.lang.String-" visibility="public" static="true" signature="(java.lang.String src, java.lang.String str)" returntype="void" />
	    <operation name="mLoggerInit" id="canDispenser.server.Logging.mLoggerInit-java.lang.String-" visibility="public" static="true" signature="(java.lang.String fname)" returntype="void" />
	    <operation name="mLoggerExit" id="canDispenser.server.Logging.mLoggerExit-" visibility="public" static="true" signature="()" returntype="void" />
	    <operation name="mlog" id="canDispenser.server.Logging.mlog-java.lang.String-java.lang.String-java.lang.String-" visibility="public" static="true" signature="(java.lang.String o, java.lang.String methodName, java.lang.String params)" returntype="void" />
	  </operations>
	</class>
	<class name="DispenserConnector" id="canDispenser.server.DispenserConnector" visibility="public">
	  <annotation>
	    <![CDATA[The DispenserConnector is the facade for the server-connection.
 geometry(x=300,y=400)]]>
	  </annotation>
	  <geometry x="300" y="400" />
	  <attributes>
	    <attribute name="sc" id="canDispenser.server.DispenserConnector.sc" visibility="private" type="ServerConnector" />
	    <attribute name="name" id="canDispenser.server.DispenserConnector.name" visibility="friendly" type="String" />
	  </attributes>
	  <operations>
	    <operation name="DispenserConnector" id="canDispenser.server.DispenserConnector.DispenserConnector-canDispenser.dispenser.ServerConnector-" visibility="public" signature="(canDispenser.dispenser.ServerConnector sc)" />
	    <operation name="getDispenserInfo" id="canDispenser.server.DispenserConnector.getDispenserInfo-" visibility="public" signature="()" returntype="java.lang.String" />
	  </operations>
	</class>
	<class name="DispenserManager" id="canDispenser.server.DispenserManager" visibility="public">
	  <annotation>
	    <![CDATA[The DispenserManager tracks all active Dispensers.
 geometry(x=300,y=500)]]>
	  </annotation>
	  <geometry x="300" y="500" />
	  <attributes>
	    <attribute name="singleton" id="canDispenser.server.DispenserManager.singleton" visibility="private" static="true" type="DispenserManager" />
	    <attribute name="dispenserList" id="canDispenser.server.DispenserManager.dispenserList" visibility="private" type="Vector" />
	  </attributes>
	  <operations>
	    <operation name="DispenserManager" id="canDispenser.server.DispenserManager.DispenserManager-" visibility="private" signature="()" />
	    <operation name="init" id="canDispenser.server.DispenserManager.init-" visibility="public" static="true" signature="()" returntype="void" />
	    <operation name="getDispenserManager" id="canDispenser.server.DispenserManager.getDispenserManager-" visibility="public" static="true" signature="()" returntype="canDispenser.server.DispenserManager" />
	    <operation name="addDispenser" id="canDispenser.server.DispenserManager.addDispenser-canDispenser.dispenser.ServerConnector-" visibility="public" signature="(canDispenser.dispenser.ServerConnector sc)" returntype="canDispenser.server.DispenserConnector" />
	    <operation name="removeDispenser" id="canDispenser.server.DispenserManager.removeDispenser-canDispenser.server.DispenserConnector-" visibility="public" signature="(canDispenser.server.DispenserConnector dc)" returntype="void" />
	    <operation name="showDispenserList" id="canDispenser.server.DispenserManager.showDispenserList-" visibility="public" signature="()" returntype="void" />
	  </operations>
	</class>
	<class name="Startup" id="canDispenser.server.Startup" visibility="public">
	  <annotation>
	    <![CDATA[Startup starts the DispenserManager and the Logging.
 geometry(x=100,y=400)]]>
	  </annotation>
	  <geometry x="100" y="400" />
	  <operations>
	    <operation name="Startup" id="canDispenser.server.Startup.Startup-" visibility="public" signature="()" />
	    <operation name="main" id="canDispenser.server.Startup.main-java.lang.String_array-" visibility="public" static="true" signature="(java.lang.String[] argv)" returntype="void" />
	    <operation name="log" id="canDispenser.server.Startup.log-java.lang.String-" visibility="public" static="true" signature="(java.lang.String str)" returntype="void" />
	    <operation name="mlog" id="canDispenser.server.Startup.mlog-java.lang.Object-java.lang.String-java.lang.String-" visibility="public" static="true" signature="(java.lang.Object o, java.lang.String methodName, java.lang.String params)" returntype="void" />
	  </operations>
	</class>
      </classifiers>
    </package>
    <package name="canDispenser.test" id="canDispenser.test">
      <classifiers>
	<class name="Console" id="canDispenser.test.Console" visibility="public">
	  <annotation>
	    <![CDATA[Emulates the three different people who interact with the system. ]]>
	  </annotation>
	  <geometry x="50" y="300" />
	  <attributes>
	    <attribute name="myDispensers" id="canDispenser.test.Console.myDispensers" visibility="friendly" static="true" type="Vector" />
	  </attributes>
	  <operations>
	    <operation name="Console" id="canDispenser.test.Console.Console-" visibility="public" signature="()" />
	    <operation name="main" id="canDispenser.test.Console.main-java.lang.String_array-" visibility="public" static="true" signature="(java.lang.String[] argv)" returntype="void" />
	    <operation name="showHelp" id="canDispenser.test.Console.showHelp-" visibility="public" static="true" signature="()" returntype="void" />
	  </operations>
	</class>
      </classifiers>
    </package>
  </classdiagram>
</umldiagrams>

