Index: trunk/src/nbproject/jax-ws.xml
===================================================================
--- trunk/src/nbproject/jax-ws.xml	(revision 0)
+++ trunk/src/nbproject/jax-ws.xml	(revision 7)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jax-ws xmlns="http://www.netbeans.org/ns/jax-ws/1">
+  <services>
+  </services>
+  <clients/>
+  <jsr109>false</jsr109>
+</jax-ws>
Index: trunk/src/nbproject/ant-deploy.xml
===================================================================
--- trunk/src/nbproject/ant-deploy.xml	(revision 0)
+++ trunk/src/nbproject/ant-deploy.xml	(revision 7)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project default="-deploy-ant" basedir=".">
+    <target name="-init" if="deploy.ant.enabled">
+        <property file="${deploy.ant.properties.file}"/>
+        <tempfile property="temp.module.folder" prefix="tomcat" destdir="${java.io.tmpdir}"/>
+        <unwar src="${deploy.ant.archive}" dest="${temp.module.folder}">
+            <patternset includes="META-INF/context.xml"/>
+        </unwar>
+        <xmlproperty file="${temp.module.folder}/META-INF/context.xml"/>
+        <delete dir="${temp.module.folder}"/>
+    </target>
+    <target name="-deploy-ant" if="deploy.ant.enabled" depends="-init">
+        <echo message="Deploying ${deploy.ant.archive} to ${Context(path)}"/>
+        <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"
+                 classpath="${tomcat.home}/lib/catalina-ant.jar"/>
+        <deploy url="${tomcat.url}/manager" username="${tomcat.username}"
+                password="${tomcat.password}" path="${Context(path)}"
+                war="${deploy.ant.archive}"/>
+        <property name="deploy.ant.client.url" value="${tomcat.url}${Context(path)}"/>
+    </target>
+    <target name="-undeploy-ant" if="deploy.ant.enabled" depends="-init">
+        <echo message="Undeploying ${Context(path)}"/>
+        <taskdef name="undeploy"  classname="org.apache.catalina.ant.UndeployTask"
+                classpath="${tomcat.home}/lib/catalina-ant.jar"/>
+        <undeploy url="${tomcat.url}/manager" username="${tomcat.username}" 
+                  password="${tomcat.password}" path="${Context(path)}"/>
+    </target>
+</project>
Index: trunk/src/nbproject/build-impl.xml
===================================================================
--- trunk/src/nbproject/build-impl.xml	(revision 0)
+++ trunk/src/nbproject/build-impl.xml	(revision 7)
@@ -0,0 +1,984 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+        *** GENERATED FROM project.xml - DO NOT EDIT  ***
+        ***         EDIT ../build.xml INSTEAD         ***
+
+        For the purpose of easier reading the script
+        is divided into following sections:
+        - initialization
+        - compilation
+        - dist
+        - execution
+        - debugging
+        - javadoc
+        - junit compilation
+        - junit execution
+        - junit debugging
+        - cleanup
+
+        -->
+<project xmlns:webproject1="http://www.netbeans.org/ns/web-project/1" xmlns:webproject2="http://www.netbeans.org/ns/web-project/2" xmlns:webproject3="http://www.netbeans.org/ns/web-project/3" basedir=".." default="default" name="LIDAR_SOAP-impl">
+    <import file="ant-deploy.xml"/>
+    <fail message="Please build using Ant 1.7.1 or higher.">
+        <condition>
+            <not>
+                <antversion atleast="1.7.1"/>
+            </not>
+        </condition>
+    </fail>
+    <target depends="dist,javadoc" description="Build whole project." name="default"/>
+    <!--
+                INITIALIZATION SECTION
+            -->
+    <target name="-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init" name="-init-private">
+        <property file="nbproject/private/private.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private" name="-init-user">
+        <property file="${user.properties.file}"/>
+        <!-- The two properties below are usually overridden -->
+        <!-- by the active platform. Just a fallback. -->
+        <property name="default.javac.source" value="1.4"/>
+        <property name="default.javac.target" value="1.4"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user" name="-init-project">
+        <property file="nbproject/project.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" if="dist.ear.dir" name="-do-ear-init"/>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
+        <condition property="have.tests">
+            <or>
+                <available file="${test.src.dir}"/>
+            </or>
+        </condition>
+        <condition property="have.sources">
+            <or>
+                <available file="${src.dir}"/>
+            </or>
+        </condition>
+        <condition property="netbeans.home+have.tests">
+            <and>
+                <isset property="netbeans.home"/>
+                <isset property="have.tests"/>
+            </and>
+        </condition>
+        <condition property="no.javadoc.preview">
+            <isfalse value="${javadoc.preview}"/>
+        </condition>
+        <property name="javac.compilerargs" value=""/>
+        <condition property="no.deps">
+            <and>
+                <istrue value="${no.dependencies}"/>
+            </and>
+        </condition>
+        <condition property="no.dist.ear.dir">
+            <not>
+                <isset property="dist.ear.dir"/>
+            </not>
+        </condition>
+        <property name="build.web.excludes" value="${build.classes.excludes}"/>
+        <condition property="do.compile.jsps">
+            <istrue value="${compile.jsps}"/>
+        </condition>
+        <condition property="do.debug.server">
+            <or>
+                <not>
+                    <isset property="debug.server"/>
+                </not>
+                <istrue value="${debug.server}"/>
+                <and>
+                    <not>
+                        <istrue value="${debug.server}"/>
+                    </not>
+                    <not>
+                        <istrue value="${debug.client}"/>
+                    </not>
+                </and>
+            </or>
+        </condition>
+        <condition property="do.debug.client">
+            <istrue value="${debug.client}"/>
+        </condition>
+        <condition property="do.display.browser">
+            <istrue value="${display.browser}"/>
+        </condition>
+        <condition property="do.display.browser.debug">
+            <and>
+                <isset property="do.display.browser"/>
+                <not>
+                    <isset property="do.debug.client"/>
+                </not>
+            </and>
+        </condition>
+        <available file="${conf.dir}/MANIFEST.MF" property="has.custom.manifest"/>
+        <available file="${persistence.xml.dir}/persistence.xml" property="has.persistence.xml"/>
+        <condition property="do.war.package.with.custom.manifest">
+            <isset property="has.custom.manifest"/>
+        </condition>
+        <condition property="do.war.package.without.custom.manifest">
+            <not>
+                <isset property="has.custom.manifest"/>
+            </not>
+        </condition>
+        <condition property="do.tmp.war.package.with.custom.manifest">
+            <and>
+                <isset property="has.custom.manifest"/>
+                <or>
+                    <isfalse value="${directory.deployment.supported}"/>
+                    <isset property="dist.ear.dir"/>
+                </or>
+            </and>
+        </condition>
+        <condition property="do.tmp.war.package.without.custom.manifest">
+            <and>
+                <not>
+                    <isset property="has.custom.manifest"/>
+                </not>
+                <or>
+                    <isfalse value="${directory.deployment.supported}"/>
+                    <isset property="dist.ear.dir"/>
+                </or>
+            </and>
+        </condition>
+        <condition property="do.tmp.war.package">
+            <or>
+                <isfalse value="${directory.deployment.supported}"/>
+                <isset property="dist.ear.dir"/>
+            </or>
+        </condition>
+        <property name="build.meta.inf.dir" value="${build.web.dir}/META-INF"/>
+        <condition else="" property="application.args.param" value="${application.args}">
+            <and>
+                <isset property="application.args"/>
+                <not>
+                    <equals arg1="${application.args}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <property name="source.encoding" value="${file.encoding}"/>
+        <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
+            <and>
+                <isset property="javadoc.encoding"/>
+                <not>
+                    <equals arg1="${javadoc.encoding}" arg2=""/>
+                </not>
+            </and>
+        </condition>
+        <property name="javadoc.encoding.used" value="${source.encoding}"/>
+        <property name="includes" value="**"/>
+        <property name="excludes" value=""/>
+        <property name="runmain.jvmargs" value=""/>
+        <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
+        <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
+            <length length="0" string="${endorsed.classpath}" when="greater"/>
+        </condition>
+    </target>
+    <target depends="init" name="-init-cos" unless="deploy.on.save">
+        <condition property="deploy.on.save" value="true">
+            <istrue value="${j2ee.deploy.on.save}"/>
+        </condition>
+    </target>
+    <target name="-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
+        <fail unless="src.dir">Must set src.dir</fail>
+        <fail unless="test.src.dir">Must set test.src.dir</fail>
+        <fail unless="build.dir">Must set build.dir</fail>
+        <fail unless="build.web.dir">Must set build.web.dir</fail>
+        <fail unless="build.generated.dir">Must set build.generated.dir</fail>
+        <fail unless="dist.dir">Must set dist.dir</fail>
+        <fail unless="build.classes.dir">Must set build.classes.dir</fail>
+        <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
+        <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
+        <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
+        <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
+        <fail unless="dist.war">Must set dist.war</fail>
+        <condition property="missing.j2ee.server.home">
+            <and>
+                <matches pattern="j2ee.server.home" string="${j2ee.platform.classpath}"/>
+                <not>
+                    <isset property="j2ee.server.home"/>
+                </not>
+            </and>
+        </condition>
+        <fail if="missing.j2ee.server.home">
+The Java EE server classpath is not correctly set up - server home directory is missing.
+Either open the project in the IDE and assign the server or setup the server classpath manually.
+For example like this:
+   ant -Dj2ee.server.home=&lt;app_server_installation_directory&gt;
+                </fail>
+        <fail unless="j2ee.platform.classpath">
+The Java EE server classpath is not correctly set up. Your active server type is ${j2ee.server.type}.
+Either open the project in the IDE and assign the server or setup the server classpath manually.
+For example like this:
+   ant -Duser.properties.file=&lt;path_to_property_file&gt; (where you put the property "j2ee.platform.classpath" in a .properties file)
+or ant -Dj2ee.platform.classpath=&lt;server_classpath&gt; (where no properties file is used)
+                </fail>
+    </target>
+    <target name="-init-macrodef-property">
+        <macrodef name="property" uri="http://www.netbeans.org/ns/web-project/1">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${@{value}}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}:${j2ee.platform.classpath}" name="classpath"/>
+            <attribute default="${javac.processorpath}" name="processorpath"/>
+            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <mkdir dir="@{apgeneratedsrcdir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" srcdir="@{srcdir}" target="${javac.target}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <compilerarg value="-processorpath"/>
+                    <compilerarg path="@{processorpath}:${empty.dir}"/>
+                    <compilerarg line="${ap.processors.internal}"/>
+                    <compilerarg value="-s"/>
+                    <compilerarg path="@{apgeneratedsrcdir}"/>
+                    <compilerarg line="${ap.proc.none.internal}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}:${j2ee.platform.classpath}" name="classpath"/>
+            <attribute default="${javac.processorpath}" name="processorpath"/>
+            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" srcdir="@{srcdir}" target="${javac.target}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac">
+        <macrodef name="depend" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}:${j2ee.platform.classpath}" name="classpath"/>
+            <sequential>
+                <depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </depend>
+            </sequential>
+        </macrodef>
+        <macrodef name="force-recompile" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <sequential>
+                <fail unless="javac.includes">Must set javac.includes</fail>
+                <pathconvert pathsep="," property="javac.includes.binary">
+                    <path>
+                        <filelist dir="@{destdir}" files="${javac.includes}"/>
+                    </path>
+                    <globmapper from="*.java" to="*.class"/>
+                </pathconvert>
+                <delete>
+                    <files includes="${javac.includes.binary}"/>
+                </delete>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-junit">
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <sequential>
+                <junit dir="${basedir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true" tempdir="${java.io.tmpdir}">
+                    <batchtest todir="${build.test.results.dir}">
+                        <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
+                            <filename name="@{testincludes}"/>
+                        </fileset>
+                    </batchtest>
+                    <classpath>
+                        <path path="${run.test.classpath}:${j2ee.platform.classpath}:${j2ee.platform.embeddableejb.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg line="${runmain.jvmargs}"/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-java">
+        <macrodef name="java" uri="http://www.netbeans.org/ns/web-project/1">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" fork="true">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg line="${runmain.jvmargs}"/>
+                    <classpath>
+                        <path path="@{classpath}:${j2ee.platform.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-nbjsdebug">
+        <macrodef name="nbjsdebugstart" uri="http://www.netbeans.org/ns/web-project/1">
+            <attribute default="${client.url}" name="webUrl"/>
+            <sequential>
+                <nbjsdebugstart urlPart="${client.urlPart}" webUrl="@{webUrl}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-debug-args" name="-init-macrodef-nbjpda">
+        <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/web-project/1">
+            <attribute default="${main.class}" name="name"/>
+            <attribute default="${debug.classpath}:${j2ee.platform.classpath}" name="classpath"/>
+            <sequential>
+                <nbjpdastart addressproperty="jpda.address" name="@{name}" transport="${debug-transport}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </nbjpdastart>
+            </sequential>
+        </macrodef>
+        <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/web-project/1">
+            <attribute default="${build.classes.dir}" name="dir"/>
+            <sequential>
+                <nbjpdareload>
+                    <fileset dir="@{dir}" includes="${fix.classes}">
+                        <include name="${fix.includes}*.class"/>
+                    </fileset>
+                </nbjpdareload>
+            </sequential>
+        </macrodef>
+        <macrodef name="nbjpdaappreloaded" uri="http://www.netbeans.org/ns/web-project/1">
+            <sequential>
+                <nbjpdaappreloaded/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-debug-args">
+        <property name="version-output" value="java version &quot;${ant.java.version}"/>
+        <condition property="have-jdk-older-than-1.4">
+            <or>
+                <contains string="${version-output}" substring="java version &quot;1.0"/>
+                <contains string="${version-output}" substring="java version &quot;1.1"/>
+                <contains string="${version-output}" substring="java version &quot;1.2"/>
+                <contains string="${version-output}" substring="java version &quot;1.3"/>
+            </or>
+        </condition>
+        <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
+            <istrue value="${have-jdk-older-than-1.4}"/>
+        </condition>
+        <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
+            <os family="windows"/>
+        </condition>
+        <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
+            <isset property="debug.transport"/>
+        </condition>
+    </target>
+    <target depends="-init-debug-args" name="-init-macrodef-debug">
+        <macrodef name="debug" uri="http://www.netbeans.org/ns/web-project/1">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${debug.classpath}:${j2ee.platform.classpath}" name="classpath"/>
+            <attribute default="${application.args.param}" name="args"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" fork="true">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <jvmarg line="${runmain.jvmargs}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <arg line="@{args}"/>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-taskdefs">
+        <fail unless="libs.CopyLibs.classpath">
+The libs.CopyLibs.classpath property is not set up.
+This property must point to 
+org-netbeans-modules-java-j2seproject-copylibstask.jar file which is part
+of NetBeans IDE installation and is usually located at 
+&lt;netbeans_installation&gt;/java&lt;version&gt;/ant/extra folder.
+Either open the project in the IDE and make sure CopyLibs library
+exists or setup the property manually. For example like this:
+ ant -Dlibs.CopyLibs.classpath=a/path/to/org-netbeans-modules-java-j2seproject-copylibstask.jar
+                </fail>
+        <taskdef classpath="${libs.CopyLibs.classpath}" resource="org/netbeans/modules/java/j2seproject/copylibstask/antlib.xml"/>
+    </target>
+    <target name="-init-ap-cmdline-properties">
+        <property name="annotation.processing.enabled" value="true"/>
+        <property name="annotation.processing.processors.list" value=""/>
+        <property name="annotation.processing.run.all.processors" value="true"/>
+        <property name="javac.processorpath" value="${javac.classpath}"/>
+        <property name="javac.test.processorpath" value="${javac.test.classpath}"/>
+        <condition property="ap.supported.internal" value="true">
+            <not>
+                <matches pattern="1\.[0-5](\..*)?" string="${javac.source}"/>
+            </not>
+        </condition>
+    </target>
+    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-ap-cmdline-supported">
+        <condition else="" property="ap.processors.internal" value="-processor ${annotation.processing.processors.list}">
+            <isfalse value="${annotation.processing.run.all.processors}"/>
+        </condition>
+        <condition else="" property="ap.proc.none.internal" value="-proc:none">
+            <isfalse value="${annotation.processing.enabled}"/>
+        </condition>
+    </target>
+    <target depends="-init-ap-cmdline-properties,-init-ap-cmdline-supported" name="-init-ap-cmdline">
+        <property name="ap.cmd.line.internal" value=""/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-java,-init-macrodef-nbjpda,-init-macrodef-nbjsdebug,-init-macrodef-debug,-init-taskdefs,-init-ap-cmdline" name="init"/>
+    <!--
+                COMPILATION SECTION
+            -->
+    <target depends="init" if="no.dist.ear.dir" name="deps-module-jar" unless="no.deps"/>
+    <target depends="init" if="dist.ear.dir" name="deps-ear-jar" unless="no.deps"/>
+    <target depends="init, deps-module-jar, deps-ear-jar" name="deps-jar" unless="no.deps"/>
+    <target depends="init,deps-jar" name="-pre-pre-compile">
+        <mkdir dir="${build.classes.dir}"/>
+    </target>
+    <target name="-pre-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-copy-webdir">
+        <copy todir="${build.web.dir}">
+            <fileset dir="${web.docbase.dir}" excludes="${build.web.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+        <copy todir="${build.web.dir}/WEB-INF">
+            <fileset dir="${webinf.dir}" excludes="${build.web.excludes}"/>
+        </copy>
+    </target>
+    <target depends="init, deps-jar, -pre-pre-compile, -pre-compile, -copy-manifest, -copy-persistence-xml, -copy-webdir, library-inclusion-in-archive,library-inclusion-in-manifest" if="have.sources" name="-do-compile">
+        <webproject2:javac destdir="${build.classes.dir}" gensrcdir="${build.generated.sources.dir}"/>
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target if="has.custom.manifest" name="-copy-manifest">
+        <mkdir dir="${build.meta.inf.dir}"/>
+        <copy todir="${build.meta.inf.dir}">
+            <fileset dir="${conf.dir}" includes="MANIFEST.MF"/>
+        </copy>
+    </target>
+    <target if="has.persistence.xml" name="-copy-persistence-xml">
+        <mkdir dir="${build.web.dir}/WEB-INF/classes/META-INF"/>
+        <copy todir="${build.web.dir}/WEB-INF/classes/META-INF">
+            <fileset dir="${persistence.xml.dir}" includes="persistence.xml"/>
+        </copy>
+    </target>
+    <target name="-post-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
+    <target name="-pre-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <webproject2:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}"/>
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
+    <target depends="compile" description="Test compile JSP pages to expose compilation errors." if="do.compile.jsps" name="compile-jsps">
+        <mkdir dir="${build.generated.dir}/src"/>
+        <java classname="org.netbeans.modules.web.project.ant.JspC" failonerror="true" fork="true">
+            <arg value="-uriroot"/>
+            <arg file="${basedir}/${build.web.dir}"/>
+            <arg value="-d"/>
+            <arg file="${basedir}/${build.generated.dir}/src"/>
+            <arg value="-die1"/>
+            <arg value="-compilerSourceVM ${javac.source}"/>
+            <arg value="-compilerTargetVM ${javac.target}"/>
+            <arg value="-javaEncoding ${source.encoding}"/>
+            <classpath path="${java.home}/../lib/tools.jar:${libs.jsp-compiler.classpath}:${libs.jsp-compilation.classpath}"/>
+        </java>
+        <mkdir dir="${build.generated.dir}/classes"/>
+        <webproject2:javac classpath="${build.classes.dir}:${libs.jsp-compilation.classpath}:${javac.classpath}:${j2ee.platform.classpath}" destdir="${build.generated.dir}/classes" srcdir="${build.generated.dir}/src"/>
+    </target>
+    <target depends="compile" if="jsp.includes" name="-do-compile-single-jsp">
+        <fail unless="javac.jsp.includes">Must select some files in the IDE or set javac.jsp.includes</fail>
+        <mkdir dir="${build.generated.dir}/src"/>
+        <java classname="org.netbeans.modules.web.project.ant.JspCSingle" failonerror="true" fork="true">
+            <arg value="-uriroot"/>
+            <arg file="${basedir}/${build.web.dir}"/>
+            <arg value="-d"/>
+            <arg file="${basedir}/${build.generated.dir}/src"/>
+            <arg value="-die1"/>
+            <arg value="-jspc.files"/>
+            <arg path="${jsp.includes}"/>
+            <arg value="-compilerSourceVM ${javac.source}"/>
+            <arg value="-compilerTargetVM ${javac.target}"/>
+            <arg value="-javaEncoding ${source.encoding}"/>
+            <classpath path="${java.home}/../lib/tools.jar:${libs.jsp-compiler.classpath}:${libs.jsp-compilation.classpath}"/>
+        </java>
+        <mkdir dir="${build.generated.dir}/classes"/>
+        <webproject2:javac classpath="${build.classes.dir}:${libs.jsp-compilation.classpath}:${javac.classpath}:${j2ee.platform.classpath}" destdir="${build.generated.dir}/classes" srcdir="${build.generated.dir}/src">
+            <customize>
+                <patternset includes="${javac.jsp.includes}"/>
+            </customize>
+        </webproject2:javac>
+    </target>
+    <target name="compile-single-jsp">
+        <fail unless="jsp.includes">Must select a file in the IDE or set jsp.includes</fail>
+        <antcall target="-do-compile-single-jsp"/>
+    </target>
+    <!--
+                DIST BUILDING SECTION
+            -->
+    <target name="-pre-dist">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,compile-jsps,-pre-dist" if="do.war.package.without.custom.manifest" name="-do-dist-without-manifest">
+        <dirname file="${dist.war}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+        <jar compress="${jar.compress}" jarfile="${dist.war}">
+            <fileset dir="${build.web.dir}"/>
+        </jar>
+    </target>
+    <target depends="init,compile,compile-jsps,-pre-dist" if="do.war.package.with.custom.manifest" name="-do-dist-with-manifest">
+        <dirname file="${dist.war}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+        <jar compress="${jar.compress}" jarfile="${dist.war}" manifest="${build.meta.inf.dir}/MANIFEST.MF">
+            <fileset dir="${build.web.dir}"/>
+        </jar>
+    </target>
+    <target depends="init,compile,compile-jsps,-pre-dist" if="do.tmp.war.package.without.custom.manifest" name="-do-tmp-dist-without-manifest">
+        <dirname file="${dist.war}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+        <jar compress="${jar.compress}" jarfile="${dist.war}">
+            <fileset dir="${build.web.dir}"/>
+        </jar>
+    </target>
+    <target depends="init,compile,compile-jsps,-pre-dist" if="do.tmp.war.package.with.custom.manifest" name="-do-tmp-dist-with-manifest">
+        <dirname file="${dist.war}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+        <jar compress="${jar.compress}" jarfile="${dist.war}" manifest="${build.meta.inf.dir}/MANIFEST.MF">
+            <fileset dir="${build.web.dir}"/>
+        </jar>
+    </target>
+    <target depends="init,compile,compile-jsps,-pre-dist,-do-dist-with-manifest,-do-dist-without-manifest" name="do-dist"/>
+    <target depends="init" if="dist.ear.dir" name="library-inclusion-in-manifest">
+        <copyfiles files="${libs.hibernate-support.classpath}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${libs.ejb3-persistence.classpath}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${file.reference.mysql-connector-java-5.1.6-bin.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${libs.metro.classpath}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${file.reference.gson-1.3.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${libs.JavaComm.classpath}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${file.reference.JPam-1.1.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${file.reference.commons-configuration-1.6.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${file.reference.commons-lang-2.5.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${file.reference.commons-collections-3.2.1.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${file.reference.gson-1.3.jar-1}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
+        <mkdir dir="${build.web.dir}/META-INF"/>
+        <manifest file="${build.web.dir}/META-INF/MANIFEST.MF" mode="update"/>
+    </target>
+    <target depends="init" name="library-inclusion-in-archive" unless="dist.ear.dir">
+        <copyfiles files="${libs.hibernate-support.classpath}" todir="${build.web.dir}/WEB-INF/lib"/>
+        <copyfiles files="${libs.ejb3-persistence.classpath}" todir="${build.web.dir}/WEB-INF/lib"/>
+        <copyfiles files="${file.reference.mysql-connector-java-5.1.6-bin.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
+        <copyfiles files="${libs.metro.classpath}" todir="${build.web.dir}/WEB-INF/lib"/>
+        <copyfiles files="${file.reference.gson-1.3.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
+        <copyfiles files="${libs.JavaComm.classpath}" todir="${build.web.dir}/WEB-INF/lib"/>
+        <copyfiles files="${file.reference.JPam-1.1.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
+        <copyfiles files="${file.reference.commons-configuration-1.6.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
+        <copyfiles files="${file.reference.commons-lang-2.5.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
+        <copyfiles files="${file.reference.commons-collections-3.2.1.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
+        <copyfiles files="${file.reference.gson-1.3.jar-1}" todir="${build.web.dir}/WEB-INF/lib"/>
+    </target>
+    <target depends="init" if="dist.ear.dir" name="-clean-webinf-lib">
+        <delete dir="${build.web.dir}/WEB-INF/lib"/>
+    </target>
+    <target depends="init,-clean-webinf-lib,compile,compile-jsps,-pre-dist,library-inclusion-in-manifest" if="do.tmp.war.package" name="do-ear-dist">
+        <dirname file="${dist.ear.war}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+        <jar compress="${jar.compress}" jarfile="${dist.ear.war}" manifest="${build.web.dir}/META-INF/MANIFEST.MF">
+            <fileset dir="${build.web.dir}"/>
+        </jar>
+    </target>
+    <target name="-post-dist">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-dist,do-dist,-post-dist" description="Build distribution (WAR)." name="dist"/>
+    <target depends="init,-clean-webinf-lib,-init-cos,compile,-pre-dist,do-ear-dist,-post-dist" description="Build distribution (WAR) to be packaged into an EAR." name="dist-ear"/>
+    <!--
+                EXECUTION SECTION
+            -->
+    <target depends="run-deploy,run-display-browser" description="Deploy to server and show in browser." name="run"/>
+    <target name="-pre-run-deploy">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-post-run-deploy">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-pre-nbmodule-run-deploy">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- This target can be overriden by NetBeans modules. Don't override it directly, use -pre-run-deploy task instead. -->
+    </target>
+    <target name="-post-nbmodule-run-deploy">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- This target can be overriden by NetBeans modules. Don't override it directly, use -post-run-deploy task instead. -->
+    </target>
+    <target name="-run-deploy-am">
+        <!-- Task to deploy to the Access Manager runtime. -->
+    </target>
+    <target depends="init,-init-cos,compile,compile-jsps,-do-compile-single-jsp,-pre-dist,-do-tmp-dist-with-manifest,-do-tmp-dist-without-manifest,-pre-run-deploy,-pre-nbmodule-run-deploy,-run-deploy-nb,-init-deploy-ant,-deploy-ant,-run-deploy-am,-post-nbmodule-run-deploy,-post-run-deploy" name="run-deploy">
+        <nbjpdaappreloaded/>
+    </target>
+    <target if="netbeans.home" name="-run-deploy-nb">
+        <nbdeploy clientUrlPart="${client.urlPart}" debugmode="false" forceRedeploy="${forceRedeploy}"/>
+    </target>
+    <target name="-init-deploy-ant" unless="netbeans.home">
+        <property name="deploy.ant.archive" value="${dist.war}"/>
+        <property name="deploy.ant.docbase.dir" value="${web.docbase.dir}"/>
+        <property name="deploy.ant.resource.dir" value="${resource.dir}"/>
+        <property name="deploy.ant.enabled" value="true"/>
+    </target>
+    <target depends="dist,-run-undeploy-nb,-init-deploy-ant,-undeploy-ant" name="run-undeploy"/>
+    <target if="netbeans.home" name="-run-undeploy-nb">
+        <fail message="Undeploy is not supported from within the IDE"/>
+    </target>
+    <target depends="init,-pre-dist,dist,-post-dist" name="verify">
+        <nbverify file="${dist.war}"/>
+    </target>
+    <target depends="run-deploy,-init-display-browser,-display-browser-nb,-display-browser-cl" name="run-display-browser"/>
+    <target if="do.display.browser" name="-init-display-browser">
+        <condition property="do.display.browser.nb">
+            <isset property="netbeans.home"/>
+        </condition>
+        <condition property="do.display.browser.cl">
+            <isset property="deploy.ant.enabled"/>
+        </condition>
+    </target>
+    <target if="do.display.browser.nb" name="-display-browser-nb">
+        <nbbrowse url="${client.url}"/>
+    </target>
+    <target if="do.display.browser.cl" name="-get-browser" unless="browser">
+        <condition property="browser" value="rundll32">
+            <os family="windows"/>
+        </condition>
+        <condition else="" property="browser.args" value="url.dll,FileProtocolHandler">
+            <os family="windows"/>
+        </condition>
+        <condition property="browser" value="/usr/bin/open">
+            <os family="mac"/>
+        </condition>
+        <property environment="env"/>
+        <condition property="browser" value="${env.BROWSER}">
+            <isset property="env.BROWSER"/>
+        </condition>
+        <condition property="browser" value="/usr/bin/firefox">
+            <available file="/usr/bin/firefox"/>
+        </condition>
+        <condition property="browser" value="/usr/local/firefox/firefox">
+            <available file="/usr/local/firefox/firefox"/>
+        </condition>
+        <condition property="browser" value="/usr/bin/mozilla">
+            <available file="/usr/bin/mozilla"/>
+        </condition>
+        <condition property="browser" value="/usr/local/mozilla/mozilla">
+            <available file="/usr/local/mozilla/mozilla"/>
+        </condition>
+        <condition property="browser" value="/usr/sfw/lib/firefox/firefox">
+            <available file="/usr/sfw/lib/firefox/firefox"/>
+        </condition>
+        <condition property="browser" value="/opt/csw/bin/firefox">
+            <available file="/opt/csw/bin/firefox"/>
+        </condition>
+        <condition property="browser" value="/usr/sfw/lib/mozilla/mozilla">
+            <available file="/usr/sfw/lib/mozilla/mozilla"/>
+        </condition>
+        <condition property="browser" value="/opt/csw/bin/mozilla">
+            <available file="/opt/csw/bin/mozilla"/>
+        </condition>
+    </target>
+    <target depends="-get-browser" if="do.display.browser.cl" name="-display-browser-cl">
+        <fail unless="browser">
+                    Browser not found, cannot launch the deployed application. Try to set the BROWSER environment variable.
+                </fail>
+        <property name="browse.url" value="${deploy.ant.client.url}${client.urlPart}"/>
+        <echo>Launching ${browse.url}</echo>
+        <exec executable="${browser}" spawn="true">
+            <arg line="${browser.args} ${browse.url}"/>
+        </exec>
+    </target>
+    <target depends="init,-init-cos,compile-single" name="run-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <webproject1:java classname="${run.class}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" name="run-test-with-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <webproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
+    </target>
+    <!--
+                DEBUGGING SECTION
+            -->
+    <target depends="init,-init-cos,compile,compile-jsps,-do-compile-single-jsp,-pre-dist,-do-tmp-dist-with-manifest,-do-tmp-dist-without-manifest" description="Debug project in IDE." if="netbeans.home" name="debug">
+        <nbstartserver debugmode="true"/>
+        <antcall target="connect-debugger"/>
+        <nbdeploy clientUrlPart="${client.urlPart}" debugmode="true" forceRedeploy="true"/>
+        <antcall target="debug-display-browser"/>
+        <antcall target="connect-client-debugger"/>
+    </target>
+    <target if="do.debug.server" name="connect-debugger" unless="is.debugged">
+        <nbjpdaconnect address="${jpda.address}" host="${jpda.host}" name="${name}" transport="${jpda.transport}">
+            <classpath>
+                <path path="${debug.classpath}:${j2ee.platform.classpath}"/>
+            </classpath>
+            <sourcepath>
+                <path path="${web.docbase.dir}"/>
+            </sourcepath>
+        </nbjpdaconnect>
+    </target>
+    <target if="do.display.browser.debug" name="debug-display-browser">
+        <nbbrowse url="${client.url}"/>
+    </target>
+    <target if="do.debug.client" name="connect-client-debugger">
+        <webproject1:nbjsdebugstart webUrl="${client.url}"/>
+    </target>
+    <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <webproject1:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
+    <target depends="init,compile,compile-jsps,-do-compile-single-jsp,debug" if="netbeans.home" name="debug-single"/>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
+        <webproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
+    </target>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger">
+        <webproject1:nbjpdastart name="${debug.class}"/>
+    </target>
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <webproject1:debug classname="${debug.class}"/>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single-main"/>
+    <target depends="init" name="-pre-debug-fix">
+        <fail unless="fix.includes">Must set fix.includes</fail>
+        <property name="javac.includes" value="${fix.includes}.java"/>
+    </target>
+    <target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
+        <webproject1:nbjpdareload/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
+    <!--
+                JAVADOC SECTION
+            -->
+    <target depends="init" if="have.sources" name="javadoc-build">
+        <mkdir dir="${dist.javadoc.dir}"/>
+        <javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
+            <classpath>
+                <path path="${javac.classpath}:${j2ee.platform.classpath}"/>
+            </classpath>
+            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
+                <filename name="**/*.java"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/*.java"/>
+            </fileset>
+        </javadoc>
+    </target>
+    <target depends="init,javadoc-build" if="netbeans.home" name="javadoc-browse" unless="no.javadoc.preview">
+        <nbbrowse file="${dist.javadoc.dir}/index.html"/>
+    </target>
+    <target depends="init,javadoc-build,javadoc-browse" description="Build Javadoc." name="javadoc"/>
+    <!--
+                
+                JUNIT COMPILATION SECTION
+            -->
+    <target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
+        <mkdir dir="${build.test.classes.dir}"/>
+        <property name="j2ee.platform.embeddableejb.classpath" value=""/>
+    </target>
+    <target name="-pre-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test" if="have.tests" name="-do-compile-test">
+        <webproject2:javac classpath="${javac.test.classpath}:${j2ee.platform.classpath}:${j2ee.platform.embeddableejb.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
+        <copy todir="${build.test.classes.dir}">
+            <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
+    <target name="-pre-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <webproject2:javac classpath="${javac.test.classpath}:${j2ee.platform.classpath}:${j2ee.platform.embeddableejb.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" srcdir="${test.src.dir}"/>
+        <copy todir="${build.test.classes.dir}">
+            <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
+    <!--
+                
+                JUNIT EXECUTION SECTION
+            -->
+    <target depends="init" if="have.tests" name="-pre-test-run">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
+        <webproject2:junit testincludes="**/*Test.java"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init" if="have.tests" name="test-report"/>
+    <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
+    <target depends="init" if="have.tests" name="-pre-test-run-single">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
+        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+        <webproject2:junit excludes="" includes="${test.includes}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
+    <!--
+                
+                JUNIT DEBUGGING SECTION
+            -->
+    <target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
+        <delete file="${test.report.file}"/>
+        <!-- must exist, otherwise the XML formatter would fail -->
+        <mkdir dir="${build.test.results.dir}"/>
+        <webproject1:debug args="${test.class}" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}:${j2ee.platform.embeddableejb.classpath}">
+            <customize>
+                <arg value="showoutput=true"/>
+                <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
+                <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
+            </customize>
+        </webproject1:debug>
+    </target>
+    <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
+        <webproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
+    </target>
+    <target depends="init,compile-test,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
+    <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
+        <webproject1:nbjpdareload dir="${build.test.classes.dir}"/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
+    <!--
+                
+                CLEANUP SECTION
+            -->
+    <target depends="init" if="no.dist.ear.dir" name="deps-clean" unless="no.deps"/>
+    <target depends="init" name="do-clean">
+        <condition property="build.dir.to.clean" value="${build.web.dir}">
+            <isset property="dist.ear.dir"/>
+        </condition>
+        <property name="build.dir.to.clean" value="${build.web.dir}"/>
+        <delete includeEmptyDirs="true" quiet="true">
+            <fileset dir="${build.dir.to.clean}/WEB-INF/lib"/>
+        </delete>
+        <delete dir="${build.dir}"/>
+        <available file="${build.dir.to.clean}/WEB-INF/lib" property="status.clean-failed" type="dir"/>
+        <delete dir="${dist.dir}"/>
+    </target>
+    <target depends="do-clean" if="status.clean-failed" name="check-clean">
+        <echo message="Warning: unable to delete some files in ${build.web.dir}/WEB-INF/lib - they are probably locked by the J2EE server. "/>
+        <echo level="info" message="To delete all files undeploy the module from Server Registry in Runtime tab and then use Clean again."/>
+    </target>
+    <target depends="init" if="netbeans.home" name="undeploy-clean">
+        <nbundeploy failOnError="false" startServer="false"/>
+    </target>
+    <target name="-post-clean">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,undeploy-clean,deps-clean,do-clean,check-clean,-post-clean" description="Clean build products." name="clean"/>
+    <target depends="clean" description="Clean build products." name="clean-ear"/>
+</project>
Index: trunk/src/nbproject/project.properties
===================================================================
--- trunk/src/nbproject/project.properties	(revision 0)
+++ trunk/src/nbproject/project.properties	(revision 7)
@@ -0,0 +1,98 @@
+annotation.processing.enabled=true
+annotation.processing.enabled.in.editor=true
+annotation.processing.processors.list=
+annotation.processing.run.all.processors=true
+annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
+build.classes.dir=${build.web.dir}/WEB-INF/classes
+build.classes.excludes=**/*.java,**/*.form
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+build.web.dir=${build.dir}/web
+build.web.excludes=${build.classes.excludes}
+client.urlPart=
+compile.jsps=false
+conf.dir=${source.root}/conf
+debug.classpath=${build.classes.dir}:${javac.classpath}
+debug.test.classpath=\
+    ${run.test.classpath}
+display.browser=true
+dist.dir=dist
+dist.ear.war=${dist.dir}/${war.ear.name}
+dist.javadoc.dir=${dist.dir}/javadoc
+dist.war=${dist.dir}/${war.name}
+endorsed.classpath=
+excludes=
+file.reference.commons-collections-3.2.1.jar=/home/cime/Documents/commons-collections-3.2.1/commons-collections-3.2.1.jar
+file.reference.commons-configuration-1.6.jar=/home/cime/Documents/commons-configuration-1.6/commons-configuration-1.6.jar
+file.reference.commons-lang-2.5.jar=/home/cime/Documents/commons-lang-2.5/commons-lang-2.5.jar
+file.reference.gson-1.3.jar=lib/gson-1.3.jar
+file.reference.gson-1.3.jar-1=/home/cime/Documents/gson-1.3.jar
+file.reference.JPam-1.1.jar=/home/cime/Documents/JPam-1.1/JPam-1.1.jar
+file.reference.mysql-connector-java-5.1.6-bin.jar=/home/cime/netbeans-6.9/ide/modules/ext/mysql-connector-java-5.1.6-bin.jar
+includes=**
+j2ee.deploy.on.save=true
+j2ee.platform=1.5
+j2ee.platform.classpath=${j2ee.server.home}/lib/jasper-el.jar:${j2ee.server.home}/lib/catalina-ha.jar:${j2ee.server.home}/lib/el-api.jar:${j2ee.server.home}/lib/tomcat-coyote.jar:${j2ee.server.home}/lib/jasper.jar:${j2ee.server.home}/lib/tomcat-dbcp.jar:${j2ee.server.home}/lib/tomcat-i18n-fr.jar:${j2ee.server.home}/lib/catalina.jar:${j2ee.server.home}/lib/catalina-ant.jar:${j2ee.server.home}/lib/tomcat-i18n-es.jar:${j2ee.server.home}/lib/catalina-tribes.jar:${j2ee.server.home}/lib/tomcat-i18n-ja.jar:${j2ee.server.home}/lib/jsp-api.jar:${j2ee.server.home}/lib/annotations-api.jar:${j2ee.server.home}/lib/servlet-api.jar:${j2ee.server.home}/bin/tomcat-juli.jar
+j2ee.server.type=Tomcat60
+jar.compress=false
+javac.classpath=\
+    ${libs.hibernate-support.classpath}:\
+    ${libs.ejb3-persistence.classpath}:\
+    ${file.reference.mysql-connector-java-5.1.6-bin.jar}:\
+    ${libs.metro.classpath}:\
+    ${file.reference.gson-1.3.jar}:\
+    ${libs.JavaComm.classpath}:\
+    ${file.reference.JPam-1.1.jar}:\
+    ${file.reference.commons-configuration-1.6.jar}:\
+    ${file.reference.commons-lang-2.5.jar}:\
+    ${file.reference.commons-collections-3.2.1.jar}:\
+    ${file.reference.gson-1.3.jar-1}
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.debug=true
+javac.deprecation=false
+javac.processorpath=\
+    ${javac.classpath}
+javac.source=1.5
+javac.target=1.5
+javac.test.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}:\
+    ${libs.junit.classpath}:\
+    ${libs.junit_4.classpath}
+javac.test.processorpath=\
+    ${javac.test.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.preview=true
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+lib.dir=${web.docbase.dir}/WEB-INF/lib
+persistence.xml.dir=${conf.dir}
+platform.active=default_platform
+resource.dir=setup
+run.test.classpath=\
+    ${javac.test.classpath}:\
+    ${build.test.classes.dir}
+# Space-separated list of JVM arguments used when running a class with a main method or a unit test
+# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value):
+runmain.jvmargs=
+source.encoding=UTF-8
+source.root=src
+src.dir=${source.root}/java
+test.src.dir=test
+war.content.additional=
+war.ear.name=LIDAR_SOAP.war
+war.name=LIDAR_SOAP.war
+web.docbase.dir=web
+webinf.dir=web/WEB-INF
Index: trunk/src/nbproject/project.xml
===================================================================
--- trunk/src/nbproject/project.xml	(revision 0)
+++ trunk/src/nbproject/project.xml	(revision 7)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.web.project</type>
+    <configuration>
+        <buildExtensions xmlns="http://www.netbeans.org/ns/ant-build-extender/1"/>
+        <data xmlns="http://www.netbeans.org/ns/web-project/3">
+            <name>LIDAR SOAP</name>
+            <minimum-ant-version>1.6.5</minimum-ant-version>
+            <web-module-libraries>
+                <library dirs="200">
+                    <file>${libs.hibernate-support.classpath}</file>
+                    <path-in-war>WEB-INF/lib</path-in-war>
+                </library>
+                <library dirs="200">
+                    <file>${libs.ejb3-persistence.classpath}</file>
+                    <path-in-war>WEB-INF/lib</path-in-war>
+                </library>
+                <library dirs="200">
+                    <file>${file.reference.mysql-connector-java-5.1.6-bin.jar}</file>
+                    <path-in-war>WEB-INF/lib</path-in-war>
+                </library>
+                <library dirs="200">
+                    <file>${libs.metro.classpath}</file>
+                    <path-in-war>WEB-INF/lib</path-in-war>
+                </library>
+                <library dirs="200">
+                    <file>${file.reference.gson-1.3.jar}</file>
+                    <path-in-war>WEB-INF/lib</path-in-war>
+                </library>
+                <library dirs="200">
+                    <file>${libs.JavaComm.classpath}</file>
+                    <path-in-war>WEB-INF/lib</path-in-war>
+                </library>
+                <library dirs="200">
+                    <file>${file.reference.JPam-1.1.jar}</file>
+                    <path-in-war>WEB-INF/lib</path-in-war>
+                </library>
+                <library dirs="200">
+                    <file>${file.reference.commons-configuration-1.6.jar}</file>
+                    <path-in-war>WEB-INF/lib</path-in-war>
+                </library>
+                <library dirs="200">
+                    <file>${file.reference.commons-lang-2.5.jar}</file>
+                    <path-in-war>WEB-INF/lib</path-in-war>
+                </library>
+                <library dirs="200">
+                    <file>${file.reference.commons-collections-3.2.1.jar}</file>
+                    <path-in-war>WEB-INF/lib</path-in-war>
+                </library>
+                <library dirs="200">
+                    <file>${file.reference.gson-1.3.jar-1}</file>
+                    <path-in-war>WEB-INF/lib</path-in-war>
+                </library>
+            </web-module-libraries>
+            <web-module-additional-libraries/>
+            <source-roots>
+                <root id="src.dir"/>
+            </source-roots>
+            <test-roots>
+                <root id="test.src.dir"/>
+            </test-roots>
+        </data>
+    </configuration>
+</project>
Index: trunk/src/nbproject/genfiles.properties
===================================================================
--- trunk/src/nbproject/genfiles.properties	(revision 0)
+++ trunk/src/nbproject/genfiles.properties	(revision 7)
@@ -0,0 +1,9 @@
+build.xml.data.CRC32=8d3b9fa6
+build.xml.script.CRC32=6ef1775d
+build.xml.stylesheet.CRC32=651128d4@1.24.1.1
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=8d3b9fa6
+nbproject/build-impl.xml.script.CRC32=6370b77c
+nbproject/build-impl.xml.stylesheet.CRC32=8335d67d@1.24.1.1
+nbproject/jaxws-build.xml.stylesheet.CRC32=b0a0073f
Index: trunk/src/nbproject
===================================================================
--- trunk/src/nbproject	(revision 0)
+++ trunk/src/nbproject	(revision 7)

Property changes on: trunk/src/nbproject
___________________________________________________________________
Added: svn:ignore
## -0,0 +1 ##
+private
Index: trunk/src/src/conf/MANIFEST.MF
===================================================================
--- trunk/src/src/conf/MANIFEST.MF	(revision 0)
+++ trunk/src/src/conf/MANIFEST.MF	(revision 7)
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+
Index: trunk/src/src/java/hibernate.cfg.xml
===================================================================
--- trunk/src/src/java/hibernate.cfg.xml	(revision 0)
+++ trunk/src/src/java/hibernate.cfg.xml	(revision 7)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+<hibernate-configuration>
+  <session-factory>
+    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
+    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
+    <property name="hibernate.connection.url">jdbc:mysql://localhost/lidar</property>
+    <property name="hibernate.connection.username">root</property>
+    <property name="hibernate.connection.password">mwd40</property>
+    <!-- Enable Hibernate's automatic session context management -->
+    <property name="current_session_context_class">thread</property>
+    
+    <!--<mapping resource="hibernate.hbm.xml"/>-->
+    <mapping class="org.lidar.db.Client"/>
+    <mapping class="org.lidar.db.Log"/>
+  </session-factory>
+</hibernate-configuration>
Index: trunk/src/src/java/hibernate.hbm.xml
===================================================================
--- trunk/src/src/java/hibernate.hbm.xml	(revision 0)
+++ trunk/src/src/java/hibernate.hbm.xml	(revision 7)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping>
+  <class name="org.lidar.db.Log" table="log">
+    <id column="id" name="id">
+      <generator class="increment"/>
+    </id>
+    <property name="date"/>
+    <property name="type"/>
+    <property name="message"/>
+  </class>
+  <!--<class name="org.lidar.db.Client" table="client">
+    <id column="id" name="id">
+      <generator class="increment"/>
+    </id>
+    <property name="key"/>
+    <property name="token"/>
+  </class>-->
+  <class name="org.lidar.db.AuthTokens" table="authentiaction_token">
+    <id column="id" name="id">
+      <generator class="increment"/>
+    </id>
+    <property name="token"/>
+    <property name="access"/>
+    <property name="ip"/>
+  </class>
+</hibernate-mapping>
Index: trunk/src/src/java/org/lidar/Util.java
===================================================================
--- trunk/src/src/java/org/lidar/Util.java	(revision 0)
+++ trunk/src/src/java/org/lidar/Util.java	(revision 7)
@@ -0,0 +1,57 @@
+package org.lidar;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * Util
+ * @author Andrej Cimpersek
+ */
+public class Util {
+    public static byte CalcXOR(byte[] data, int offset, int count)
+    {
+        byte x = data[offset];
+        for (int i = 1; i < count; i++) x ^= data[offset + i];
+        return x;
+    }
+
+    private static byte CalcXOR(String data)
+    {
+        byte x = (byte)(data.charAt(0));
+        for (int i = 1; i < data.length(); i++) x ^= (byte)(data.charAt(i));
+        return x;
+    }
+
+    public static byte[] GetBytesFromFile(File file) throws IOException {
+        InputStream is = new FileInputStream(file);
+
+        // Get the size of the file
+        long length = file.length();
+
+        if (length > Integer.MAX_VALUE) {
+            throw new IOException("File is too large!");
+        }
+
+        // Create the byte array to hold the data
+        byte[] bytes = new byte[(int)length];
+
+        // Read in the bytes
+        int offset = 0;
+        int numRead = 0;
+        while (offset < bytes.length
+               && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
+            offset += numRead;
+        }
+
+        // Ensure all the bytes have been read in
+        if (offset < bytes.length) {
+            throw new IOException("Could not completely read file "+file.getName());
+        }
+
+        // Close the input stream and return bytes
+        is.close();
+        return bytes;
+    }
+}
Index: trunk/src/src/java/org/lidar/HibernateUtil.java
===================================================================
--- trunk/src/src/java/org/lidar/HibernateUtil.java	(revision 0)
+++ trunk/src/src/java/org/lidar/HibernateUtil.java	(revision 7)
@@ -0,0 +1,27 @@
+package org.lidar;
+
+import org.hibernate.SessionFactory;
+import org.hibernate.cfg.AnnotationConfiguration;
+
+/**
+ *
+ * @author Andrej Cimpersek
+ */
+
+public class HibernateUtil {
+  private static final SessionFactory sessionFactory;
+  static {
+    try {
+      // Create the SessionFactory from hibernate.cfg.xml
+      sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
+    } catch (Throwable ex) {
+      // Make sure you log the exception, as it might be swallowed
+      System.err.println("Initial SessionFactory creation failed." + ex);
+      throw new ExceptionInInitializerError(ex);
+    }
+  }
+
+  public static SessionFactory getSessionFactory() {
+    return sessionFactory;
+  }
+}
\ No newline at end of file
Index: trunk/src/src/java/org/lidar/Serial.java
===================================================================
--- trunk/src/src/java/org/lidar/Serial.java	(revision 0)
+++ trunk/src/src/java/org/lidar/Serial.java	(revision 7)
@@ -0,0 +1,162 @@
+package org.lidar;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import javax.comm.*;
+import java.util.*;
+import org.apache.commons.configuration.XMLConfiguration;
+import org.lidar.api.Management;
+
+/**
+ * Serial port communication
+ * @author Andrej Cimpersek
+ */
+public class Serial {
+    private boolean isOpened = false;
+    private String deviceName;
+    private String portName;
+    private Enumeration portIdentifiers;
+    private CommPortIdentifier portId;
+    private SerialPort port;
+    protected InputStream inputStream;
+    protected OutputStream outputStream;
+    private int baudRate, dataBits, stopBits, parity;
+    private XMLConfiguration configuration;
+    
+    public Serial(String deviceName){
+        configuration = Config.getConfiguration();
+        this.portName = configuration.getString(String.format("devices.%s.port", deviceName));
+        this.baudRate = configuration.getInt(String.format("devices.%s.baudRate", deviceName));
+        this.dataBits = configuration.getInt(String.format("devices.%s.dataBits", deviceName));
+        this.stopBits = configuration.getInt(String.format("devices.%s.stopBits", deviceName));
+        this.parity = configuration.getInt(String.format("devices.%s.parity", deviceName));
+    }
+
+    /**
+     * Check each port identifier if
+     *   (a) it indicates a serial (not a parallel) port, and
+     *   (b) matches the desired name.
+     * @return boolean
+     */
+    protected boolean identfy(){
+        this.portIdentifiers = CommPortIdentifier.getPortIdentifiers();
+        this.portId = null;  // will be set if port found
+        while (portIdentifiers.hasMoreElements())
+        {
+            CommPortIdentifier pid = (CommPortIdentifier)portIdentifiers.nextElement();
+            if(pid.getPortType() == CommPortIdentifier.PORT_SERIAL && pid.getName().equals(this.portName)){
+                this.portId = pid;
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Destructor - close port
+     */
+    @Override()
+    protected void finalize() throws Throwable{
+        closePort();
+    }
+
+    public boolean acquirePort(){
+        if(this.portId == null) return false;
+        // Use port identifier for acquiring the port
+        try {
+            this.port = (SerialPort)this.portId.open(
+                this.deviceName, // Name of the application asking for the port
+                10000   // Wait max. 10 sec. to acquire port
+            );
+        } catch(PortInUseException e) {
+            return false;
+        }
+
+        return true;
+    }
+
+    public boolean openPort(){
+        if(!acquirePort()) return false;
+        closePort();
+        try {
+            this.port.setSerialPortParams(this.baudRate, this.dataBits, this.stopBits, this.parity);
+            this.port.removeEventListener();
+            this.port.addEventListener(new SerialPortEventListener() {
+                public void serialEvent(SerialPortEvent event){
+                    switch(event.getEventType()) {
+                        case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
+                            onOutputBufferEmpty(event);
+                            break;
+
+                        case SerialPortEvent.DATA_AVAILABLE:
+                            onDataAvailable(event);
+                            break;
+                    }
+                }
+            });
+            this.inputStream = this.port.getInputStream();
+            this.outputStream = this.port.getOutputStream();
+            this.isOpened = true;
+        } catch (Exception e) {
+            this.isOpened = false;
+        } finally {
+            return this.isOpened;
+        }
+    }
+
+    public void closePort(){
+        if(this.port == null) return;
+        try {
+            this.inputStream.close();
+            this.outputStream.close();
+            this.port.close();
+        } catch (Exception e) {
+        } finally {
+            this.isOpened = false;
+        }
+    }
+
+    /**
+     * Write shortcut for string
+     */
+    public boolean sendCommand(String lockToken, String string){
+        return sendCommand(lockToken, string.getBytes());
+    }
+
+    /**
+     * Write shortcut
+     * @param bytes
+     * @return boolean
+     */
+    public boolean sendCommand(String lockToken, byte[] bytes){
+        // TODO: worker, ki odklene po X času brez dostopa
+        if(!Management.locked || lockToken != Management.lockToken) return false;
+        Management.lockAccess = new Date();
+        
+        try {
+            outputStream.write(bytes);
+        } catch (Exception e) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Handle output buffer empty events.
+     * NOTE: The reception of this event is optional and not
+     *       guaranteed by the API specification.
+     * @param event The output buffer empty event
+     */
+    protected void onOutputBufferEmpty(SerialPortEvent event){
+        //TODO: implement
+    }
+
+    /**
+     * Handle data available events.
+     * @param event The data available event
+     */
+    protected void onDataAvailable(SerialPortEvent event){
+        //TODO: implement
+    }
+}
Index: trunk/src/src/java/org/lidar/auth/LDAPAdapter.java
===================================================================
--- trunk/src/src/java/org/lidar/auth/LDAPAdapter.java	(revision 0)
+++ trunk/src/src/java/org/lidar/auth/LDAPAdapter.java	(revision 7)
@@ -0,0 +1,36 @@
+package org.lidar.auth;
+
+import java.util.Hashtable;
+import javax.naming.Context;
+import javax.naming.directory.DirContext;
+import javax.naming.directory.InitialDirContext;
+
+public class LDAPAdapter implements IAuthAdapter {
+    private String LDAP_HOST = "ldap://localhost:389/o=JNDITutorial";
+    private String LDAP_O = "UPR.SI";
+    private String LDAP_OU = "FAMNIT";
+
+    public LDAPAdapter(/*String host*/){
+        //HOST = provider;
+    }
+
+    public boolean IsValid(String username, String password) {
+        // Set up the environment for creating the initial context
+        Hashtable env = new Hashtable();
+        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
+        env.put(Context.PROVIDER_URL, LDAP_HOST);
+
+        // Authenticate as S. User and password "mysecret"
+        env.put(Context.SECURITY_AUTHENTICATION, "simple");
+        env.put(Context.SECURITY_PRINCIPAL, "CN=" + username + ", OU=" + LDAP_OU + ", O=" + LDAP_O);
+        env.put(Context.SECURITY_CREDENTIALS, password);
+
+        try {
+           DirContext ctx = new InitialDirContext(env);
+           return true;
+        } catch (Exception e) {
+           return false;
+        }
+    }
+    
+}
Index: trunk/src/src/java/org/lidar/auth/DBAdapter.java
===================================================================
--- trunk/src/src/java/org/lidar/auth/DBAdapter.java	(revision 0)
+++ trunk/src/src/java/org/lidar/auth/DBAdapter.java	(revision 7)
@@ -0,0 +1,27 @@
+package org.lidar.auth;
+
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.hibernate.cfg.Configuration;
+
+/**
+ *
+ * @author Andrej Cimpersek
+ */
+public class DBAdapter implements IAuthAdapter {
+
+    public boolean IsValid(String username, String password) {
+        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
+        Session session = sessionFactory.openSession();
+        Transaction tx = session.beginTransaction();
+
+        
+
+        tx.commit();
+        session.close();
+
+        return true;
+    }
+
+}
Index: trunk/src/src/java/org/lidar/auth/IAuthAdapter.java
===================================================================
--- trunk/src/src/java/org/lidar/auth/IAuthAdapter.java	(revision 0)
+++ trunk/src/src/java/org/lidar/auth/IAuthAdapter.java	(revision 7)
@@ -0,0 +1,9 @@
+package org.lidar.auth;
+
+/**
+ *
+ * @author Andrej Cimpersek
+ */
+public interface IAuthAdapter {
+    public boolean IsValid(String username, String password);
+}
Index: trunk/src/src/java/org/lidar/auth/DummyAdapter.java
===================================================================
--- trunk/src/src/java/org/lidar/auth/DummyAdapter.java	(revision 0)
+++ trunk/src/src/java/org/lidar/auth/DummyAdapter.java	(revision 7)
@@ -0,0 +1,13 @@
+package org.lidar.auth;
+
+/**
+ * Dummy authentication adapter that always returns true
+ * @author Andrej Cimpersek
+ */
+public class DummyAdapter implements IAuthAdapter {
+
+    public boolean IsValid(String username, String password) {
+        return true;
+    }
+
+}
Index: trunk/src/src/java/org/lidar/auth/Authentication.java
===================================================================
--- trunk/src/src/java/org/lidar/auth/Authentication.java	(revision 0)
+++ trunk/src/src/java/org/lidar/auth/Authentication.java	(revision 7)
@@ -0,0 +1,25 @@
+package org.lidar.auth;
+
+/**
+ *
+ * @author Andrej Cimpersek
+ */
+public class Authentication {
+    private IAuthAdapter adapter;
+
+    public Authentication(){
+        this.adapter = new DummyAdapter();
+    }
+
+    public boolean IsValid(String username, String password){
+        return this.adapter.IsValid(username, password);
+    }
+
+    public void SetAdapter(IAuthAdapter adapter){
+        this.adapter = adapter;
+    }
+
+    public IAuthAdapter GetAdapter(){
+        return this.adapter;
+    }
+}
Index: trunk/src/src/java/org/lidar/Position.java
===================================================================
--- trunk/src/src/java/org/lidar/Position.java	(revision 0)
+++ trunk/src/src/java/org/lidar/Position.java	(revision 7)
@@ -0,0 +1,10 @@
+package org.lidar;
+
+/**
+ * Motors position
+ * @author Andrej Cimpersek
+ */
+public class Position {
+    public int position0;
+    public int position1;
+}
Index: trunk/src/src/java/org/lidar/Config.java
===================================================================
--- trunk/src/src/java/org/lidar/Config.java	(revision 0)
+++ trunk/src/src/java/org/lidar/Config.java	(revision 7)
@@ -0,0 +1,32 @@
+package org.lidar;
+
+import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
+
+/**
+ *
+ * @author Andrej Cimpersek
+ */
+public class Config {
+    private static XMLConfiguration configuration;
+
+    public static XMLConfiguration getConfiguration(){
+        if(configuration == null){
+            try {
+                configuration = new XMLConfiguration("/etc/lidar/config.xml");
+                configuration.setAutoSave(true);
+                configuration.setReloadingStrategy(new FileChangedReloadingStrategy());
+            } catch (Exception e) {
+            }
+        }
+
+        return configuration;
+    }
+
+    public static void save(){
+        try {
+            configuration.save("/etc/lidar/config.xml");
+        } catch (Exception e) {
+        }
+    }
+}
Index: trunk/src/src/java/org/lidar/db/Log.java
===================================================================
--- trunk/src/src/java/org/lidar/db/Log.java	(revision 0)
+++ trunk/src/src/java/org/lidar/db/Log.java	(revision 7)
@@ -0,0 +1,63 @@
+package org.lidar.db;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.persistence.*;
+
+/**
+ *
+ * @author Andrej Cimpersek
+ */
+@Entity
+@Table(name="log")
+public class Log implements Serializable {
+    private Integer id;
+    private Date date;
+    private String type;
+    private String message;
+
+    public Log(){
+    }
+
+    public Log(Integer id, Date date, String type, String message){
+        this.id = id;
+        this.date = date;
+        this.type = type;
+        this.message = message;
+    }
+
+    @Id
+    public Integer getId() {
+        return this.id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    @Temporal(javax.persistence.TemporalType.DATE)
+    @Column(name="access")
+    public Date getDate() {
+        return this.date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public String getType() {
+        return this.type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getMessage() {
+        return this.message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+}
Index: trunk/src/src/java/org/lidar/db/AuthTokens.java
===================================================================
--- trunk/src/src/java/org/lidar/db/AuthTokens.java	(revision 0)
+++ trunk/src/src/java/org/lidar/db/AuthTokens.java	(revision 7)
@@ -0,0 +1,57 @@
+package org.lidar.db;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * @author Andrej Cimpersek
+ */
+public class AuthTokens implements Serializable {
+    private Integer id;
+    private String token;
+    private Date access;
+    private String ip;
+
+    public AuthTokens(){
+    }
+
+    public AuthTokens(Integer id, String token, Date access, String ip){
+        this.id = id;
+        this.token = token;
+        this.access = access;
+        this.ip = ip;
+    }
+
+    public Integer getId() {
+        return this.id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getToken() {
+        return this.token;
+    }
+
+    public void setToken(String token) {
+        this.token = token;
+    }
+
+    public Date getAccess() {
+        return this.access;
+    }
+
+    public void setAccess(Date access) {
+        this.access = access;
+    }
+
+    public String getIp() {
+        return this.ip;
+    }
+
+    public void setIp(String ip) {
+        this.ip = ip;
+    }
+}
Index: trunk/src/src/java/org/lidar/db/Client.java
===================================================================
--- trunk/src/src/java/org/lidar/db/Client.java	(revision 0)
+++ trunk/src/src/java/org/lidar/db/Client.java	(revision 7)
@@ -0,0 +1,53 @@
+package org.lidar.db;
+
+import java.io.Serializable;
+import javax.persistence.*;
+
+/**
+ *
+ * @author Andrej Cimpersek
+ */
+@Entity
+@Table(name="client")
+public class Client implements Serializable {
+    private Integer id;
+    private String apiKey;
+    private String token;
+
+    public Client(){
+    }
+
+    public Client(Integer id, String apiKey, String token){
+        this.id = id;
+        this.apiKey = apiKey;
+        this.token = token;
+    }
+
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    public Integer getId() {
+        return this.id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    @Column(name="apikey")
+    public String getApiKey() {
+        return this.apiKey;
+    }
+
+    public void setApiKey(String apiKey) {
+        this.apiKey = apiKey;
+    }
+
+    public String getToken() {
+        return this.token;
+    }
+
+    public void setToken(String token) {
+        this.token = token;
+    }
+
+}
Index: trunk/src/src/java/org/lidar/LogServlet.java
===================================================================
--- trunk/src/src/java/org/lidar/LogServlet.java	(revision 0)
+++ trunk/src/src/java/org/lidar/LogServlet.java	(revision 7)
@@ -0,0 +1,116 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package org.lidar;
+
+import com.google.gson.Gson;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.hibernate.Query;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.lidar.HibernateUtil;
+
+/**
+ *
+ * @author Andrej Cimpersek
+ */
+public class LogServlet extends HttpServlet {
+   
+    /** 
+     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
+     * @param request servlet request
+     * @param response servlet response
+     * @throws ServletException if a servlet-specific error occurs
+     * @throws IOException if an I/O error occurs
+     */
+    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+    throws ServletException, IOException {
+        response.setContentType("application/json;charset=UTF-8");
+        PrintWriter out = response.getWriter();
+        Gson gson = new Gson();
+        try {
+            int start = 0;
+            int limit = 15;
+            if(request.getParameter("limit") != null){
+                limit = Integer.parseInt(request.getParameter("limit"));
+            }
+            if(request.getParameter("start") != null){
+                start = Integer.parseInt(request.getParameter("start"));
+            }
+
+            Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+            Transaction tx = session.beginTransaction();
+
+            // FIX: use COUNT instead
+            int total = session.createQuery("from Log as log").list().size();
+            Query query = session.createQuery("from Log as log order by log.date desc");
+            query.setFirstResult(start);
+            query.setMaxResults(limit);
+            JSONResponse resp = new JSONResponse(true, total, (ArrayList)query.list());
+            out.write(gson.toJson(resp));
+            tx.commit();
+        } catch (Exception e) {
+            response.setContentType("text/plain;charset=UTF-8");
+            out.write(e.getMessage());
+        } finally {
+            out.close();
+        }
+    }
+
+    class JSONResponse {
+        private boolean success = true;
+        private int total;
+        private ArrayList rows;
+
+        public JSONResponse(boolean success, int total, ArrayList rows){
+            this.success = success;
+            this.total = total;
+            this.rows = rows;
+        }
+    }
+
+    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
+    /** 
+     * Handles the HTTP <code>GET</code> method.
+     * @param request servlet request
+     * @param response servlet response
+     * @throws ServletException if a servlet-specific error occurs
+     * @throws IOException if an I/O error occurs
+     */
+    @Override
+    protected void doGet(HttpServletRequest request, HttpServletResponse response)
+    throws ServletException, IOException {
+        processRequest(request, response);
+    } 
+
+    /** 
+     * Handles the HTTP <code>POST</code> method.
+     * @param request servlet request
+     * @param response servlet response
+     * @throws ServletException if a servlet-specific error occurs
+     * @throws IOException if an I/O error occurs
+     */
+    @Override
+    protected void doPost(HttpServletRequest request, HttpServletResponse response)
+    throws ServletException, IOException {
+        processRequest(request, response);
+    }
+
+    /** 
+     * Returns a short description of the servlet.
+     * @return a String containing servlet description
+     */
+    @Override
+    public String getServletInfo() {
+        return "Short description";
+    }// </editor-fold>
+
+}
Index: trunk/src/src/java/org/lidar/api/Management.java
===================================================================
--- trunk/src/src/java/org/lidar/api/Management.java	(revision 0)
+++ trunk/src/src/java/org/lidar/api/Management.java	(revision 7)
@@ -0,0 +1,131 @@
+package org.lidar.api;
+
+import java.util.Date;
+import javax.annotation.Resource;
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import javax.xml.ws.WebServiceContext;
+import javax.xml.ws.handler.MessageContext;
+import net.sf.jpam.Pam;
+import org.hibernate.Query;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.lidar.HibernateUtil;
+import org.lidar.db.Client;
+
+/**
+ * Management service
+ * @author Andrej Cimpersek
+ */
+@WebService()
+public class Management {
+    private final Object lock = new Object();
+    public static Boolean locked = false;
+    public static String lockToken;
+    public static Date lockAccess;
+
+    @Resource
+    private WebServiceContext wsContext;
+
+    /**
+     * Web service operation
+     */
+    @WebMethod()
+    public String getStatus(String authToken) {
+        String status = null;
+        Client c = getClient(String.format("token = '%s'", authToken));
+
+        if(c != null){
+            if(Management.locked){
+                status = "locked";
+            } else {
+                status = "unlocked";
+            }
+        }
+
+        return status;
+    }
+
+    /**
+     * Client helper
+     * @param where
+     * @return Client
+     */
+    private Client getClient(String where){
+        Client c = null;
+        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+        Transaction tx = null;
+        try {
+            // TODO: check if api_key exists in DB
+            // TODO: generate new auth token and save it to DB
+            tx = session.beginTransaction();
+
+            Query query = session.createQuery(String.format("from Client as client where %s", where));
+            c = (Client)query.list().get(0);
+            tx.commit();
+        } catch (Exception e) {
+            tx.rollback();
+        }
+
+        return c;
+    }
+
+    /**
+     * Get authentication token
+     * @param api_key
+     * @param username
+     * @param password
+     * @return null | authentication token
+     */
+    @WebMethod()
+    public String getAuthenticationToken(String api_key, String username, String password){
+        String token = null;
+        MessageContext mc = wsContext.getMessageContext();
+        Pam pam = new Pam();
+        boolean auth = pam.authenticateSuccessful(username, password);
+
+        if(auth){
+            Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+            Transaction tx = null;
+            try {
+                // TODO: check if api_key exists in DB
+                // TODO: generate new auth token and save it to DB
+                Client c = getClient(String.format("apikey = '%s'", api_key));
+
+                if(c != null){
+                    token = c.getToken();
+                }
+            } catch (Exception e) {
+                tx.rollback();
+            }
+        }
+
+        return token;
+    }
+
+    @WebMethod()
+    public String getLockToken(String authToken){
+        synchronized(lock){
+            Client c = getClient(String.format("token = '%s'", authToken));
+            if(Management.locked || c == null) return null;
+
+            Management.locked = true;
+            Management.lockToken = authToken; // TODO: generate token
+            Management.lockAccess = new Date();
+        }
+        
+        return Management.lockToken;
+    }
+
+    @WebMethod
+    public boolean unlock(String lockToken){
+        synchronized(lock){
+            if(!Management.locked || Management.lockToken != lockToken) return false;
+            Management.locked = false;
+            Management.lockToken = null;
+        }
+
+        return true;
+    }
+
+}
Index: trunk/src/src/java/org/lidar/api/Motion.java
===================================================================
--- trunk/src/src/java/org/lidar/api/Motion.java	(revision 0)
+++ trunk/src/src/java/org/lidar/api/Motion.java	(revision 7)
@@ -0,0 +1,270 @@
+package org.lidar.api;
+
+import javax.comm.SerialPort;
+import org.lidar.Position;
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import org.lidar.Config;
+import org.lidar.Serial;
+
+/**
+ * Motion API
+ * @author Andrej Cimpersek
+ */
+@WebService()
+public class Motion extends Serial {
+
+    public Motion(){
+        super("motion");
+        openPort();
+    }
+
+    /**
+     * Sets parameters for next motor move
+     * @param steps
+     * @param freq
+     */
+    @WebMethod()
+    public void setMove0(int steps, float freq){
+        
+	}
+
+    /**
+     * Sets parameters for next motor move
+     * @param steps
+     * @param freq
+     */
+    @WebMethod()
+    public void setMove1(int steps, float freq){
+
+	}
+
+    /**
+     * Moves motors according to set moves
+     */
+    @WebMethod()
+    public void run(){
+
+	}
+
+    /**
+     * Sets angular velocity in steps / sec
+     * @param omega0
+     */
+    @WebMethod()
+    public void setInitialAngularVel0(float omega0){
+
+	}
+
+    /**
+     * Sets angular velocity in steps / sec
+     * @param omega0
+     */
+    @WebMethod()
+    public void setInitialAngularVel1(float omega0){
+
+	}
+
+    /**
+     * Sets angular acceleration in steps / sec^2
+     * @param accel
+     */
+    @WebMethod()
+    public void setAngularAcceleration0(float accel){
+
+	}
+
+    /**
+     * Sets angular acceleration in steps / sec^2
+     * @param accel
+     */
+    @WebMethod()
+    public void setAngularAcceleration1(float accel){
+
+	}
+
+    /**
+     *
+     * @param steps
+     */
+    @WebMethod()
+    public void setLackCorrection0(short steps){
+
+	}
+
+    /**
+     *
+     * @param steps
+     */
+    @WebMethod()
+    public void setLackCorrection1(short steps){
+
+	}
+
+    /**
+     * Sets angular deceleration in steps / sec^2
+     * @param decel
+     */
+    @WebMethod()
+    public void setAngularDeceleration0(float decel){
+
+	}
+
+    /**
+     * Sets angular deceleration in steps / sec^2
+     * @param decel
+     */
+    @WebMethod()
+    public void setAngularDeceleration1(float decel){
+
+	}
+
+    /**
+     * Sets position for stepper 0
+     * @param position
+     */
+    @WebMethod()
+    public void setPosition0(int position){
+
+	}
+
+    /**
+     * Sets position for stepper 1
+     * @param position
+     */
+    @WebMethod()
+    public void setPosition1(int position){
+
+	}
+
+    /**
+     * Stops motor 0
+     */
+    @WebMethod()
+    public void stopMotor0(){
+
+	}
+
+    /**
+     * Stops motor 1
+     */
+    @WebMethod()
+    public void stopMotor1(){
+
+	}
+
+    /**
+     * Disables current on motor 0
+     */
+    @WebMethod()
+    public void setMotorOff0(){
+
+	}
+
+    /**
+     * Disables current on motor 1
+     */
+    @WebMethod()
+    public void setMotorOff1(){
+
+	}
+
+    /**
+     * Gets positions of both motors
+     * @return Position
+     */
+    @WebMethod()
+    public Position getPosition(){
+        return new Position();
+	}
+
+    /**
+     * Set continuous key movement
+     */
+    @WebMethod()
+    public void setContinuousKeyMovement(){
+
+	}
+
+    /**
+     * Set single step key movement
+     */
+    @WebMethod()
+    public void setSingleStepKeyMovement(){
+
+	}
+
+    /**
+     * Simulate Left Key Press
+     */
+    @WebMethod()
+    public void simulateLeftKeyPress(){
+
+	}
+
+    /**
+     * Simulate Left Key Release
+     */
+    @WebMethod()
+    public void simulateLeftKeyRelease(){
+
+	}
+
+    /**
+     * Simulate Right Key Press
+     */
+    @WebMethod()
+    public void simulateRightKeyPress(){
+
+	}
+
+    /**
+     * Simulate Right Key Release
+     */
+    @WebMethod()
+    public void simulateRightKeyRelease(){
+
+	}
+
+    /**
+     * Simulate Up Key Press
+     */
+    @WebMethod()
+    public void simulateUpKeyPress(){
+
+	}
+
+    /**
+     * Simulate Up Key Release
+     */
+    @WebMethod()
+    public void simulateUpKeyRelease(){
+
+	}
+
+    /**
+     * Simulate Down Key Press
+     */
+    @WebMethod()
+    public void simulateDownKeyPress(){
+
+	}
+
+    /**
+     * Simulate Down Key Release
+     */
+    @WebMethod()
+    public void simulateDownKeyRelease(){
+
+	}
+
+    /**
+     * Sets automatic position reporting.
+     * 0..turns off automatic position reporting, 50..9999 autoreport interval in milliseconds
+     * @param interval
+     */
+    @WebMethod()
+    public void setAutomaticPositionReporting(short interval){
+
+	}
+}
Index: trunk/src/src/java/org/lidar/api/Laser.java
===================================================================
--- trunk/src/src/java/org/lidar/api/Laser.java	(revision 0)
+++ trunk/src/src/java/org/lidar/api/Laser.java	(revision 7)
@@ -0,0 +1,176 @@
+package org.lidar.api;
+
+import javax.comm.SerialPort;
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import org.apache.commons.configuration.XMLConfiguration;
+import org.lidar.Config;
+import org.lidar.Serial;
+
+/**
+ * Laser API
+ * @author Andrej Cimpersek
+ */
+@WebService()
+public class Laser extends Serial {
+    public Laser(){
+        super("laser");
+        openPort();
+    }
+
+    /**
+     * Vkljuci laser, ki zacne delovati v skladu z nastavljenimi parametri.
+     */
+    @WebMethod()
+    public boolean fire(String lockToken){
+        return sendCommand(lockToken, "$FIRE 01\r");
+    }
+
+    /**
+     * Izkljuci laser.
+     */
+    @WebMethod()
+    public boolean stop(String lockToken){
+        return sendCommand(lockToken, "$STOP 00\r");
+	}
+
+    /**
+     * Shrani trenutno konfiguracijo parametrov v interni pomnilnik laserja, ki se bodo nalozili ob naslednjem zagonu napajanja.
+     */
+    @WebMethod()
+    public boolean saveConfig(String lockToken){
+        return sendCommand(lockToken, "$SAVE 01\r");
+	}
+
+    /**
+     * Mnozica vseh nacinov delovanja laserja.
+     */
+    public enum LaserMode { Continuous, Burst, ExternalTrigger};
+
+    /**
+     * Izbere nacin delovanja laserja. Nacini mode so nasteti v mnozici LaserMode.
+     * @param mode Nacin delovanja laserja.
+     */
+    @WebMethod()
+    public boolean setMode(String lockToken, LaserMode mode){
+        switch(mode){
+            case Continuous:
+                return sendCommand(lockToken, "$MODE 01\r");
+            case Burst:
+                return sendCommand(lockToken, "$MODE 02\r");
+            case ExternalTrigger:
+                return sendCommand(lockToken, "$MODE 03\r");
+        }
+
+        return false;
+	}
+
+    /**
+     * Omogoci oz. onemogoci Q-Switch opcijo.
+     * @param enabled Omogoci oz. onemogoci..
+     */
+    @WebMethod()
+    public boolean setQSwitch(String lockToken, boolean enabled){
+        if(enabled){
+            return sendCommand(lockToken, "$QSWITCH 01\r");
+        } else {
+            return sendCommand(lockToken, "$QSWITCH 00\r");
+        }
+	}
+
+    /**
+     * Zaklene oz. odklene tipkovnico na napajalniku laserja.
+     * @param locked Zaklep oz. odklep.
+     */
+    @WebMethod()
+    public boolean setKeypad(String lockToken, boolean enabled){
+        if(enabled){
+            return sendCommand(lockToken, "$KEYPAD 01\r");
+        } else {
+            return sendCommand(lockToken, "$KEYPAD 00\r");
+        }
+	}
+
+    /**
+     * Nastavi stevilo sunkov laserja, pulses, ki se bodo zaporedoma izbvrsili, ce je izbran nacin delovanje LaserMode.Continuous.
+     * Dovoljeno obmocje 0 - 99.
+     * @param pulses Stevilo sunkov laserja.
+     */
+    @WebMethod()
+    public boolean setBurstPulseCount(String lockToken, byte pulses){
+        if(pulses < 0 && pulses > 99){
+            return false;
+        }
+
+        String p = "" + pulses;
+        if (p.length() == 1) p = "0" + p;
+
+        return sendCommand(lockToken, "$BURST " + p + "\r");
+	}
+
+    /**
+     * Zazene Q-Switch na vsakih freq sunkov.
+     * Dovoljeno obmocje je od 1 - 99.
+     * @param freq Frekvenca sunkov.
+     */
+    @WebMethod()
+    public boolean setQSwitchFrequency(String lockToken, byte freq){
+        if(freq < 0 && freq > 99){
+            return false;
+        }
+
+        String f = "" + freq;
+        if (f.length() == 1) f = "0" + f;
+
+        return sendCommand(lockToken, "$QFREQ " + f + "\r");
+	}
+
+    /**
+     * Zakasnitev aktivacije v stevilu sunkov delay.
+     * Dovoljeno obmocje je od 0 - 99.
+     * @param delay Zakasnitev aktivacije.
+     */
+    public boolean setQSwitchDelay(String lockToken, byte delay){
+        if(delay < 0 && delay > 99){
+            return false;
+        }
+
+        String d = "" + delay;
+        if (d.length() == 1) d = "0" + d;
+
+        return sendCommand(lockToken, "$QDLY " + d + "\r");
+	}
+
+    /**
+     * Nastavi energijo laserja, eneryLevel, pri posameznem sunku aktivcaije.
+     * @param energyLevel Energija laserja.
+     */
+    @WebMethod()
+    public boolean setEnergyLevel(String lockToken, byte energyLevel){
+        if(energyLevel < 1 && energyLevel > 20){
+            return false;
+        }
+
+        String e = "" + energyLevel;
+        if (e.length() == 1) e = "0" + e;
+        
+        return sendCommand(lockToken, "$EPFN " + e + "\r");
+	}
+
+    /**
+     * Nastavi frekvenco, s katero naj se prozi lase po aktivaciji. Frekvenca je izrazena v sunkih na sekundo, rate.
+     * Dovoljene vrednosti so 1, 2, 5, 10 in 20.
+     * @param rate Frekvenca s katero se prozi laser.
+     */
+    @WebMethod()
+    public boolean setRepetitionRate(String lockToken, byte rate){
+        if (rate == 1 || rate == 2 || rate == 5 || rate == 10 || rate == 20){
+            String r = "" + rate;
+            if (r.length() == 1) r = "0" + r;
+
+            return sendCommand(lockToken, "$LPRF " + r + "\r");
+        }
+
+        return false;
+	}
+}
Index: trunk/src/src/java/org/lidar/api/Video.java
===================================================================
--- trunk/src/src/java/org/lidar/api/Video.java	(revision 0)
+++ trunk/src/src/java/org/lidar/api/Video.java	(revision 7)
@@ -0,0 +1,26 @@
+package org.lidar.api;
+
+import java.io.File;
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import org.lidar.Util;
+
+/**
+ * Video API
+ * @author Andrej Cimpersek
+ */
+@WebService()
+public class Video {
+    /**
+     * Returns image
+     * @return byte[] PNG image
+     */
+    @WebMethod()
+    public byte[] getImage(String lockToken){
+        try {
+            return Util.GetBytesFromFile(new File("capture.png"));
+        } catch (Exception e) {
+            return null;
+        }
+    }
+}
\ No newline at end of file
Index: trunk/src/src/java/org/lidar/api/Sensor.java
===================================================================
--- trunk/src/src/java/org/lidar/api/Sensor.java	(revision 0)
+++ trunk/src/src/java/org/lidar/api/Sensor.java	(revision 7)
@@ -0,0 +1,87 @@
+package org.lidar.api;
+
+import javax.comm.SerialPort;
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import org.lidar.Config;
+import org.lidar.Serial;
+
+/**
+ * Sensor API
+ * @author Andrej Cimpersek
+ */
+@WebService()
+public class Sensor extends Serial {
+
+    public Sensor(){
+        super("sensor");
+        openPort();
+    }
+
+    /**
+     * Kaj natancno naredi ukaz ni znano. Pred zajemom podatkov ga je potrebno izvesti.
+     * TODO: odstranit oz. samodejen klic pred zajemom podatkov.
+     */
+    private void readQuery(){
+
+	}
+
+    /**
+     * Pripravi senzor na zajemanje podatkov. Ob naslednjih prozenjih laserja bodo meritve dostopne preko lastnosti ReceivedMeasurement.
+     * TODO: drugačen dostop do podatkov
+     */
+    @WebMethod()
+    public void runAcqusition(){
+        // TODO: preveri ce je ok
+        readQuery();
+	}
+
+    /**
+     * Ustavi zajemanje podatkov ob prozenju laserja. Z drugimi besadami, ob naslednjih sprozitvah laserja ne bomo dobili podatkov meritev.
+     */
+    @WebMethod()
+    public void stopAcqusition(){
+
+	}
+
+    /**
+     * Podobno kot RunAcqusition, natancnejsi podatki zal niso znani.
+     */
+    @WebMethod()
+    public void forceTrigger(){
+
+	}
+
+    /**
+     * Mnozica doloca vse mozne tipe meritev.
+     */
+    public enum DataType { Data, Background, DataMinusBackground }
+
+    /**
+     * Nastavi tip type meritve.
+     * @param type Tip meritve.
+     */
+    @WebMethod()
+    public void setDataType(DataType type){
+
+	}
+
+    /**
+     * Vrne status senzurja, predstavljen v enem byte-u.
+     * @return byte Status senzorja.
+     */
+    @WebMethod()
+    public byte getStatus(){
+        return (byte)'0';
+	}
+
+    /**
+     * Poslje gain profil gainData v senzor.
+     * @param gainData Gain profil.
+     */
+    @WebMethod()
+    public void sendGain(short[] gainData){
+
+	}
+
+}
Index: trunk/src/build.xml
===================================================================
--- trunk/src/build.xml	(revision 0)
+++ trunk/src/build.xml	(revision 7)
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- You may freely edit this file. See commented blocks below for -->
+<!-- some examples of how to customize the build. -->
+<!-- (If you delete it and reopen the project it will be recreated.) -->
+<!-- By default, only the Clean and Build commands use this build script. -->
+<!-- Commands such as Run, Debug, and Test only use this build script if -->
+<!-- the Compile on Save feature is turned off for the project. -->
+<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
+<!-- in the project's Project Properties dialog box.-->
+<project name="LIDAR_SOAP" default="default" basedir=".">
+    <description>Builds, tests, and runs the project LIDAR SOAP.</description>
+    <import file="nbproject/build-impl.xml"/>
+    <!--
+
+    There exist several targets which are by default empty and which can be 
+    used for execution of your tasks. These targets are usually executed 
+    before and after some main targets. They are: 
+
+      -pre-init:                 called before initialization of project properties 
+      -post-init:                called after initialization of project properties 
+      -pre-compile:              called before javac compilation 
+      -post-compile:             called after javac compilation 
+      -pre-compile-single:       called before javac compilation of single file
+      -post-compile-single:      called after javac compilation of single file
+      -pre-compile-test:         called before javac compilation of JUnit tests
+      -post-compile-test:        called after javac compilation of JUnit tests
+      -pre-compile-test-single:  called before javac compilation of single JUnit test
+      -post-compile-test-single: called after javac compilation of single JUunit test
+      -pre-dist:                 called before archive building 
+      -post-dist:                called after archive building 
+      -post-clean:               called after cleaning build products 
+      -pre-run-deploy:           called before deploying
+      -post-run-deploy:          called after deploying
+
+    Example of pluging an obfuscator after the compilation could look like 
+
+        <target name="-post-compile">
+            <obfuscate>
+                <fileset dir="${build.classes.dir}"/>
+            </obfuscate>
+        </target>
+
+    For list of available properties check the imported 
+    nbproject/build-impl.xml file. 
+
+
+    Other way how to customize the build is by overriding existing main targets.
+    The target of interest are: 
+
+      init-macrodef-javac:    defines macro for javac compilation
+      init-macrodef-junit:   defines macro for junit execution
+      init-macrodef-debug:    defines macro for class debugging
+      do-dist:                archive building
+      run:                    execution of project 
+      javadoc-build:          javadoc generation 
+
+    Example of overriding the target for project execution could look like 
+
+        <target name="run" depends="<PROJNAME>-impl.jar">
+            <exec dir="bin" executable="launcher.exe">
+                <arg file="${dist.jar}"/>
+            </exec>
+        </target>
+
+    Notice that overridden target depends on jar target and not only on 
+    compile target as regular run target does. Again, for list of available 
+    properties which you can use check the target you are overriding in 
+    nbproject/build-impl.xml file. 
+
+    -->
+</project>
Index: trunk/src
===================================================================
--- trunk/src	(revision 6)
+++ trunk/src	(revision 7)

Property changes on: trunk/src
___________________________________________________________________
Added: svn:ignore
## -0,0 +1 ##
+build
