Index: /trunk/hacs/build.xml
===================================================================
--- /trunk/hacs/build.xml	(revision 3)
+++ /trunk/hacs/build.xml	(revision 3)
@@ -0,0 +1,491 @@
+<!--
+     General purpose build script for web applications and web services,
+     including enhanced support for deploying directly to a Tomcat 6
+     based server.
+
+     This build script assumes that the source code of your web application
+     is organized into the following subdirectories underneath the source
+     code directory from which you execute the build script:
+
+        docs                 Static documentation files to be copied to
+                             the "docs" subdirectory of your distribution.
+
+        src                  Java source code (and associated resource files)
+                             to be compiled to the "WEB-INF/classes"
+                             subdirectory of your web applicaiton.
+
+        web                  Static HTML, JSP, and other content (such as
+                             image files), including the WEB-INF subdirectory
+                             and its configuration file contents.
+
+     $Id: build.xml.txt 525818 2007-04-05 13:16:43Z remm $
+-->
+
+
+<!-- A "project" describes a set of targets that may be requested
+     when Ant is executed.  The "default" attribute defines the
+     target which is executed if no specific target is requested,
+     and the "basedir" attribute defines the current working directory
+     from which Ant executes the requested task.  This is normally
+     set to the current working directory.
+-->
+
+<project name="HACS" default="compile" basedir=".">
+
+
+
+<!-- ===================== Property Definitions =========================== -->
+
+
+<!--
+
+  Each of the following properties are used in the build script.
+  Values for these properties are set by the first place they are
+  defined, from the following list:
+
+  * Definitions on the "ant" command line (ant -Dfoo=bar compile).
+
+  * Definitions from a "build.properties" file in the top level
+    source directory of this application.
+
+  * Definitions from a "build.properties" file in the developer's
+    home directory.
+
+  * Default definitions in this build.xml file.
+
+  You will note below that property values can be composed based on the
+  contents of previously defined properties.  This is a powerful technique
+  that helps you minimize the number of changes required when your development
+  environment is modified.  Note that property composition is allowed within
+  "build.properties" files as well as in the "build.xml" script.
+
+-->
+
+  <property file="build.properties"/>
+  <property file="${user.home}/build.properties"/>
+
+
+<!-- ==================== File and Directory Names ======================== -->
+
+
+<!--
+
+  These properties generally define file and directory names (or paths) that
+  affect where the build process stores its outputs.
+
+  app.name             Base name of this application, used to
+                       construct filenames and directories.
+                       Defaults to "myapp".
+
+  app.path             Context path to which this application should be
+                       deployed (defaults to "/" plus the value of the
+                       "app.name" property).
+
+  app.version          Version number of this iteration of the application.
+
+  build.home           The directory into which the "prepare" and
+                       "compile" targets will generate their output.
+                       Defaults to "build".
+
+  catalina.home        The directory in which you have installed
+                       a binary distribution of Tomcat 6.  This will
+                       be used by the "deploy" target.
+
+  dist.home            The name of the base directory in which
+                       distribution files are created.
+                       Defaults to "dist".
+
+  manager.password     The login password of a user that is assigned the
+                       "manager" role (so that he or she can execute
+                       commands via the "/manager" web application)
+
+  manager.url          The URL of the "/manager" web application on the
+                       Tomcat installation to which we will deploy web
+                       applications and web services.
+
+  manager.username     The login username of a user that is assigned the
+                       "manager" role (so that he or she can execute
+                       commands via the "/manager" web application)
+
+-->
+
+  <property name="app.name"      value="hacs"/>
+  <property name="app.path"      value="/${app.name}"/>
+  <property name="app.version"   value="0.1-dev"/>
+  <property name="build.home"    value="${basedir}/build"/>
+  <property name="catalina.home" value="/usr/share/tomcat-6"/>
+  <property name="dist.home"     value="${basedir}/dist"/>
+  <property name="docs.home"     value="${basedir}/docs"/>
+  <property name="manager.url"   value="http://tomcat.ersoft.org/manager"/>
+  <property name="src.home"      value="${basedir}/src"/>
+  <property name="web.home"      value="${basedir}/web"/>
+
+
+<!-- ==================== External Dependencies =========================== -->
+
+
+<!--
+
+  Use property values to define the locations of external JAR files on which
+  your application will depend.  In general, these values will be used for
+  two purposes:
+  * Inclusion on the classpath that is passed to the Javac compiler
+  * Being copied into the "/WEB-INF/lib" directory during execution
+    of the "deploy" target.
+
+  Because we will automatically include all of the Java classes that Tomcat 6
+  exposes to web applications, we will not need to explicitly list any of those
+  dependencies.  You only need to worry about external dependencies for JAR
+  files that you are going to include inside your "/WEB-INF/lib" directory.
+
+-->
+
+  <property name="dbus.jar"
+           value="/usr/share/dbus-java/lib/dbus.jar"/>
+
+
+<!-- ==================== Compilation Classpath =========================== -->
+
+<!--
+
+  Rather than relying on the CLASSPATH environment variable, Ant includes
+  features that makes it easy to dynamically construct the classpath you
+  need for each compilation.  The example below constructs the compile
+  classpath to include the servlet.jar file, as well as the other components
+  that Tomcat makes available to web applications automatically, plus anything
+  that you explicitly added.
+
+-->
+
+  <path id="compile.classpath">
+
+    <!-- Include all JAR files that will be included in /WEB-INF/lib -->
+    <pathelement location="${dbus.jar}"/>
+
+    <!-- Include all elements that Tomcat exposes to applications -->
+    <fileset dir="${catalina.home}/bin">
+      <include name="*.jar"/>
+    </fileset>
+    <pathelement location="${catalina.home}/lib"/>
+    <fileset dir="${catalina.home}/lib">
+      <include name="*.jar"/>
+    </fileset>
+
+  </path>
+
+
+
+<!-- ================== Custom Ant Task Definitions ======================= -->
+
+
+<!--
+
+  These properties define custom tasks for the Ant build tool that interact
+  with the "/manager" web application installed with Tomcat 6.  Before they
+  can be successfully utilized, you must perform the following steps:
+
+  - Copy the file "lib/catalina-ant.jar" from your Tomcat 6
+    installation into the "lib" directory of your Ant installation.
+
+  - Create a "build.properties" file in your application's top-level
+    source directory (or your user login home directory) that defines
+    appropriate values for the "manager.password", "manager.url", and
+    "manager.username" properties described above.
+
+  For more information about the Manager web application, and the functionality
+  of these tasks, see <http://localhost:8080/tomcat-docs/manager-howto.html>.
+
+-->
+
+  <taskdef resource="org/apache/catalina/ant/catalina.tasks"
+           classpathref="compile.classpath"/>
+
+
+<!--  ==================== Compilation Control Options ==================== -->
+
+<!--
+
+  These properties control option settings on the Javac compiler when it
+  is invoked using the <javac> task.
+
+  compile.debug        Should compilation include the debug option?
+
+  compile.deprecation  Should compilation include the deprecation option?
+
+  compile.optimize     Should compilation include the optimize option?
+
+-->
+
+  <property name="compile.debug"       value="true"/>
+  <property name="compile.deprecation" value="false"/>
+  <property name="compile.optimize"    value="true"/>
+
+
+
+<!-- ==================== All Target ====================================== -->
+
+<!--
+
+  The "all" target is a shortcut for running the "clean" target followed
+  by the "compile" target, to force a complete recompile.
+
+-->
+
+  <target name="all" depends="clean,compile"
+   description="Clean build and dist directories, then compile"/>
+
+
+
+<!-- ==================== Clean Target ==================================== -->
+
+<!--
+
+  The "clean" target deletes any previous "build" and "dist" directory,
+  so that you can be ensured the application can be built from scratch.
+
+-->
+
+  <target name="clean"
+   description="Delete old build and dist directories">
+    <delete dir="${build.home}"/>
+    <delete dir="${dist.home}"/>
+  </target>
+
+
+
+<!-- ==================== Compile Target ================================== -->
+
+<!--
+
+  The "compile" target transforms source files (from your "src" directory)
+  into object files in the appropriate location in the build directory.
+  This example assumes that you will be including your classes in an
+  unpacked directory hierarchy under "/WEB-INF/classes".
+
+-->
+
+  <target name="compile" depends="prepare"
+   description="Compile Java sources">
+
+    <!-- Compile Java classes as necessary -->
+    <mkdir    dir="${build.home}/WEB-INF/classes"/>
+    <javac srcdir="${src.home}"
+          destdir="${build.home}/WEB-INF/classes"
+            debug="${compile.debug}"
+      deprecation="${compile.deprecation}"
+         optimize="${compile.optimize}">
+        <classpath refid="compile.classpath"/>
+    </javac>
+
+    <!-- Copy application resources -->
+    <copy  todir="${build.home}/WEB-INF/classes">
+      <fileset dir="${src.home}" excludes="**/*.java"/>
+    </copy>
+
+  </target>
+
+
+
+<!-- ==================== Dist Target ===================================== -->
+
+
+<!--
+
+  The "dist" target creates a binary distribution of your application
+  in a directory structure ready to be archived in a tar.gz or zip file.
+  Note that this target depends on two others:
+
+  * "compile" so that the entire web application (including external
+    dependencies) will have been assembled
+
+  * "javadoc" so that the application Javadocs will have been created
+
+-->
+
+  <target name="dist" depends="compile,javadoc"
+   description="Create binary distribution">
+
+    <!-- Copy documentation subdirectories -->
+    <mkdir   dir="${dist.home}/docs"/>
+    <copy    todir="${dist.home}/docs">
+      <fileset dir="${docs.home}"/>
+    </copy>
+
+    <!-- Create application JAR file -->
+    <jar jarfile="${dist.home}/${app.name}-${app.version}.war"
+         basedir="${build.home}"/>
+
+    <!-- Copy additional files to ${dist.home} as necessary -->
+
+  </target>
+
+
+
+<!-- ==================== Install Target ================================== -->
+
+<!--
+
+  The "install" target tells the specified Tomcat 6 installation to dynamically
+  install this web application and make it available for execution.  It does
+  *not* cause the existence of this web application to be remembered across
+  Tomcat restarts; if you restart the server, you will need to re-install all
+  this web application.
+
+  If you have already installed this application, and simply want Tomcat to
+  recognize that you have updated Java classes (or the web.xml file), use the
+  "reload" target instead.
+
+  NOTE:  This target will only succeed if it is run from the same server that
+  Tomcat is running on.
+
+  NOTE:  This is the logical opposite of the "remove" target.
+
+-->
+
+  <target name="install" depends="compile"
+   description="Install application to servlet container">
+
+    <deploy url="${manager.url}"
+       username="${manager.username}"
+       password="${manager.password}"
+           path="${app.path}"
+       localWar="file://${build.home}"/>
+
+  </target>
+
+
+<!-- ==================== Javadoc Target ================================== -->
+
+<!--
+
+  The "javadoc" target creates Javadoc API documentation for the Java
+  classes included in your application.  Normally, this is only required
+  when preparing a distribution release, but is available as a separate
+  target in case the developer wants to create Javadocs independently.
+
+-->
+
+  <target name="javadoc" depends="compile"
+   description="Create Javadoc API documentation">
+
+    <mkdir          dir="${dist.home}/docs/api"/>
+    <javadoc sourcepath="${src.home}"
+                destdir="${dist.home}/docs/api"
+           packagenames="*">
+      <classpath refid="compile.classpath"/>
+    </javadoc>
+
+  </target>
+
+
+
+<!-- ====================== List Target =================================== -->
+
+<!--
+
+  The "list" target asks the specified Tomcat 6 installation to list the
+  currently running web applications, either loaded at startup time or
+  installed dynamically.  It is useful to determine whether or not the
+  application you are currently developing has been installed.
+
+-->
+
+  <target name="list"
+   description="List installed applications on servlet container">
+
+    <list    url="${manager.url}"
+        username="${manager.username}"
+        password="${manager.password}"/>
+
+  </target>
+
+
+<!-- ==================== Prepare Target ================================== -->
+
+<!--
+
+  The "prepare" target is used to create the "build" destination directory,
+  and copy the static contents of your web application to it.  If you need
+  to copy static files from external dependencies, you can customize the
+  contents of this task.
+
+  Normally, this task is executed indirectly when needed.
+
+-->
+
+  <target name="prepare">
+
+    <!-- Create build directories as needed -->
+    <mkdir  dir="${build.home}"/>
+    <mkdir  dir="${build.home}/WEB-INF"/>
+    <mkdir  dir="${build.home}/WEB-INF/classes"/>
+
+
+    <!-- Copy static content of this web application -->
+    <copy todir="${build.home}">
+      <fileset dir="${web.home}"/>
+    </copy>
+
+    <!-- Copy external dependencies as required -->
+    <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
+    <mkdir  dir="${build.home}/WEB-INF/lib"/>
+<!--
+    <copy todir="${build.home}/WEB-INF/lib" file="${foo.jar}"/>
+-->
+
+    <!-- Copy static files from external dependencies as needed -->
+    <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
+
+  </target>
+
+
+<!-- ==================== Reload Target =================================== -->
+
+<!--
+
+  The "reload" signals the specified application Tomcat 6 to shut itself down
+  and reload. This can be useful when the web application context is not
+  reloadable and you have updated classes or property files in the
+  /WEB-INF/classes directory or when you have added or updated jar files in the
+  /WEB-INF/lib directory.
+
+  NOTE: The /WEB-INF/web.xml web application configuration file is not reread
+  on a reload. If you have made changes to your web.xml file you must stop
+  then start the web application. 
+
+-->
+
+  <target name="reload" depends="compile"
+   description="Reload application on servlet container">
+
+    <reload url="${manager.url}"
+       username="${manager.username}"
+       password="${manager.password}"
+           path="${app.path}"/>
+
+  </target>
+
+
+<!-- ==================== Remove Target =================================== -->
+
+<!--
+
+  The "remove" target tells the specified Tomcat 6 installation to dynamically
+  remove this web application from service.
+
+  NOTE:  This is the logical opposite of the "install" target.
+
+-->
+
+  <target name="remove"
+   description="Remove application on servlet container">
+
+    <undeploy url="${manager.url}"
+         username="${manager.username}"
+         password="${manager.password}"
+             path="${app.path}"/>
+
+  </target>
+
+
+</project>
Index: /trunk/hacs/src/org/ersoft/ooad/servlet/HACSServlet.java
===================================================================
--- /trunk/hacs/src/org/ersoft/ooad/servlet/HACSServlet.java	(revision 3)
+++ /trunk/hacs/src/org/ersoft/ooad/servlet/HACSServlet.java	(revision 3)
@@ -0,0 +1,27 @@
+package org.ersoft.ooad.servlet;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+public class HACSServlet extends HttpServlet {
+	public void doGet(HttpServletRequest request, HttpServletResponse response)
+	throws IOException, ServletException
+	{
+		response.setContentType("text/html");
+		PrintWriter out = response.getWriter();
+		out.println("<html>");
+		out.println("<head>");
+		out.println("<title>HACS Servlet</title>");
+		out.println("</head>");
+		out.println("<body>");
+		out.println("<p>You are viewing the beginnings for the HACSServlet</p>");
+		out.println("</body>");
+		out.println("</html>");
+	}
+	public void doPost(HttpServletRequest request, HttpServletResponse response)
+	throws IOException, ServletException
+	{
+		doGet(request, response);
+	}
+}
Index: /trunk/hacs/src/org/freedesktop/Avahi/AddressResolver.java
===================================================================
--- /trunk/hacs/src/org/freedesktop/Avahi/AddressResolver.java	(revision 3)
+++ /trunk/hacs/src/org/freedesktop/Avahi/AddressResolver.java	(revision 3)
@@ -0,0 +1,39 @@
+package org.freedesktop.Avahi;
+import org.freedesktop.dbus.DBusInterface;
+import org.freedesktop.dbus.DBusSignal;
+import org.freedesktop.dbus.UInt32;
+import org.freedesktop.dbus.exceptions.DBusException;
+public interface AddressResolver extends DBusInterface
+{
+   public static class Found extends DBusSignal
+   {
+      public final int iinterface;
+      public final int protocol;
+      public final int aprotocol;
+      public final String address;
+      public final String name;
+      public final UInt32 flags;
+      public Found(String path, int iinterface, int protocol, int aprotocol, String address, String name, UInt32 flags) throws DBusException
+      {
+         super(path, iinterface, protocol, aprotocol, address, name, flags);
+         this.iinterface = iinterface;
+         this.protocol = protocol;
+         this.aprotocol = aprotocol;
+         this.address = address;
+         this.name = name;
+         this.flags = flags;
+      }
+   }
+   public static class Failure extends DBusSignal
+   {
+      public final String error;
+      public Failure(String path, String error) throws DBusException
+      {
+         super(path, error);
+         this.error = error;
+      }
+   }
+
+  public void Free();
+
+}
Index: /trunk/hacs/src/org/freedesktop/Avahi/DomainBrowser.java
===================================================================
--- /trunk/hacs/src/org/freedesktop/Avahi/DomainBrowser.java	(revision 3)
+++ /trunk/hacs/src/org/freedesktop/Avahi/DomainBrowser.java	(revision 3)
@@ -0,0 +1,64 @@
+package org.freedesktop.Avahi;
+import org.freedesktop.dbus.DBusInterface;
+import org.freedesktop.dbus.DBusSignal;
+import org.freedesktop.dbus.UInt32;
+import org.freedesktop.dbus.exceptions.DBusException;
+public interface DomainBrowser extends DBusInterface
+{
+   public static class ItemNew extends DBusSignal
+   {
+      public final int iinterface;
+      public final int protocol;
+      public final String domain;
+      public final UInt32 flags;
+      public ItemNew(String path, int iinterface, int protocol, String domain, UInt32 flags) throws DBusException
+      {
+         super(path, iinterface, protocol, domain, flags);
+         this.iinterface = iinterface;
+         this.protocol = protocol;
+         this.domain = domain;
+         this.flags = flags;
+      }
+   }
+   public static class ItemRemove extends DBusSignal
+   {
+      public final int iinterface;
+      public final int protocol;
+      public final String domain;
+      public final UInt32 flags;
+      public ItemRemove(String path, int iinterface, int protocol, String domain, UInt32 flags) throws DBusException
+      {
+         super(path, iinterface, protocol, domain, flags);
+         this.iinterface = iinterface;
+         this.protocol = protocol;
+         this.domain = domain;
+         this.flags = flags;
+      }
+   }
+   public static class Failure extends DBusSignal
+   {
+      public final String error;
+      public Failure(String path, String error) throws DBusException
+      {
+         super(path, error);
+         this.error = error;
+      }
+   }
+   public static class AllForNow extends DBusSignal
+   {
+      public AllForNow(String path) throws DBusException
+      {
+         super(path);
+      }
+   }
+   public static class CacheExhausted extends DBusSignal
+   {
+      public CacheExhausted(String path) throws DBusException
+      {
+         super(path);
+      }
+   }
+
+  public void Free();
+
+}
Index: /trunk/hacs/src/org/freedesktop/Avahi/EntryGroup.java
===================================================================
--- /trunk/hacs/src/org/freedesktop/Avahi/EntryGroup.java	(revision 3)
+++ /trunk/hacs/src/org/freedesktop/Avahi/EntryGroup.java	(revision 3)
@@ -0,0 +1,33 @@
+package org.freedesktop.Avahi;
+import java.util.List;
+import org.freedesktop.dbus.DBusInterface;
+import org.freedesktop.dbus.DBusSignal;
+import org.freedesktop.dbus.UInt16;
+import org.freedesktop.dbus.UInt32;
+import org.freedesktop.dbus.exceptions.DBusException;
+public interface EntryGroup extends DBusInterface
+{
+   public static class StateChanged extends DBusSignal
+   {
+      public final int state;
+      public final String error;
+      public StateChanged(String path, int state, String error) throws DBusException
+      {
+         super(path, state, error);
+         this.state = state;
+         this.error = error;
+      }
+   }
+
+  public void Free();
+  public void Commit();
+  public void Reset();
+  public int GetState();
+  public boolean IsEmpty();
+  public void AddService(int iinterface, int protocol, UInt32 flags, String name, String type, String domain, String host, UInt16 port, List<List<Byte>> txt);
+  public void AddServiceSubtype(int iinterface, int protocol, UInt32 flags, String name, String type, String domain, String subtype);
+  public void UpdateServiceTxt(int iinterface, int protocol, UInt32 flags, String name, String type, String domain, List<List<Byte>> txt);
+  public void AddAddress(int iinterface, int protocol, UInt32 flags, String name, String address);
+  public void AddRecord(int iinterface, int protocol, UInt32 flags, String name, UInt16 clazz, UInt16 type, UInt32 ttl, List<Byte> rdata);
+
+}
Index: /trunk/hacs/src/org/freedesktop/Avahi/NTuple11.java
===================================================================
--- /trunk/hacs/src/org/freedesktop/Avahi/NTuple11.java	(revision 3)
+++ /trunk/hacs/src/org/freedesktop/Avahi/NTuple11.java	(revision 3)
@@ -0,0 +1,43 @@
+package org.freedesktop.Avahi;
+import org.freedesktop.dbus.Position;
+import org.freedesktop.dbus.Tuple;
+/** Just a typed container class */
+public final class NTuple11 <A,B,C,D,E,F,G,H,I,J,K> extends Tuple
+{
+   @Position(0)
+   public final A a;
+   @Position(1)
+   public final B b;
+   @Position(2)
+   public final C c;
+   @Position(3)
+   public final D d;
+   @Position(4)
+   public final E e;
+   @Position(5)
+   public final F f;
+   @Position(6)
+   public final G g;
+   @Position(7)
+   public final H h;
+   @Position(8)
+   public final I i;
+   @Position(9)
+   public final J j;
+   @Position(10)
+   public final K k;
+   public NTuple11(A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k)
+   {
+      this.a = a;
+      this.b = b;
+      this.c = c;
+      this.d = d;
+      this.e = e;
+      this.f = f;
+      this.g = g;
+      this.h = h;
+      this.i = i;
+      this.j = j;
+      this.k = k;
+   }
+}
Index: /trunk/hacs/src/org/freedesktop/Avahi/RecordBrowser.java
===================================================================
--- /trunk/hacs/src/org/freedesktop/Avahi/RecordBrowser.java	(revision 3)
+++ /trunk/hacs/src/org/freedesktop/Avahi/RecordBrowser.java	(revision 3)
@@ -0,0 +1,78 @@
+package org.freedesktop.Avahi;
+import java.util.List;
+import org.freedesktop.dbus.DBusInterface;
+import org.freedesktop.dbus.DBusSignal;
+import org.freedesktop.dbus.UInt16;
+import org.freedesktop.dbus.UInt32;
+import org.freedesktop.dbus.exceptions.DBusException;
+public interface RecordBrowser extends DBusInterface
+{
+   public static class ItemNew extends DBusSignal
+   {
+      public final int iinterface;
+      public final int protocol;
+      public final String name;
+      public final UInt16 clazz;
+      public final UInt16 type;
+      public final List<Byte> rdata;
+      public final UInt32 flags;
+      public ItemNew(String path, int iinterface, int protocol, String name, UInt16 clazz, UInt16 type, List<Byte> rdata, UInt32 flags) throws DBusException
+      {
+         super(path, iinterface, protocol, name, clazz, type, rdata, flags);
+         this.iinterface = iinterface;
+         this.protocol = protocol;
+         this.name = name;
+         this.clazz = clazz;
+         this.type = type;
+         this.rdata = rdata;
+         this.flags = flags;
+      }
+   }
+   public static class ItemRemove extends DBusSignal
+   {
+      public final int iinterface;
+      public final int protocol;
+      public final String name;
+      public final UInt16 clazz;
+      public final UInt16 type;
+      public final List<Byte> rdata;
+      public final UInt32 flags;
+      public ItemRemove(String path, int iinterface, int protocol, String name, UInt16 clazz, UInt16 type, List<Byte> rdata, UInt32 flags) throws DBusException
+      {
+         super(path, iinterface, protocol, name, clazz, type, rdata, flags);
+         this.iinterface = iinterface;
+         this.protocol = protocol;
+         this.name = name;
+         this.clazz = clazz;
+         this.type = type;
+         this.rdata = rdata;
+         this.flags = flags;
+      }
+   }
+   public static class Failure extends DBusSignal
+   {
+      public final String error;
+      public Failure(String path, String error) throws DBusException
+      {
+         super(path, error);
+         this.error = error;
+      }
+   }
+   public static class AllForNow extends DBusSignal
+   {
+      public AllForNow(String path) throws DBusException
+      {
+         super(path);
+      }
+   }
+   public static class CacheExhausted extends DBusSignal
+   {
+      public CacheExhausted(String path) throws DBusException
+      {
+         super(path);
+      }
+   }
+
+  public void Free();
+
+}
Index: /trunk/hacs/src/org/freedesktop/Avahi/Server.java
===================================================================
--- /trunk/hacs/src/org/freedesktop/Avahi/Server.java	(revision 3)
+++ /trunk/hacs/src/org/freedesktop/Avahi/Server.java	(revision 3)
@@ -0,0 +1,47 @@
+package org.freedesktop.Avahi;
+import java.util.List;
+import org.freedesktop.dbus.DBusInterface;
+import org.freedesktop.dbus.DBusSignal;
+import org.freedesktop.dbus.UInt16;
+import org.freedesktop.dbus.UInt32;
+import org.freedesktop.dbus.exceptions.DBusException;
+public interface Server extends DBusInterface
+{
+   public static class StateChanged extends DBusSignal
+   {
+      public final int state;
+      public final String error;
+      public StateChanged(String path, int state, String error) throws DBusException
+      {
+         super(path, state, error);
+         this.state = state;
+         this.error = error;
+      }
+   }
+
+  public String GetVersionString();
+  public UInt32 GetAPIVersion();
+  public String GetHostName();
+  public void SetHostName(String name);
+  public String GetHostNameFqdn();
+  public String GetDomainName();
+  public boolean IsNSSSupportAvailable();
+  public int GetState();
+  public UInt32 GetLocalServiceCookie();
+  public String GetAlternativeHostName(String name);
+  public String GetAlternativeServiceName(String name);
+  public String GetNetworkInterfaceNameByIndex(int index);
+  public int GetNetworkInterfaceIndexByName(String name);
+  public Sextuple<Integer, Integer, String, Integer, String, UInt32> ResolveHostName(int iinterface, int protocol, String name, int aprotocol, UInt32 flags);
+  public Sextuple<Integer, Integer, Integer, String, String, UInt32> ResolveAddress(int iinterface, int protocol, String address, UInt32 flags);
+  public NTuple11<Integer, Integer, String, String, String, String, Integer, String, UInt16, List<List<Byte>>, UInt32> ResolveService(int iinterface, int protocol, String name, String type, String domain, int aprotocol, UInt32 flags);
+  public DBusInterface EntryGroupNew();
+  public DBusInterface DomainBrowserNew(int iinterface, int protocol, String domain, int btype, UInt32 flags);
+  public DBusInterface ServiceTypeBrowserNew(int iinterface, int protocol, String domain, UInt32 flags);
+  public DBusInterface ServiceBrowserNew(int iinterface, int protocol, String type, String domain, UInt32 flags);
+  public DBusInterface ServiceResolverNew(int iinterface, int protocol, String name, String type, String domain, int aprotocol, UInt32 flags);
+  public DBusInterface HostNameResolverNew(int iinterface, int protocol, String name, int aprotocol, UInt32 flags);
+  public DBusInterface AddressResolverNew(int iinterface, int protocol, String address, UInt32 flags);
+  public DBusInterface RecordBrowserNew(int iinterface, int protocol, String name, UInt16 clazz, UInt16 type, UInt32 flags);
+
+}
Index: /trunk/hacs/src/org/freedesktop/Avahi/ServiceBrowser.java
===================================================================
--- /trunk/hacs/src/org/freedesktop/Avahi/ServiceBrowser.java	(revision 3)
+++ /trunk/hacs/src/org/freedesktop/Avahi/ServiceBrowser.java	(revision 3)
@@ -0,0 +1,72 @@
+package org.freedesktop.Avahi;
+import org.freedesktop.dbus.DBusInterface;
+import org.freedesktop.dbus.DBusSignal;
+import org.freedesktop.dbus.UInt32;
+import org.freedesktop.dbus.exceptions.DBusException;
+public interface ServiceBrowser extends DBusInterface
+{
+   public static class ItemNew extends DBusSignal
+   {
+      public final int iinterface;
+      public final int protocol;
+      public final String name;
+      public final String type;
+      public final String domain;
+      public final UInt32 flags;
+      public ItemNew(String path, int iinterface, int protocol, String name, String type, String domain, UInt32 flags) throws DBusException
+      {
+         super(path, iinterface, protocol, name, type, domain, flags);
+         this.iinterface = iinterface;
+         this.protocol = protocol;
+         this.name = name;
+         this.type = type;
+         this.domain = domain;
+         this.flags = flags;
+      }
+   }
+   public static class ItemRemove extends DBusSignal
+   {
+      public final int iinterface;
+      public final int protocol;
+      public final String name;
+      public final String type;
+      public final String domain;
+      public final UInt32 flags;
+      public ItemRemove(String path, int iinterface, int protocol, String name, String type, String domain, UInt32 flags) throws DBusException
+      {
+         super(path, iinterface, protocol, name, type, domain, flags);
+         this.iinterface = iinterface;
+         this.protocol = protocol;
+         this.name = name;
+         this.type = type;
+         this.domain = domain;
+         this.flags = flags;
+      }
+   }
+   public static class Failure extends DBusSignal
+   {
+      public final String error;
+      public Failure(String path, String error) throws DBusException
+      {
+         super(path, error);
+         this.error = error;
+      }
+   }
+   public static class AllForNow extends DBusSignal
+   {
+      public AllForNow(String path) throws DBusException
+      {
+         super(path);
+      }
+   }
+   public static class CacheExhausted extends DBusSignal
+   {
+      public CacheExhausted(String path) throws DBusException
+      {
+         super(path);
+      }
+   }
+
+  public void Free();
+
+}
Index: /trunk/hacs/src/org/freedesktop/Avahi/ServiceResolver.java
===================================================================
--- /trunk/hacs/src/org/freedesktop/Avahi/ServiceResolver.java	(revision 3)
+++ /trunk/hacs/src/org/freedesktop/Avahi/ServiceResolver.java	(revision 3)
@@ -0,0 +1,51 @@
+package org.freedesktop.Avahi;
+import java.util.List;
+import org.freedesktop.dbus.DBusInterface;
+import org.freedesktop.dbus.DBusSignal;
+import org.freedesktop.dbus.UInt16;
+import org.freedesktop.dbus.UInt32;
+import org.freedesktop.dbus.exceptions.DBusException;
+public interface ServiceResolver extends DBusInterface
+{
+   public static class Found extends DBusSignal
+   {
+      public final int iinterface;
+      public final int protocol;
+      public final String name;
+      public final String type;
+      public final String domain;
+      public final String host;
+      public final int aprotocol;
+      public final String address;
+      public final UInt16 port;
+      public final List<List<Byte>> txt;
+      public final UInt32 flags;
+      public Found(String path, int iinterface, int protocol, String name, String type, String domain, String host, int aprotocol, String address, UInt16 port, List<List<Byte>> txt, UInt32 flags) throws DBusException
+      {
+         super(path, iinterface, protocol, name, type, domain, host, aprotocol, address, port, txt, flags);
+         this.iinterface = iinterface;
+         this.protocol = protocol;
+         this.name = name;
+         this.type = type;
+         this.domain = domain;
+         this.host = host;
+         this.aprotocol = aprotocol;
+         this.address = address;
+         this.port = port;
+         this.txt = txt;
+         this.flags = flags;
+      }
+   }
+   public static class Failure extends DBusSignal
+   {
+      public final String error;
+      public Failure(String path, String error) throws DBusException
+      {
+         super(path, error);
+         this.error = error;
+      }
+   }
+
+  public void Free();
+
+}
Index: /trunk/hacs/src/org/freedesktop/Avahi/ServiceTypeBrowser.java
===================================================================
--- /trunk/hacs/src/org/freedesktop/Avahi/ServiceTypeBrowser.java	(revision 3)
+++ /trunk/hacs/src/org/freedesktop/Avahi/ServiceTypeBrowser.java	(revision 3)
@@ -0,0 +1,68 @@
+package org.freedesktop.Avahi;
+import org.freedesktop.dbus.DBusInterface;
+import org.freedesktop.dbus.DBusSignal;
+import org.freedesktop.dbus.UInt32;
+import org.freedesktop.dbus.exceptions.DBusException;
+public interface ServiceTypeBrowser extends DBusInterface
+{
+   public static class ItemNew extends DBusSignal
+   {
+      public final int iinterface;
+      public final int protocol;
+      public final String type;
+      public final String domain;
+      public final UInt32 flags;
+      public ItemNew(String path, int iinterface, int protocol, String type, String domain, UInt32 flags) throws DBusException
+      {
+         super(path, iinterface, protocol, type, domain, flags);
+         this.iinterface = iinterface;
+         this.protocol = protocol;
+         this.type = type;
+         this.domain = domain;
+         this.flags = flags;
+      }
+   }
+   public static class ItemRemove extends DBusSignal
+   {
+      public final int iinterface;
+      public final int protocol;
+      public final String type;
+      public final String domain;
+      public final UInt32 flags;
+      public ItemRemove(String path, int iinterface, int protocol, String type, String domain, UInt32 flags) throws DBusException
+      {
+         super(path, iinterface, protocol, type, domain, flags);
+         this.iinterface = iinterface;
+         this.protocol = protocol;
+         this.type = type;
+         this.domain = domain;
+         this.flags = flags;
+      }
+   }
+   public static class Failure extends DBusSignal
+   {
+      public final String error;
+      public Failure(String path, String error) throws DBusException
+      {
+         super(path, error);
+         this.error = error;
+      }
+   }
+   public static class AllForNow extends DBusSignal
+   {
+      public AllForNow(String path) throws DBusException
+      {
+         super(path);
+      }
+   }
+   public static class CacheExhausted extends DBusSignal
+   {
+      public CacheExhausted(String path) throws DBusException
+      {
+         super(path);
+      }
+   }
+
+  public void Free();
+
+}
Index: /trunk/hacs/src/org/freedesktop/Avahi/Sextuple.java
===================================================================
--- /trunk/hacs/src/org/freedesktop/Avahi/Sextuple.java	(revision 3)
+++ /trunk/hacs/src/org/freedesktop/Avahi/Sextuple.java	(revision 3)
@@ -0,0 +1,28 @@
+package org.freedesktop.Avahi;
+import org.freedesktop.dbus.Position;
+import org.freedesktop.dbus.Tuple;
+/** Just a typed container class */
+public final class Sextuple <A,B,C,D,E,F> extends Tuple
+{
+   @Position(0)
+   public final A a;
+   @Position(1)
+   public final B b;
+   @Position(2)
+   public final C c;
+   @Position(3)
+   public final D d;
+   @Position(4)
+   public final E e;
+   @Position(5)
+   public final F f;
+   public Sextuple(A a, B b, C c, D d, E e, F f)
+   {
+      this.a = a;
+      this.b = b;
+      this.c = c;
+      this.d = d;
+      this.e = e;
+      this.f = f;
+   }
+}
Index: /trunk/hacs/web/WEB-INF/web.xml
===================================================================
--- /trunk/hacs/web/WEB-INF/web.xml	(revision 3)
+++ /trunk/hacs/web/WEB-INF/web.xml	(revision 3)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+    version="2.4">
+
+    <display-name>Home Appliance Control System</display-name>
+    <description>Control your home appliances via Zeroconf and SNMP.</description>
+
+    <servlet>
+        <servlet-name>HACSServlet</servlet-name>
+        <servlet-class>org.ersoft.ooad.servlet.HACSServlet</servlet-class>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>HACSServlet</servlet-name>
+        <url-pattern>/</url-pattern>
+    </servlet-mapping>
+
+</web-app>
