]> git.mxchange.org Git - pizzaservice-ejb.git/commitdiff
Added upcoming remote interface
authorRoland Haeder <roland@mxchange.org>
Fri, 4 Sep 2015 09:30:40 +0000 (11:30 +0200)
committerRoland Haeder <roland@mxchange.org>
Fri, 4 Sep 2015 09:30:40 +0000 (11:30 +0200)
Signed-off-by:Roland Häder <roland@mxchange.org>

60 files changed:
.gitignore
PizzaService-ejb/lib/MySQLDriver/mysql-connector-java-5.1.23-bin.jar [new file with mode: 0644]
PizzaService-ejb/lib/cdi-api.jar [new file with mode: 0644]
PizzaService-ejb/lib/commons-codec-1.10.jar [new file with mode: 0644]
PizzaService-ejb/lib/commons-lang3-3.4.jar [new file with mode: 0644]
PizzaService-ejb/lib/log4j-web-2.3.jar [new file with mode: 0644]
PizzaService-ejb/nbproject/build-impl.xml
PizzaService-ejb/nbproject/genfiles.properties
PizzaService-ejb/nbproject/project.properties
PizzaService-ejb/nbproject/project.xml
PizzaService-ejb/src/java/org/mxchange/pizzaapplication/beans/pizzaservice/PizzaServiceSessionBean.java [new file with mode: 0644]
PizzaService-war/build.xml [new file with mode: 0644]
PizzaService-war/install/install.sql [new file with mode: 0644]
PizzaService-war/nbproject/ant-deploy.xml [new file with mode: 0644]
PizzaService-war/nbproject/build-impl.xml [new file with mode: 0644]
PizzaService-war/nbproject/genfiles.properties [new file with mode: 0644]
PizzaService-war/nbproject/project.properties [new file with mode: 0644]
PizzaService-war/nbproject/project.xml [new file with mode: 0644]
PizzaService-war/src/conf/MANIFEST.MF [new file with mode: 0644]
PizzaService-war/web/WEB-INF/faces-config.xml [new file with mode: 0644]
PizzaService-war/web/WEB-INF/glassfish-web.xml [new file with mode: 0644]
PizzaService-war/web/WEB-INF/templates.dist/guest_page.xhtml [new file with mode: 0644]
PizzaService-war/web/WEB-INF/templates/base.tpl [new file with mode: 0644]
PizzaService-war/web/WEB-INF/templates/generic/gender_selection_box.tpl [new file with mode: 0644]
PizzaService-war/web/WEB-INF/templates/guest/guest_base.tpl [new file with mode: 0644]
PizzaService-war/web/WEB-INF/templates/guest/guest_footer.tpl [new file with mode: 0644]
PizzaService-war/web/WEB-INF/templates/guest/guest_login_form.tpl [new file with mode: 0644]
PizzaService-war/web/WEB-INF/templates/guest/guest_menu.tpl [new file with mode: 0644]
PizzaService-war/web/WEB-INF/tlds/basket.tld [new file with mode: 0644]
PizzaService-war/web/WEB-INF/web.xml [new file with mode: 0644]
PizzaService-war/web/admin/category.jsp [new file with mode: 0644]
PizzaService-war/web/admin/index.jsp [new file with mode: 0644]
PizzaService-war/web/admin/product.jsp [new file with mode: 0644]
PizzaService-war/web/bye.xhtml [new file with mode: 0644]
PizzaService-war/web/customer/login.xhtml [new file with mode: 0644]
PizzaService-war/web/customer/lost_passwd.xhtml [new file with mode: 0644]
PizzaService-war/web/customer/register.xhtml [new file with mode: 0644]
PizzaService-war/web/errorHandler.xhtml [new file with mode: 0644]
PizzaService-war/web/form_handler/add_item.jsp [new file with mode: 0644]
PizzaService-war/web/form_handler/admin/do_category.jsp [new file with mode: 0644]
PizzaService-war/web/form_handler/admin/do_product.jsp [new file with mode: 0644]
PizzaService-war/web/imprint.xhtml [new file with mode: 0644]
PizzaService-war/web/index.html [new file with mode: 0644]
PizzaService-war/web/index.xhtml [new file with mode: 0644]
PizzaService-war/web/privacy.xhtml [new file with mode: 0644]
PizzaService-war/web/resources/css/cssLayout.css [new file with mode: 0644]
PizzaService-war/web/resources/css/default.css [new file with mode: 0644]
PizzaService-war/web/static/admin/admin_category_selection_box.jsp [new file with mode: 0644]
PizzaService-war/web/static/admin/admin_footer.jsp [new file with mode: 0644]
PizzaService-war/web/static/admin/admin_menu.jsp [new file with mode: 0644]
PizzaService-war/web/static/admin/admin_parent_category_selection_box.jsp [new file with mode: 0644]
PizzaService-war/web/static/error/direct_call.jsp [new file with mode: 0644]
PizzaService-war/web/terms.xhtml [new file with mode: 0644]
nbproject/build-impl.xml
nbproject/genfiles.properties
nbproject/project.properties
nbproject/project.xml
src/java/log4j2.xml [new file with mode: 0644]
src/java/org/mxchange/localization/bundle_de_DE.properties [new file with mode: 0644]
src/java/org/mxchange/localization/bundle_en_US.properties [new file with mode: 0644]

index ace7419d94620ced336a852b05448d2de2ea78a6..1b7e7ce20f73d29dc0a188ac9d2eeeddb8cca33d 100644 (file)
@@ -3,4 +3,7 @@
 /build/
 /dist/
 /*.properties
-/PizzaService-ejb/dist/
\ No newline at end of file
+/PizzaService-ejb/build/
+/PizzaService-ejb/dist/
+/PizzaService-ejb/nbproject/private/
+/PizzaService-war/nbproject/private/
\ No newline at end of file
diff --git a/PizzaService-ejb/lib/MySQLDriver/mysql-connector-java-5.1.23-bin.jar b/PizzaService-ejb/lib/MySQLDriver/mysql-connector-java-5.1.23-bin.jar
new file mode 100644 (file)
index 0000000..1f90414
Binary files /dev/null and b/PizzaService-ejb/lib/MySQLDriver/mysql-connector-java-5.1.23-bin.jar differ
diff --git a/PizzaService-ejb/lib/cdi-api.jar b/PizzaService-ejb/lib/cdi-api.jar
new file mode 100644 (file)
index 0000000..1fa239e
Binary files /dev/null and b/PizzaService-ejb/lib/cdi-api.jar differ
diff --git a/PizzaService-ejb/lib/commons-codec-1.10.jar b/PizzaService-ejb/lib/commons-codec-1.10.jar
new file mode 100644 (file)
index 0000000..1d7417c
Binary files /dev/null and b/PizzaService-ejb/lib/commons-codec-1.10.jar differ
diff --git a/PizzaService-ejb/lib/commons-lang3-3.4.jar b/PizzaService-ejb/lib/commons-lang3-3.4.jar
new file mode 100644 (file)
index 0000000..8ec91d4
Binary files /dev/null and b/PizzaService-ejb/lib/commons-lang3-3.4.jar differ
diff --git a/PizzaService-ejb/lib/log4j-web-2.3.jar b/PizzaService-ejb/lib/log4j-web-2.3.jar
new file mode 100644 (file)
index 0000000..e87ef9a
Binary files /dev/null and b/PizzaService-ejb/lib/log4j-web-2.3.jar differ
index 930387c73336e51b8a52efb6af84a8df5d910dce..85601fd543229df4adad29fd368bb34d40f1cbf0 100644 (file)
@@ -809,11 +809,17 @@ exists or setup the property manually. For example like this:
         <ant antfile="${project.PizzaService-lib}/build.xml" inheritall="false" target="jar">
             <property name="deploy.on.save" value="false"/>
         </ant>
+        <ant antfile="${project.jshop}/build.xml" inheritall="false" target="jar">
+            <property name="deploy.on.save" value="false"/>
+        </ant>
     </target>
     <target depends="init" if="dist.ear.dir" name="-deps-ear-jar" unless="no.deps">
         <ant antfile="${project.PizzaService-lib}/build.xml" inheritall="false" target="jar">
             <property name="deploy.on.save" value="false"/>
         </ant>
+        <ant antfile="${project.jshop}/build.xml" inheritall="false" target="jar">
+            <property name="deploy.on.save" value="false"/>
+        </ant>
     </target>
     <target depends="init, -deps-module-jar, -deps-ear-jar" name="deps-jar"/>
     <target depends="init,deps-jar" name="-pre-pre-compile">
@@ -826,37 +832,57 @@ exists or setup the property manually. For example like this:
     </target>
     <target depends="compile,-library-inclusion-in-archive-weblogic,-library-inclusion-in-archive-by-user" name="library-inclusion-in-archive"/>
     <target if="is.jars.in.ejbjar" name="-library-inclusion-in-archive-by-user">
+        <copyfiles files="${reference.jshop.jar}" todir="${build.classes.dir}"/>
         <copyfiles files="${reference.PizzaService-lib.jar}" todir="${build.classes.dir}"/>
+        <copyfiles files="${file.reference.cdi-api.jar}" todir="${build.classes.dir}"/>
+        <copyfiles files="${file.reference.commons-codec-1.10.jar}" todir="${build.classes.dir}"/>
+        <copyfiles files="${file.reference.commons-lang3-3.4.jar}" todir="${build.classes.dir}"/>
         <copyfiles files="${file.reference.jcore.jar}" todir="${build.classes.dir}"/>
         <copyfiles files="${file.reference.jsfcore.jar}" todir="${build.classes.dir}"/>
         <copyfiles files="${file.reference.jshop.jar}" todir="${build.classes.dir}"/>
         <copyfiles files="${file.reference.log4j-api-2.3.jar}" todir="${build.classes.dir}"/>
         <copyfiles files="${file.reference.log4j-core-2.3.jar}" todir="${build.classes.dir}"/>
+        <copyfiles files="${file.reference.log4j-web-2.3.jar}" todir="${build.classes.dir}"/>
     </target>
     <target if="is.server.weblogic" name="-library-inclusion-in-archive-weblogic">
+        <basename file="${reference.jshop.jar}" property="manifest.reference.jshop.jar"/>
         <basename file="${reference.PizzaService-lib.jar}" property="manifest.reference.PizzaService-lib.jar"/>
+        <basename file="${file.reference.cdi-api.jar}" property="manifest.file.reference.cdi-api.jar"/>
+        <basename file="${file.reference.commons-codec-1.10.jar}" property="manifest.file.reference.commons-codec-1.10.jar"/>
+        <basename file="${file.reference.commons-lang3-3.4.jar}" property="manifest.file.reference.commons-lang3-3.4.jar"/>
         <basename file="${file.reference.jcore.jar}" property="manifest.file.reference.jcore.jar"/>
         <basename file="${file.reference.jsfcore.jar}" property="manifest.file.reference.jsfcore.jar"/>
         <basename file="${file.reference.jshop.jar}" property="manifest.file.reference.jshop.jar"/>
         <basename file="${file.reference.log4j-api-2.3.jar}" property="manifest.file.reference.log4j-api-2.3.jar"/>
         <basename file="${file.reference.log4j-core-2.3.jar}" property="manifest.file.reference.log4j-core-2.3.jar"/>
+        <basename file="${file.reference.log4j-web-2.3.jar}" property="manifest.file.reference.log4j-web-2.3.jar"/>
         <manifest file="${build.ear.classes.dir}/META-INF/MANIFEST.MF" mode="update">
-            <attribute name="Extension-List" value="jar-1 jar-2 jar-3 jar-4 jar-5 jar-6 "/>
-            <attribute name="jar-1-Extension-Name" value="${manifest.reference.PizzaService-lib.jar}"/>
-            <attribute name="jar-2-Extension-Name" value="${manifest.file.reference.jcore.jar}"/>
-            <attribute name="jar-3-Extension-Name" value="${manifest.file.reference.jsfcore.jar}"/>
-            <attribute name="jar-4-Extension-Name" value="${manifest.file.reference.jshop.jar}"/>
-            <attribute name="jar-5-Extension-Name" value="${manifest.file.reference.log4j-api-2.3.jar}"/>
-            <attribute name="jar-6-Extension-Name" value="${manifest.file.reference.log4j-core-2.3.jar}"/>
+            <attribute name="Extension-List" value="jar-1 jar-2 jar-3 jar-4 jar-5 jar-6 jar-7 jar-8 jar-9 jar-10 jar-11 "/>
+            <attribute name="jar-1-Extension-Name" value="${manifest.reference.jshop.jar}"/>
+            <attribute name="jar-2-Extension-Name" value="${manifest.reference.PizzaService-lib.jar}"/>
+            <attribute name="jar-3-Extension-Name" value="${manifest.file.reference.cdi-api.jar}"/>
+            <attribute name="jar-4-Extension-Name" value="${manifest.file.reference.commons-codec-1.10.jar}"/>
+            <attribute name="jar-5-Extension-Name" value="${manifest.file.reference.commons-lang3-3.4.jar}"/>
+            <attribute name="jar-6-Extension-Name" value="${manifest.file.reference.jcore.jar}"/>
+            <attribute name="jar-7-Extension-Name" value="${manifest.file.reference.jsfcore.jar}"/>
+            <attribute name="jar-8-Extension-Name" value="${manifest.file.reference.jshop.jar}"/>
+            <attribute name="jar-9-Extension-Name" value="${manifest.file.reference.log4j-api-2.3.jar}"/>
+            <attribute name="jar-10-Extension-Name" value="${manifest.file.reference.log4j-core-2.3.jar}"/>
+            <attribute name="jar-11-Extension-Name" value="${manifest.file.reference.log4j-web-2.3.jar}"/>
         </manifest>
     </target>
     <target depends="compile" name="library-inclusion-in-manifest">
+        <copyfiles files="${reference.jshop.jar}" todir="${dist.ear.dir}/lib"/>
         <copyfiles files="${reference.PizzaService-lib.jar}" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${file.reference.cdi-api.jar}" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${file.reference.commons-codec-1.10.jar}" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${file.reference.commons-lang3-3.4.jar}" todir="${dist.ear.dir}/lib"/>
         <copyfiles files="${file.reference.jcore.jar}" todir="${dist.ear.dir}/lib"/>
         <copyfiles files="${file.reference.jsfcore.jar}" todir="${dist.ear.dir}/lib"/>
         <copyfiles files="${file.reference.jshop.jar}" todir="${dist.ear.dir}/lib"/>
         <copyfiles files="${file.reference.log4j-api-2.3.jar}" todir="${dist.ear.dir}/lib"/>
         <copyfiles files="${file.reference.log4j-core-2.3.jar}" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${file.reference.log4j-web-2.3.jar}" todir="${dist.ear.dir}/lib"/>
         <manifest file="${build.ear.classes.dir}/META-INF/MANIFEST.MF" mode="update"/>
     </target>
     <target name="-copy-meta-inf">
@@ -1241,6 +1267,7 @@ exists or setup the property manually. For example like this:
             -->
     <target depends="init" name="deps-clean" unless="no.deps">
         <ant antfile="${project.PizzaService-lib}/build.xml" inheritall="false" target="clean"/>
+        <ant antfile="${project.jshop}/build.xml" inheritall="false" target="clean"/>
     </target>
     <target depends="init" name="-do-clean">
         <delete dir="${build.dir}"/>
index 3d72619ac116fd1e9e3f60d0344e05aa3fc76f56..4e22f01fc18f9eded788ca1f81f735e06396994d 100644 (file)
@@ -1,8 +1,8 @@
-build.xml.data.CRC32=60d20eb4
+build.xml.data.CRC32=d34e9153
 build.xml.script.CRC32=cabe2e92
 build.xml.stylesheet.CRC32=5910fda3@1.51.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=60d20eb4
-nbproject/build-impl.xml.script.CRC32=2a012160
+nbproject/build-impl.xml.data.CRC32=d34e9153
+nbproject/build-impl.xml.script.CRC32=c8941b11
 nbproject/build-impl.xml.stylesheet.CRC32=6096d939@1.51.1
index 725afd77e650d8aaf8cb55252ba4f269f48be7e1..dcae3cd9c4df169789374dab7c1e7b58f357c228 100644 (file)
@@ -21,32 +21,41 @@ dist.javadoc.dir=${dist.dir}/javadoc
 endorsed.classpath=\
     ${libs.javaee-endorsed-api-6.0.classpath}
 excludes=
-file.reference.jcore.jar=lib/jcore.jar
-file.reference.jsfcore.jar=lib/jsfcore.jar
-file.reference.jshop.jar=lib/jshop.jar
+file.reference.cdi-api.jar=lib\\cdi-api.jar
+file.reference.commons-codec-1.10.jar=lib\\commons-codec-1.10.jar
+file.reference.commons-lang3-3.4.jar=lib\\commons-lang3-3.4.jar
+file.reference.jcore.jar=lib\\jcore.jar
+file.reference.jsfcore.jar=lib\\jsfcore.jar
+file.reference.jshop.jar=lib\\jshop.jar
 file.reference.log4j-api-2.3.jar=lib\\log4j-api-2.3.jar
 file.reference.log4j-core-2.3.jar=lib\\log4j-core-2.3.jar
+file.reference.log4j-web-2.3.jar=lib\\log4j-web-2.3.jar
 includes=**
 j2ee.compile.on.save=true
 j2ee.deploy.on.save=true
 j2ee.platform=1.7
-j2ee.platform.classpath=${j2ee.server.middleware}/mq/lib/jaxm-api.jar:${j2ee.server.home}/modules/endorsed/javax.annotation-api.jar:${j2ee.server.home}/modules/endorsed/jaxb-api-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/bean-validator.jar:${j2ee.server.home}/modules/javax.batch-api.jar:${j2ee.server.home}/modules/javax.ejb-api.jar:${j2ee.server.home}/modules/javax.el.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent-api.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent.jar:${j2ee.server.home}/modules/javax.enterprise.deploy-api.jar:${j2ee.server.home}/modules/javax.faces.jar:${j2ee.server.home}/modules/javax.inject.jar:${j2ee.server.home}/modules/javax.interceptor-api.jar:${j2ee.server.home}/modules/javax.jms-api.jar:${j2ee.server.home}/modules/javax.json.jar:${j2ee.server.home}/modules/javax.mail.jar:${j2ee.server.home}/modules/javax.management.j2ee-api.jar:${j2ee.server.home}/modules/javax.persistence.jar:${j2ee.server.home}/modules/javax.resource-api.jar:${j2ee.server.home}/modules/javax.security.auth.message-api.jar:${j2ee.server.home}/modules/javax.security.jacc-api.jar:${j2ee.server.home}/modules/javax.servlet-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl.jar:${j2ee.server.home}/modules/javax.transaction-api.jar:${j2ee.server.home}/modules/javax.websocket-api.jar:${j2ee.server.home}/modules/javax.ws.rs-api.jar:${j2ee.server.home}/modules/javax.xml.registry-api.jar:${j2ee.server.home}/modules/javax.xml.rpc-api.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/weld-osgi-bundle.jar
+j2ee.platform.classpath=${j2ee.server.middleware}/mq/lib/jaxm-api.jar:${j2ee.server.home}/modules/endorsed/javax.annotation-api.jar:${j2ee.server.home}/modules/endorsed/jaxb-api.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/bean-validator.jar:${j2ee.server.home}/modules/javax.batch-api.jar:${j2ee.server.home}/modules/javax.ejb-api.jar:${j2ee.server.home}/modules/javax.el.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent-api.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent.jar:${j2ee.server.home}/modules/javax.enterprise.deploy-api.jar:${j2ee.server.home}/modules/javax.faces.jar:${j2ee.server.home}/modules/javax.inject.jar:${j2ee.server.home}/modules/javax.interceptor-api.jar:${j2ee.server.home}/modules/javax.jms-api.jar:${j2ee.server.home}/modules/javax.json.jar:${j2ee.server.home}/modules/javax.mail.jar:${j2ee.server.home}/modules/javax.management.j2ee-api.jar:${j2ee.server.home}/modules/javax.persistence.jar:${j2ee.server.home}/modules/javax.resource-api.jar:${j2ee.server.home}/modules/javax.security.auth.message-api.jar:${j2ee.server.home}/modules/javax.security.jacc-api.jar:${j2ee.server.home}/modules/javax.servlet-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl.jar:${j2ee.server.home}/modules/javax.transaction-api.jar:${j2ee.server.home}/modules/javax.websocket-api.jar:${j2ee.server.home}/modules/javax.ws.rs-api.jar:${j2ee.server.home}/modules/javax.xml.registry-api.jar:${j2ee.server.home}/modules/javax.xml.rpc-api.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/weld-osgi-bundle.jar
 j2ee.platform.embeddableejb.classpath=${j2ee.server.home}/lib/embedded/glassfish-embedded-static-shell.jar
 j2ee.platform.wscompile.classpath=${j2ee.server.home}/modules/webservices-osgi.jar
-j2ee.platform.wsgen.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/endorsed/jaxb-api-osgi.jar
-j2ee.platform.wsimport.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/endorsed/jaxb-api-osgi.jar
+j2ee.platform.wsgen.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/endorsed/jaxb-api.jar
+j2ee.platform.wsimport.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/endorsed/jaxb-api.jar
 j2ee.platform.wsit.classpath=
 j2ee.server.type=gfv3ee6
 jar.compress=false
 jar.name=PizzaService-ejb.jar
 jars.in.ejbjar=false
 javac.classpath=\
+    ${reference.jshop.jar}:\
     ${reference.PizzaService-lib.jar}:\
+    ${file.reference.cdi-api.jar}:\
+    ${file.reference.commons-codec-1.10.jar}:\
+    ${file.reference.commons-lang3-3.4.jar}:\
     ${file.reference.jcore.jar}:\
     ${file.reference.jsfcore.jar}:\
     ${file.reference.jshop.jar}:\
     ${file.reference.log4j-api-2.3.jar}:\
-    ${file.reference.log4j-core-2.3.jar}
+    ${file.reference.log4j-core-2.3.jar}:\
+    ${file.reference.log4j-web-2.3.jar}
 javac.debug=true
 javac.deprecation=false
 javac.processorpath=\
@@ -72,7 +81,9 @@ javadoc.windowtitle=
 meta.inf=${source.root}/conf
 meta.inf.excludes=sun-cmp-mappings.xml
 platform.active=default_platform
+project.jshop=../../jshop
 project.PizzaService-lib=../../PizzaService-lib
+reference.jshop.jar=${project.jshop}/dist/jshop.jar
 reference.PizzaService-lib.jar=${project.PizzaService-lib}/dist/PizzaService-lib.jar
 resource.dir=setup
 run.test.classpath=\
@@ -82,9 +93,6 @@ run.test.classpath=\
 # (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value):
 runmain.jvmargs=
 source.encoding=UTF-8
-source.reference.jcore.jar=../jcore/src/
-source.reference.jsfcore.jar=../jsfcore/src/
-source.reference.jshop.jar=../jshop/src/
 source.root=src
 src.dir=${source.root}/java
 test.src.dir=test
index 813c622b1c59eef180c1dccb607d8edd76fea2a9..125251e5b045e808ddbd4c94a557270a5b9343ea 100644 (file)
@@ -5,12 +5,17 @@
         <data xmlns="http://www.netbeans.org/ns/j2ee-ejbjarproject/3">
             <name>PizzaService-ejb</name>
             <minimum-ant-version>1.6.5</minimum-ant-version>
+            <included-library dirs="200">reference.jshop.jar</included-library>
             <included-library dirs="200">reference.PizzaService-lib.jar</included-library>
+            <included-library dirs="200">file.reference.cdi-api.jar</included-library>
+            <included-library dirs="200">file.reference.commons-codec-1.10.jar</included-library>
+            <included-library dirs="200">file.reference.commons-lang3-3.4.jar</included-library>
             <included-library dirs="200">file.reference.jcore.jar</included-library>
             <included-library dirs="200">file.reference.jsfcore.jar</included-library>
             <included-library dirs="200">file.reference.jshop.jar</included-library>
             <included-library dirs="200">file.reference.log4j-api-2.3.jar</included-library>
             <included-library dirs="200">file.reference.log4j-core-2.3.jar</included-library>
+            <included-library dirs="200">file.reference.log4j-web-2.3.jar</included-library>
             <source-roots>
                 <root id="src.dir"/>
             </source-roots>
                 <clean-target>clean</clean-target>
                 <id>jar</id>
             </reference>
+            <reference>
+                <foreign-project>jshop</foreign-project>
+                <artifact-type>jar</artifact-type>
+                <script>build.xml</script>
+                <target>jar</target>
+                <clean-target>clean</clean-target>
+                <id>jar</id>
+            </reference>
         </references>
     </configuration>
 </project>
diff --git a/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/beans/pizzaservice/PizzaServiceSessionBean.java b/PizzaService-ejb/src/java/org/mxchange/pizzaapplication/beans/pizzaservice/PizzaServiceSessionBean.java
new file mode 100644 (file)
index 0000000..6a7a6f2
--- /dev/null
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2015 Roland Haeder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.pizzaapplication.beans.pizzaservice;
+
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.sql.SQLException;
+import java.text.MessageFormat;
+import java.util.Deque;
+import javax.annotation.PostConstruct;
+import javax.ejb.Stateless;
+import javax.faces.FacesException;
+import javax.inject.Named;
+import javax.servlet.ServletException;
+import org.mxchange.jcore.exceptions.BadTokenException;
+import org.mxchange.jcore.exceptions.CorruptedDatabaseFileException;
+import org.mxchange.jcore.exceptions.UnsupportedDatabaseBackendException;
+import org.mxchange.jshop.beans.BaseFrameworkBean;
+import org.mxchange.jshop.beans.shop.ShopSessionBeanRemote;
+import org.mxchange.jshop.category.Category;
+import org.mxchange.jshop.product.Product;
+import org.mxchange.pizzaapplication.application.PizzaApplication;
+import org.mxchange.pizzaapplication.application.PizzaServiceApplication;
+
+/**
+ * The session bean
+ *
+ * @author Roland Haeder
+ */
+@Named ("shop")
+@Stateless
+public class PizzaServiceSessionBean extends BaseFrameworkBean implements ShopSessionBeanRemote {
+
+       /**
+        * Serial number
+        */
+       private static final long serialVersionUID = 578314942948L;
+
+       /**
+        * Application instance
+        */
+       private final PizzaApplication app;
+
+       /**
+        * Initializer block
+        */
+       {
+               // Get new application instance
+               this.getLogger().debug("INITIALIZER!"); //NOI18N
+               this.app = new PizzaServiceApplication();
+       }
+
+       /**
+        * Default constructor
+        */
+       public PizzaServiceSessionBean () {
+               this.getLogger().trace("CALLED!"); //NOI18N
+       }
+
+       @PostConstruct
+       public void init () throws FacesException {
+               // Trace message
+               this.getLogger().trace(MessageFormat.format("application={0} - CALLED!", this.getApplication())); //NOI18N
+
+               // Must not be null
+               if (this.getApplication() == null) {
+                       // Abort here
+                       throw new NullPointerException("application is null"); //NOI18N
+               }
+
+               try {
+                       // Call init method
+                       this.app.init(this.getApplication());
+               } catch (final UnsupportedDatabaseBackendException | SQLException | IOException | BadTokenException ex) {
+                       // Continue to throw
+                       throw new FacesException(ex);
+               }
+       }
+
+       @Override
+       public Deque<Product> getAvailableProducts () throws ServletException {
+               try {
+                       return this.app.getAvailableProducts();
+               } catch (final IOException | BadTokenException | SQLException | CorruptedDatabaseFileException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) {
+                       // Continue to throw
+                       throw new ServletException(ex);
+               }
+       }
+
+       @Override
+       public Deque<Product> getAllProducts () throws ServletException {
+               try {
+                       return this.app.getAllProducts();
+               } catch (final IOException | BadTokenException | SQLException | CorruptedDatabaseFileException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) {
+                       // Continue to throw
+                       throw new ServletException(ex);
+               }
+       }
+
+       @Override
+       public Deque<Category> getAllCategories () throws ServletException {
+               try {
+                       return this.app.getAllCategories();
+               } catch (final IOException | BadTokenException | SQLException | CorruptedDatabaseFileException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) {
+                       // Continue to throw
+                       throw new ServletException(ex);
+               }
+       }
+}
diff --git a/PizzaService-war/build.xml b/PizzaService-war/build.xml
new file mode 100644 (file)
index 0000000..00b4eed
--- /dev/null
@@ -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="PizzaService-war" default="default" basedir=".">
+    <description>Builds, tests, and runs the project PizzaService-war.</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>
diff --git a/PizzaService-war/install/install.sql b/PizzaService-war/install/install.sql
new file mode 100644 (file)
index 0000000..d4bce3b
--- /dev/null
@@ -0,0 +1,52 @@
+DROP TABLE IF EXISTS `category`;
+CREATE TABLE IF NOT EXISTS `category` (
+`id` bigint(20) unsigned NOT NULL COMMENT 'Primary key',
+  `title` varchar(255) NOT NULL COMMENT 'Category title',
+  `parent` bigint(20) unsigned DEFAULT NULL COMMENT 'Parent category',
+  PRIMARY KEY (`id`),
+  INDEX `parent` (`parent`)
+) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COMMENT='Categories' ;
+
+DROP TABLE IF EXISTS `contacts`;
+CREATE TABLE IF NOT EXISTS `contacts` (
+`id` bigint(20) unsigned NOT NULL COMMENT 'Primary key',
+  `own_contact` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Whether own contact',
+  `gender` varchar(10) NOT NULL DEFAULT 'UNKNOWN' COMMENT 'Gender',
+  `first_name` varchar(100) NOT NULL COMMENT 'First name',
+  `family_name` varchar(100) NOT NULL COMMENT 'Family name',
+  `company_name` varchar(255) DEFAULT NULL COMMENT 'Company name',
+  `street` varchar(255) DEFAULT NULL COMMENT 'Street name',
+  `house_number` smallint(5) unsigned DEFAULT NULL COMMENT 'House number',
+  `city` varchar(100) DEFAULT NULL COMMENT 'City name',
+  `zip_code` smallint(5) unsigned DEFAULT NULL COMMENT 'ZIP code',
+  `country_code` char(2) DEFAULT NULL COMMENT 'Country code',
+  `phone_number` varchar(100) DEFAULT NULL COMMENT 'Phone number',
+  `cellphone_number` varchar(100) DEFAULT NULL COMMENT 'Cellphone number',
+  `fax_number` varchar(100) DEFAULT NULL COMMENT 'Fax number',
+  `email_address` varchar(100) DEFAULT NULL COMMENT 'Email addres',
+  `birthday` date DEFAULT NULL COMMENT 'Birth day',
+  `comment` tinytext NOT NULL COMMENT 'Comment',
+  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Entry created',
+  `updated` timestamp NULL DEFAULT NULL COMMENT 'Entry updated',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COMMENT='Contacts data' ;
+
+DROP TABLE IF EXISTS `products`;
+CREATE TABLE IF NOT EXISTS `products` (
+`id` bigint(20) unsigned NOT NULL COMMENT 'Primary key',
+  `category` bigint(20) unsigned DEFAULT NULL COMMENT 'Category id',
+  `title` varchar(255) NOT NULL COMMENT 'Title of product',
+  `price` decimal(20,2) unsigned NOT NULL COMMENT 'Product price',
+  `available` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Whether product is available',
+  PRIMARY KEY (`id`),
+  INDEX `category` (`category`)
+) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COMMENT='Products' ;
+
+ALTER TABLE `category`
+MODIFY `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key';
+
+ALTER TABLE `contacts`
+MODIFY `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key';
+
+ALTER TABLE `products`
+MODIFY `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key';
diff --git a/PizzaService-war/nbproject/ant-deploy.xml b/PizzaService-war/nbproject/ant-deploy.xml
new file mode 100644 (file)
index 0000000..2d5f877
--- /dev/null
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project default="-deploy-ant" basedir=".">
+    <target name="-init-cl-deployment-env" if="deploy.ant.enabled">
+        <property file="${deploy.ant.properties.file}" />
+        <available file="${deploy.ant.docbase.dir}/WEB-INF/sun-web.xml" property="sun.web.present"/>
+        <available file="${deploy.ant.docbase.dir}/WEB-INF/glassfish-web.xml" property="glassfish.web.present"/>
+        <available file="${deploy.ant.resource.dir}" property="has.setup"/>
+        <tempfile prefix="gfv3" property="gfv3.password.file" destdir="${java.io.tmpdir}"/>  <!-- do not forget to delete this! -->
+        <echo message="AS_ADMIN_PASSWORD=${gfv3.password}" file="${gfv3.password.file}"/>
+    </target>
+    
+    <target name="-parse-sun-web" depends="-init-cl-deployment-env" if="sun.web.present">
+        <tempfile prefix="gfv3" property="temp.sun.web" destdir="${java.io.tmpdir}"/>
+        <copy file="${deploy.ant.docbase.dir}/WEB-INF/sun-web.xml" tofile="${temp.sun.web}"/>
+        <!-- The doctype triggers resolution which can fail -->
+        <replace file="${temp.sun.web}">
+            <replacetoken><![CDATA[<!DOCTYPE]]></replacetoken>
+            <replacevalue><![CDATA[<!-- <!DOCTYPE]]></replacevalue>
+        </replace>
+        <replace file="${temp.sun.web}">
+            <replacetoken><![CDATA[<sun-web-app]]></replacetoken>
+            <replacevalue><![CDATA[--> <sun-web-app]]></replacevalue>
+        </replace>
+        <xmlproperty file="${temp.sun.web}" validate="false">
+        </xmlproperty>    
+        <delete file="${temp.sun.web}"/>
+        <condition property="deploy.ant.client.url" value="${gfv3.url}${sun-web-app.context-root}" else="${gfv3.url}/${ant.project.name}">
+            <isset property="sun-web-app.context-root"/>
+        </condition>
+        <condition property="deploy.context.root.argument" value="&amp;contextroot=${sun-web-app.context-root}" else="/${ant.project.name}">
+            <isset property="sun-web-app.context-root"/>
+        </condition>
+    </target>
+    <target name="-parse-glassfish-web" depends="-init-cl-deployment-env" if="glassfish.web.present">
+        <tempfile prefix="gfv3" property="temp.gf.web" destdir="${java.io.tmpdir}"/>
+        <copy file="${deploy.ant.docbase.dir}/WEB-INF/glassfish-web.xml" tofile="${temp.gf.web}"/>
+        <!-- The doctype triggers resolution which can fail -->
+        <replace file="${temp.gf.web}">
+            <replacetoken><![CDATA[<!DOCTYPE]]></replacetoken>
+            <replacevalue><![CDATA[<!-- <!DOCTYPE]]></replacevalue>
+        </replace>
+        <replace file="${temp.gf.web}">
+            <replacetoken><![CDATA[<glassfish-web-app]]></replacetoken>
+            <replacevalue><![CDATA[--> <glassfish-web-app]]></replacevalue>
+        </replace>
+        <xmlproperty file="${temp.gf.web}" validate="false">
+        </xmlproperty>
+        <delete file="${temp.gf.web}"/>
+        <condition property="deploy.ant.client.url" value="${gfv3.url}${glassfish-web-app.context-root}" else="${gfv3.url}/${ant.project.name}">
+            <isset property="glassfish-web-app.context-root"/>
+        </condition>
+        <condition property="deploy.context.root.argument" value="&amp;contextroot=${glassfish-web-app.context-root}" else="/${ant.project.name}">
+            <isset property="glassfish-web-app.context-root"/>
+        </condition>
+    </target>
+    <target name="-no-parse-sun-web" depends="-init-cl-deployment-env" unless="sun.web.present">
+        <property name="deploy.context.root.argument" value=""/>
+    </target>
+    <target name="-add-resources" depends="-init-cl-deployment-env" if="has.setup">
+        <tempfile prefix="gfv3" property="gfv3.resources.dir" destdir="${java.io.tmpdir}"/>
+        <mkdir dir="${gfv3.resources.dir}"/>
+        <mkdir dir="${gfv3.resources.dir}/META-INF"/>
+        <copy todir="${gfv3.resources.dir}/META-INF">
+            <fileset dir="${deploy.ant.resource.dir}"/>
+        </copy>
+        <jar destfile="${deploy.ant.archive}" update="true">
+            <fileset dir="${gfv3.resources.dir}"/>
+        </jar>
+        <delete dir="${gfv3.resources.dir}"/>
+    </target>
+    <target name="-deploy-ant" depends="-parse-glassfish-web, -parse-sun-web, -no-parse-sun-web,-add-resources" if="deploy.ant.enabled">
+        <antcall target="-deploy-without-pw"/>
+        <antcall target="-deploy-with-pw"/>
+    </target>
+
+    <target name="-deploy-without-pw" unless="gfv3.password">
+        <echo message="Deploying ${deploy.ant.archive}"/>
+        <tempfile prefix="gfv3" property="gfv3.results.file" destdir="${java.io.tmpdir}"/>  <!-- do not forget to delete this! -->
+        <property name="full.deploy.ant.archive" location="${deploy.ant.archive}"/>
+        <get src="${gfv3.admin.url}/__asadmin/deploy?path=${full.deploy.ant.archive}${deploy.context.root.argument}&amp;force=true&amp;name=${ant.project.name}"
+            dest="${gfv3.results.file}"/>
+        <delete file="${gfv3.results.file}"/>    
+    </target>
+    <target name="-deploy-with-pw" if="gfv3.password">
+        <echo message="Deploying ${deploy.ant.archive}"/>
+        <tempfile prefix="gfv3" property="gfv3.results.file" destdir="${java.io.tmpdir}"/>  <!-- do not forget to delete this! -->
+        <property name="full.deploy.ant.archive" location="${deploy.ant.archive}"/>
+        <get username="${gfv3.username}" password="${gfv3.password}" src="${gfv3.admin.url}/__asadmin/deploy?path=${full.deploy.ant.archive}${deploy.context.root.argument}&amp;force=true&amp;name=${ant.project.name}"
+            dest="${gfv3.results.file}"/>
+        <delete file="${gfv3.results.file}"/>
+    </target>
+    <target name="-undeploy-ant" depends="-init-cl-deployment-env" if="deploy.ant.enabled">
+        <antcall target="-undeploy-without-pw"/>
+        <antcall target="-undeploy-with-pw"/>
+    </target>
+
+    <target name="-undeploy-without-pw" unless="gfv3.password">
+        <echo message="Undeploying ${deploy.ant.archive}"/>
+        <tempfile prefix="gfv3" property="gfv3.results.file" destdir="${java.io.tmpdir}"/>  <!-- do not forget to delete this! -->
+        <get src="${gfv3.admin.url}/__asadmin/undeploy?name=${ant.project.name}"
+            dest="${gfv3.results.file}"/>
+        <delete file="${gfv3.results.file}"/>    
+    </target>
+    <target name="-undeploy-with-pw" if="gfv3.password">
+        <echo message="Undeploying ${deploy.ant.archive}"/>
+        <tempfile prefix="gfv3" property="gfv3.results.file" destdir="${java.io.tmpdir}"/>  <!-- do not forget to delete this! -->
+        <get username="${gfv3.username}" password="${gfv3.password}" src="${gfv3.admin.url}/__asadmin/undeploy?name=${ant.project.name}"
+            dest="${gfv3.results.file}"/>
+        <delete file="${gfv3.results.file}"/>
+    </target>
+</project>
diff --git a/PizzaService-war/nbproject/build-impl.xml b/PizzaService-war/nbproject/build-impl.xml
new file mode 100644 (file)
index 0000000..327afc7
--- /dev/null
@@ -0,0 +1,1449 @@
+<?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
+        - test compilation
+        - test execution
+        - test 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="PizzaService-war-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.old">
+            <and>
+                <isset property="do.display.browser"/>
+                <not>
+                    <isset property="do.debug.client"/>
+                </not>
+                <not>
+                    <isset property="browser.context"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="do.display.browser.debug">
+            <and>
+                <isset property="do.display.browser"/>
+                <not>
+                    <isset property="do.debug.client"/>
+                </not>
+                <isset property="browser.context"/>
+            </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}'">
+            <and>
+                <isset property="endorsed.classpath"/>
+                <length length="0" string="${endorsed.classpath}" when="greater"/>
+            </and>
+        </condition>
+        <condition else="false" property="jdkBug6558476">
+            <and>
+                <matches pattern="1\.[56]" string="${java.specification.version}"/>
+                <not>
+                    <os family="unix"/>
+                </not>
+            </and>
+        </condition>
+        <property name="javac.fork" value="${jdkBug6558476}"/>
+        <condition property="junit.available">
+            <or>
+                <available classname="org.junit.Test" classpath="${run.test.classpath}"/>
+                <available classname="junit.framework.Test" classpath="${run.test.classpath}"/>
+            </or>
+        </condition>
+        <condition property="testng.available">
+            <available classname="org.testng.annotations.Test" classpath="${run.test.classpath}"/>
+        </condition>
+        <condition property="junit+testng.available">
+            <and>
+                <istrue value="${junit.available}"/>
+                <istrue value="${testng.available}"/>
+            </and>
+        </condition>
+        <condition else="testng" property="testng.mode" value="mixed">
+            <istrue value="${junit+testng.available}"/>
+        </condition>
+        <condition else="" property="testng.debug.mode" value="-mixed">
+            <istrue value="${junit+testng.available}"/>
+        </condition>
+    </target>
+    <target depends="init" name="-init-cos" unless="deploy.on.save">
+        <condition property="deploy.on.save" value="true">
+            <or>
+                <istrue value="${j2ee.deploy.on.save}"/>
+                <istrue value="${j2ee.compile.on.save}"/>
+            </or>
+        </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}" fork="${javac.fork}" 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="${line.separator}" property="javac.includes.binary">
+                    <path>
+                        <filelist dir="@{destdir}" files="${javac.includes}"/>
+                    </path>
+                    <globmapper from="*.java" to="*.class"/>
+                </pathconvert>
+                <tempfile deleteonexit="true" property="javac.includesfile.binary"/>
+                <echo file="${javac.includesfile.binary}" message="${javac.includes.binary}"/>
+                <delete>
+                    <files includesfile="${javac.includesfile.binary}"/>
+                </delete>
+                <delete file="${javac.includesfile.binary}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target if="${junit.available}" name="-init-macrodef-junit-init">
+        <condition else="false" property="nb.junit.batch" value="true">
+            <and>
+                <istrue value="${junit.available}"/>
+                <not>
+                    <isset property="test.method"/>
+                </not>
+            </and>
+        </condition>
+        <condition else="false" property="nb.junit.single" value="true">
+            <and>
+                <istrue value="${junit.available}"/>
+                <isset property="test.method"/>
+            </and>
+        </condition>
+    </target>
+    <target name="-init-test-properties">
+        <property name="test.binaryincludes" value="&lt;nothing&gt;"/>
+        <property name="test.binarytestincludes" value=""/>
+        <property name="test.binaryexcludes" value=""/>
+    </target>
+    <target if="${nb.junit.single}" name="-init-macrodef-junit-single" unless="${nb.junit.batch}">
+        <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"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <junit dir="${basedir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true" tempdir="${java.io.tmpdir}">
+                    <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-test-properties" if="${nb.junit.batch}" name="-init-macrodef-junit-batch" unless="${nb.junit.single}">
+        <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"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="run.jvmargs.ide" value=""/>
+                <junit dir="${basedir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true" tempdir="${build.dir}">
+                    <batchtest todir="${build.test.results.dir}">
+                        <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
+                            <filename name="@{testincludes}"/>
+                        </fileset>
+                        <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}">
+                            <filename name="${test.binarytestincludes}"/>
+                        </fileset>
+                    </batchtest>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <jvmarg line="${run.jvmargs.ide}"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit-init,-init-macrodef-junit-single, -init-macrodef-junit-batch" if="${junit.available}" name="-init-macrodef-junit"/>
+    <target if="${testng.available}" name="-init-macrodef-testng">
+        <macrodef name="testng" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <condition else="" property="testng.methods.arg" value="@{testincludes}.@{testmethods}">
+                    <isset property="test.method"/>
+                </condition>
+                <union id="test.set">
+                    <fileset dir="${test.src.dir}" excludes="@{excludes},**/*.xml,${excludes}" includes="@{includes}">
+                        <filename name="@{testincludes}"/>
+                    </fileset>
+                </union>
+                <taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
+                <testng classfilesetref="test.set" failureProperty="tests.failed" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="PizzaService-war" testname="TestNG tests" workingDir="${basedir}">
+                    <xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
+                    <propertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </propertyset>
+                    <customize/>
+                </testng>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-test-impl">
+        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <echo>No tests executed.</echo>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit" if="${junit.available}" name="-init-macrodef-junit-impl">
+        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <webproject2:junit excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize/>
+                </webproject2:junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-testng" if="${testng.available}" name="-init-macrodef-testng-impl">
+        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <webproject2:testng excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize/>
+                </webproject2:testng>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-test-impl,-init-macrodef-junit-impl,-init-macrodef-testng-impl" name="-init-macrodef-test">
+        <macrodef name="test" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <sequential>
+                <webproject2:test-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize>
+                        <classpath>
+                            <path path="${run.test.classpath}:${j2ee.platform.classpath}:${j2ee.platform.embeddableejb.classpath}"/>
+                        </classpath>
+                        <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                        <jvmarg line="${runmain.jvmargs}"/>
+                    </customize>
+                </webproject2:test-impl>
+            </sequential>
+        </macrodef>
+    </target>
+    <target if="${junit.available}" name="-init-macrodef-junit-debug" unless="${nb.junit.batch}">
+        <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <junit dir="${basedir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true" tempdir="${java.io.tmpdir}">
+                    <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-test-properties" if="${nb.junit.batch}" name="-init-macrodef-junit-debug-batch">
+        <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="run.jvmargs.ide" value=""/>
+                <junit dir="${basedir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true" tempdir="${build.dir}">
+                    <batchtest todir="${build.test.results.dir}">
+                        <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
+                            <filename name="@{testincludes}"/>
+                        </fileset>
+                        <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}">
+                            <filename name="${test.binarytestincludes}"/>
+                        </fileset>
+                    </batchtest>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <jvmarg line="${run.jvmargs.ide}"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit-debug,-init-macrodef-junit-debug-batch" if="${junit.available}" name="-init-macrodef-junit-debug-impl">
+        <macrodef name="test-debug-impl" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <webproject2:junit-debug excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize/>
+                </webproject2:junit-debug>
+            </sequential>
+        </macrodef>
+    </target>
+    <target if="${testng.available}" name="-init-macrodef-testng-debug">
+        <macrodef name="testng-debug" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <element name="customize2" optional="true"/>
+            <sequential>
+                <condition else="-testclass @{testClass}" property="test.class.or.method" value="-methods @{testClass}.@{testMethod}">
+                    <isset property="test.method"/>
+                </condition>
+                <condition else="-suitename PizzaService-war -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}">
+                    <matches pattern=".*\.xml" string="@{testClass}"/>
+                </condition>
+                <delete dir="${build.test.results.dir}" quiet="true"/>
+                <mkdir dir="${build.test.results.dir}"/>
+                <webproject1:debug args="${testng.cmd.args}" classname="org.testng.TestNG" classpath="${debug.test.classpath}:${j2ee.platform.embeddableejb.classpath}">
+                    <customize>
+                        <customize2/>
+                        <jvmarg value="-ea"/>
+                        <arg line="${testng.debug.mode}"/>
+                        <arg line="-d ${build.test.results.dir}"/>
+                        <arg line="-listener org.testng.reporters.VerboseReporter"/>
+                    </customize>
+                </webproject1:debug>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-testng-debug" if="${testng.available}" name="-init-macrodef-testng-debug-impl">
+        <macrodef name="testng-debug-impl" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <element implicit="true" name="customize2" optional="true"/>
+            <sequential>
+                <webproject2:testng-debug testClass="@{testClass}" testMethod="@{testMethod}">
+                    <customize2/>
+                </webproject2:testng-debug>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit-debug-impl" if="${junit.available}" name="-init-macrodef-test-debug-junit">
+        <macrodef name="test-debug" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <sequential>
+                <webproject2:test-debug-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize>
+                        <classpath>
+                            <path path="${run.test.classpath}:${j2ee.platform.classpath}:${j2ee.platform.embeddableejb.classpath}"/>
+                        </classpath>
+                        <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                        <jvmarg line="${runmain.jvmargs}"/>
+                    </customize>
+                </webproject2:test-debug-impl>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-testng-debug-impl" if="${testng.available}" name="-init-macrodef-test-debug-testng">
+        <macrodef name="test-debug" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <sequential>
+                <webproject2:testng-debug-impl testClass="@{testClass}" testMethod="@{testMethod}">
+                    <customize2>
+                        <syspropertyset>
+                            <propertyref prefix="test-sys-prop."/>
+                            <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                        </syspropertyset>
+                    </customize2>
+                </webproject2:testng-debug-impl>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-test-debug-junit,-init-macrodef-test-debug-testng" name="-init-macrodef-test-debug"/>
+    <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>
+    <!--
+                pre NB7.2 profiling section; consider it deprecated
+            -->
+    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-check" if="profiler.info.jvmargs.agent" name="profile-init"/>
+    <target if="profiler.info.jvmargs.agent" name="-profile-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="profiler.info.jvmargs.agent" name="-profile-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-profile-pre-init, init, -profile-post-init" if="profiler.info.jvmargs.agent" name="-profile-init-check">
+        <fail unless="profiler.info.jvm">Must set JVM to use for profiling in profiler.info.jvm</fail>
+        <fail unless="profiler.info.jvmargs.agent">Must set profiler agent JVM arguments in profiler.info.jvmargs.agent</fail>
+    </target>
+    <!--
+                end of pre NB7.2 profiling section
+            -->
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-test,-init-macrodef-test-debug,-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">
+        <ant antfile="${project.PizzaService-ejb}/build.xml" inheritall="false" target="dist"/>
+    </target>
+    <target depends="init" if="dist.ear.dir" name="deps-ear-jar" unless="no.deps">
+        <ant antfile="${project.PizzaService-ejb}/build.xml" inheritall="false" target="dist-ear">
+            <property location="${build.dir}" name="dist.ear.dir"/>
+        </ant>
+    </target>
+    <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 orm.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"/>
+    <property name="jspc.schemas" value="/resources/schemas/"/>
+    <property name="jspc.dtds" value="/resources/dtds/"/>
+    <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="-schemas ${jspc.schemas}"/>
+            <arg value="-dtds ${jspc.dtds}"/>
+            <arg value="-compilerSourceVM ${javac.source}"/>
+            <arg value="-compilerTargetVM ${javac.target}"/>
+            <arg value="-javaEncoding ${source.encoding}"/>
+            <arg value="-sysClasspath ${libs.jsp-compilation-syscp.classpath}"/>
+            <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="-schemas ${jspc.schemas}"/>
+            <arg value="-dtds ${jspc.dtds}"/>
+            <arg value="-sysClasspath ${libs.jsp-compilation-syscp.classpath}"/>
+            <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}" excludes="WEB-INF/classes/.netbeans_*,${dist.archive.excludes}"/>
+        </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}" excludes="WEB-INF/classes/.netbeans_*,${dist.archive.excludes}"/>
+        </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}" excludes="WEB-INF/classes/.netbeans_*,${dist.archive.excludes}"/>
+        </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}" excludes="WEB-INF/classes/.netbeans_*,${dist.archive.excludes}"/>
+        </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">
+        <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"/>
+    <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}" excludes="WEB-INF/classes/.netbeans_*,${dist.archive.excludes}"/>
+        </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,-do-update-breakpoints" name="run-deploy"/>
+    <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-old,-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.old">
+            <and>
+                <isset property="netbeans.home"/>
+                <not>
+                    <isset property="browser.context"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="do.display.browser.nb">
+            <and>
+                <isset property="netbeans.home"/>
+                <isset property="browser.context"/>
+            </and>
+        </condition>
+        <condition property="do.display.browser.cl">
+            <isset property="deploy.ant.enabled"/>
+        </condition>
+    </target>
+    <target if="do.display.browser.nb.old" name="-display-browser-nb-old">
+        <nbbrowse url="${client.url}"/>
+    </target>
+    <target if="do.display.browser.nb" name="-display-browser-nb">
+        <nbbrowse context="${browser.context}" url="${client.url}" urlPath="${client.urlPart}"/>
+    </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>
+    <target depends="init" if="netbeans.home" name="-do-update-breakpoints">
+        <webproject1:nbjpdaappreloaded/>
+    </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-old"/>
+        <antcall target="debug-display-browser"/>
+        <antcall target="connect-client-debugger"/>
+    </target>
+    <target if="do.debug.server" name="connect-debugger" unless="is.debugged">
+        <condition property="listeningcp" value="sourcepath">
+            <istrue value="${j2ee.compile.on.save}"/>
+        </condition>
+        <nbjpdaconnect address="${jpda.address}" host="${jpda.host}" listeningcp="${listeningcp}" 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.old" name="debug-display-browser-old">
+        <nbbrowse url="${client.url}"/>
+    </target>
+    <target if="do.display.browser.debug" name="debug-display-browser">
+        <nbbrowse context="${browser.context}" url="${client.url}" urlPath="${client.urlPart}"/>
+    </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"/>
+    <!--
+            =================
+            PROFILING SECTION
+            =================
+            -->
+    <!--
+                pre NB7.2 profiling section; consider it deprecated
+            -->
+    <target description="Profile a J2EE project in the IDE." if="profiler.info.jvmargs.agent" name="-profile-pre72">
+        <condition else="start-profiled-server" property="profiler.startserver.target" value="start-profiled-server-extraargs">
+            <isset property="profiler.info.jvmargs.extra"/>
+        </condition>
+        <antcall target="${profiler.startserver.target}"/>
+        <antcall target="run"/>
+        <antcall target="-profile-start-loadgen"/>
+    </target>
+    <target if="profiler.info.jvmargs.agent" name="start-profiled-server">
+        <nbstartprofiledserver forceRestart="${profiler.j2ee.serverForceRestart}" javaPlatform="${profiler.info.javaPlatform}" startupTimeout="${profiler.j2ee.serverStartupTimeout}">
+            <jvmarg value="${profiler.info.jvmargs.agent}"/>
+            <jvmarg value="${profiler.j2ee.agentID}"/>
+        </nbstartprofiledserver>
+    </target>
+    <target if="profiler.info.jvmargs.agent" name="start-profiled-server-extraargs">
+        <nbstartprofiledserver forceRestart="${profiler.j2ee.serverForceRestart}" javaPlatform="${profiler.info.javaPlatform}" startupTimeout="${profiler.j2ee.serverStartupTimeout}">
+            <jvmarg value="${profiler.info.jvmargs.extra}"/>
+            <jvmarg value="${profiler.info.jvmargs.agent}"/>
+            <jvmarg value="${profiler.j2ee.agentID}"/>
+        </nbstartprofiledserver>
+    </target>
+    <target depends="profile-init,compile-test-single" if="profiler.info.jvmargs.agent" name="-profile-test-single-pre72">
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.test.classpath}"/>
+                <path path="${j2ee.platform.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <junit dir="${profiler.info.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${profiler.info.jvm}" showoutput="true">
+            <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
+            <jvmarg value="${profiler.info.jvmargs.agent}"/>
+            <jvmarg line="${profiler.info.jvmargs}"/>
+            <test name="${profile.class}"/>
+            <classpath>
+                <path path="${run.test.classpath}"/>
+                <path path="${j2ee.platform.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"/>
+        </junit>
+    </target>
+    <target if="netbeans.home" name="-profile-check">
+        <condition property="profiler.configured">
+            <or>
+                <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-agentpath:"/>
+                <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-javaagent:"/>
+            </or>
+        </condition>
+    </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" name="-do-profile">
+        <startprofiler/>
+        <nbstartserver profilemode="true"/>
+        <nbdeploy clientUrlPart="${client.urlPart}" forceRedeploy="true" profilemode="true"/>
+        <antcall target="debug-display-browser-old"/>
+        <antcall target="debug-display-browser"/>
+        <antcall target="-profile-start-loadgen"/>
+    </target>
+    <target depends="-profile-check,-profile-pre72" description="Profile a J2EE project in the IDE." if="profiler.configured" name="profile" unless="profiler.info.jvmargs.agent">
+        <antcall target="-do-profile"/>
+    </target>
+    <target depends="-profile-test-single-pre72" name="profile-test-single"/>
+    <target depends="-profile-check" if="profiler.configured" name="profile-test" unless="profiler.info.jvmargs.agent">
+        <startprofiler/>
+        <antcall target="test-single"/>
+    </target>
+    <target if="profiler.loadgen.path" name="-profile-start-loadgen">
+        <loadgenstart path="${profiler.loadgen.path}"/>
+    </target>
+    <!--
+                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>
+        <copy todir="${dist.javadoc.dir}">
+            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
+                <filename name="**/doc-files/**"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/doc-files/**"/>
+            </fileset>
+        </copy>
+    </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"/>
+    <!--
+                
+                TEST 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"/>
+    <!--
+                
+                TEST 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:test includes="${includes}" 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:test excludes="" includes="${test.includes}" testincludes="${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"/>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single-method">
+        <fail unless="test.class">Must select some files in the IDE or set test.class</fail>
+        <fail unless="test.method">Must select some method in the IDE or set test.method</fail>
+        <webproject2:test excludes="" includes="${javac.includes}" testincludes="${test.class}" testmethods="${test.method}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method" if="have.tests" name="-post-test-run-single-method">
+        <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-method,-post-test-run-single-method" description="Run single unit test." name="test-single-method"/>
+    <!--
+                
+                TEST DEBUGGING SECTION
+            -->
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <webproject2:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testincludes="${javac.includes}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test-method">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <fail unless="test.method">Must select some method in the IDE or set test.method</fail>
+        <webproject2:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testMethod="${test.method}" testincludes="${test.class}" testmethods="${test.method}"/>
+    </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,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test-method" name="debug-test-method"/>
+    <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" name="deps-clean" unless="no.deps">
+        <ant antfile="${project.PizzaService-ejb}/build.xml" inheritall="false" target="clean"/>
+    </target>
+    <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>
diff --git a/PizzaService-war/nbproject/genfiles.properties b/PizzaService-war/nbproject/genfiles.properties
new file mode 100644 (file)
index 0000000..80e2421
--- /dev/null
@@ -0,0 +1,8 @@
+build.xml.data.CRC32=2c0f0a33
+build.xml.script.CRC32=82213886
+build.xml.stylesheet.CRC32=651128d4@1.68.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=2c0f0a33
+nbproject/build-impl.xml.script.CRC32=8ab119d1
+nbproject/build-impl.xml.stylesheet.CRC32=99ea4b56@1.68.1.1
diff --git a/PizzaService-war/nbproject/project.properties b/PizzaService-war/nbproject/project.properties
new file mode 100644 (file)
index 0000000..0562182
--- /dev/null
@@ -0,0 +1,92 @@
+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
+# Files to be excluded from distribution war
+dist.archive.excludes=
+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=\
+    ${libs.javaee-endorsed-api-6.0.classpath}
+excludes=
+includes=**
+j2ee.compile.on.save=true
+j2ee.copy.static.files.on.save=true
+j2ee.deploy.on.save=true
+j2ee.platform=1.7
+j2ee.platform.classpath=${j2ee.server.middleware}/mq/lib/jaxm-api.jar:${j2ee.server.home}/modules/endorsed/javax.annotation-api.jar:${j2ee.server.home}/modules/endorsed/jaxb-api.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/bean-validator.jar:${j2ee.server.home}/modules/javax.batch-api.jar:${j2ee.server.home}/modules/javax.ejb-api.jar:${j2ee.server.home}/modules/javax.el.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent-api.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent.jar:${j2ee.server.home}/modules/javax.enterprise.deploy-api.jar:${j2ee.server.home}/modules/javax.faces.jar:${j2ee.server.home}/modules/javax.inject.jar:${j2ee.server.home}/modules/javax.interceptor-api.jar:${j2ee.server.home}/modules/javax.jms-api.jar:${j2ee.server.home}/modules/javax.json.jar:${j2ee.server.home}/modules/javax.mail.jar:${j2ee.server.home}/modules/javax.management.j2ee-api.jar:${j2ee.server.home}/modules/javax.persistence.jar:${j2ee.server.home}/modules/javax.resource-api.jar:${j2ee.server.home}/modules/javax.security.auth.message-api.jar:${j2ee.server.home}/modules/javax.security.jacc-api.jar:${j2ee.server.home}/modules/javax.servlet-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl.jar:${j2ee.server.home}/modules/javax.transaction-api.jar:${j2ee.server.home}/modules/javax.websocket-api.jar:${j2ee.server.home}/modules/javax.ws.rs-api.jar:${j2ee.server.home}/modules/javax.xml.registry-api.jar:${j2ee.server.home}/modules/javax.xml.rpc-api.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/weld-osgi-bundle.jar
+j2ee.platform.embeddableejb.classpath=${j2ee.server.home}/lib/embedded/glassfish-embedded-static-shell.jar
+j2ee.platform.wscompile.classpath=${j2ee.server.home}/modules/webservices-osgi.jar
+j2ee.platform.wsgen.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/endorsed/jaxb-api.jar
+j2ee.platform.wsimport.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/endorsed/jaxb-api.jar
+j2ee.platform.wsit.classpath=
+j2ee.server.type=gfv3ee6
+jar.compress=false
+javac.classpath=\
+    ${reference.PizzaService-ejb.dist}
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.debug=true
+javac.deprecation=false
+javac.processorpath=\
+    ${javac.classpath}
+javac.source=1.7
+javac.target=1.7
+javac.test.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}
+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
+no.dependencies=false
+persistence.xml.dir=${conf.dir}
+platform.active=default_platform
+project.PizzaService-ejb=../PizzaService-ejb
+reference.PizzaService-ejb.dist=${project.PizzaService-ejb}/dist/PizzaService-ejb.jar
+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=${war.name}
+war.name=PizzaService-war.war
+web.docbase.dir=web
+webinf.dir=web/WEB-INF
diff --git a/PizzaService-war/nbproject/project.xml b/PizzaService-war/nbproject/project.xml
new file mode 100644 (file)
index 0000000..e574a6f
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.web.project</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/web-project/3">
+            <name>PizzaService-war</name>
+            <minimum-ant-version>1.6.5</minimum-ant-version>
+            <web-module-libraries>
+                <library dirs="100">
+                    <file>${reference.PizzaService-ejb.dist}</file>
+                </library>
+            </web-module-libraries>
+            <web-module-additional-libraries/>
+            <source-roots>
+                <root id="src.dir" name="Source Packages"/>
+            </source-roots>
+            <test-roots>
+                <root id="test.src.dir" name="Test Packages"/>
+            </test-roots>
+        </data>
+        <references xmlns="http://www.netbeans.org/ns/ant-project-references/1">
+            <reference>
+                <foreign-project>PizzaService-ejb</foreign-project>
+                <artifact-type>jar</artifact-type>
+                <script>build.xml</script>
+                <target>dist</target>
+                <clean-target>clean</clean-target>
+                <id>dist</id>
+            </reference>
+        </references>
+    </configuration>
+</project>
diff --git a/PizzaService-war/src/conf/MANIFEST.MF b/PizzaService-war/src/conf/MANIFEST.MF
new file mode 100644 (file)
index 0000000..59499bc
--- /dev/null
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+
diff --git a/PizzaService-war/web/WEB-INF/faces-config.xml b/PizzaService-war/web/WEB-INF/faces-config.xml
new file mode 100644 (file)
index 0000000..59dad75
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<faces-config version="2.2"
+                         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+       <validator>
+               <validator-id>PrivacyTermsCheckboxValidator</validator-id>
+               <validator-class>org.mxchange.jsfcore.validator.bool.privacy_terms.PrivacyTermsCheckboxValidator</validator-class>
+       </validator>
+       <validator>
+               <validator-id>NameValidator</validator-id>
+               <validator-class>org.mxchange.jsfcore.validator.string.names.NameValidator</validator-class>
+       </validator>
+</faces-config>
diff --git a/PizzaService-war/web/WEB-INF/glassfish-web.xml b/PizzaService-war/web/WEB-INF/glassfish-web.xml
new file mode 100644 (file)
index 0000000..730d586
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/PizzaService-war</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/PizzaService-war/web/WEB-INF/templates.dist/guest_page.xhtml b/PizzaService-war/web/WEB-INF/templates.dist/guest_page.xhtml
new file mode 100644 (file)
index 0000000..7439d63
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
+               <ui:define name="title">Your page's title here</ui:define>
+
+               <ui:define name="menu">
+                       <ui:include id="menu" class="guest_menu" src="/WEB-INF/templates/guest/guest_menu.tpl" />
+               </ui:define>
+
+               <ui:define name="content_header">
+                       Your header above content here
+               </ui:define>
+
+               <ui:define name="content">
+                       Here goes your content.
+               </ui:define>
+
+               <ui:define name="footer">
+                       <ui:include id="footer" class="guest_footer" src="/WEB-INF/templates/guest/guest_footer.tpl" />
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/PizzaService-war/web/WEB-INF/templates/base.tpl b/PizzaService-war/web/WEB-INF/templates/base.tpl
new file mode 100644 (file)
index 0000000..d191bf6
--- /dev/null
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:h="http://java.sun.com/jsf/html"
+       xmlns:ui="http://java.sun.com/jsf/facelets"
+       xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+       <h:head>
+               <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+
+               <f:loadBundle var="msg" basename="org.mxchange.localization.bundle" />
+
+               <h:outputStylesheet name="./css/default.css" />
+               <h:outputStylesheet name="./css/cssLayout.css" />
+
+               <title>Pizza-Service - <ui:insert name="title">Default title</ui:insert></title>
+       </h:head>
+
+       <h:body>
+               <div id="top">
+                       <div id="header"> 
+                               <div id="title">
+                                       <h1>Pizza-Service - <ui:insert name="title">Default title</ui:insert></h1>
+                               </div>
+                       </div>
+               </div>
+
+               <div id="menu_content">
+                       <div id="left">
+                               <ui:insert name="menu">Default menu</ui:insert>
+                       </div>
+
+                       <div id="content" class="left_content">
+                               <ui:insert name="content_header">Default content header</ui:insert>
+                               <ui:insert name="content">Default content</ui:insert>
+                       </div>
+
+                       <div class="clear"></div>
+               </div>
+
+               <div id="footer">
+                       <ui:insert name="footer">Default footer</ui:insert>
+               </div>
+       </h:body>
+</html>
diff --git a/PizzaService-war/web/WEB-INF/templates/generic/gender_selection_box.tpl b/PizzaService-war/web/WEB-INF/templates/generic/gender_selection_box.tpl
new file mode 100644 (file)
index 0000000..a6fff29
--- /dev/null
@@ -0,0 +1,13 @@
+<ui:composition
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:f="http://java.sun.com/jsf/core"
+       xmlns:h="http://java.sun.com/jsf/html"
+       xmlns:ui="http://java.sun.com/jsf/facelets">
+
+       <!--
+       TODO: Missing pre-select of chosen gender?
+       //-->
+       <h:selectOneMenu class="select" id="gender" value="#{customer.gender}">
+               <f:selectItems value="#{data.selectableGenders}" var="gender" itemValue="#{gender}" itemLabel="#{msg[gender.messageKey]}" />
+       </h:selectOneMenu>
+</ui:composition>
diff --git a/PizzaService-war/web/WEB-INF/templates/guest/guest_base.tpl b/PizzaService-war/web/WEB-INF/templates/guest/guest_base.tpl
new file mode 100644 (file)
index 0000000..5d8856b
--- /dev/null
@@ -0,0 +1,13 @@
+<ui:composition
+       template="/WEB-INF/templates/base.tpl"
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:f="http://java.sun.com/jsf/core"
+       xmlns:h="http://java.sun.com/jsf/html"
+       xmlns:ui="http://java.sun.com/jsf/facelets">
+
+       <!--
+       TODO Unused:
+       xmlns:basket="http://mxchange.org/jshop/tags/basket"
+       <basket:mini_basket basket="#{basket}" />
+       //-->
+</ui:composition>
diff --git a/PizzaService-war/web/WEB-INF/templates/guest/guest_footer.tpl b/PizzaService-war/web/WEB-INF/templates/guest/guest_footer.tpl
new file mode 100644 (file)
index 0000000..6462748
--- /dev/null
@@ -0,0 +1,16 @@
+<ui:composition
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:f="http://java.sun.com/jsf/core"
+       xmlns:h="http://java.sun.com/jsf/html"
+       xmlns:ui="http://java.sun.com/jsf/facelets">
+       <div class="footer">
+               <ul class="footer_nav">
+                       <li><h:link outcome="index" value="Home" /></li>
+                       <li><h:link outcome="imprint" value="Impressum" /></li>
+                       <li><h:link outcome="terms" value="AGBs" /></li>
+                       <li><h:link outcome="privacy" value="Datenschutz" /></li>
+               </ul>
+       </div>
+
+       <div class="clear"></div>
+</ui:composition>
diff --git a/PizzaService-war/web/WEB-INF/templates/guest/guest_login_form.tpl b/PizzaService-war/web/WEB-INF/templates/guest/guest_login_form.tpl
new file mode 100644 (file)
index 0000000..a0a719b
--- /dev/null
@@ -0,0 +1,48 @@
+<ui:composition
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:f="http://java.sun.com/jsf/core"
+       xmlns:h="http://java.sun.com/jsf/html"
+       xmlns:ui="http://java.sun.com/jsf/facelets">
+       <div id="customer_login_content">
+               <h:form acceptcharset="utf-8" id="login_form">
+                       <div class="table">
+                               <div class="table_header">
+                                       Bitte geben Sie Ihre Kundennummer und Passwort ein:
+                               </div>
+
+                               <fieldset id="login_data">
+                                       <legend title="Bitte geben Sie Ihre Kundennummer und das dazugehörige Passwort ein.">Bitte Daten eingeben:</legend>
+
+                                       <div class="table_row">
+                                               <div class="table_left">
+                                                       <h:outputLabel for="id" value="Kundennummer:" />
+                                               </div>
+
+                                               <div class="table_right">
+                                                       <h:inputText class="input" id="id" size="10" maxlength="20" />
+                                               </div>
+                                       </div>
+
+                                       <div class="clear"></div>
+
+                                       <div class="table_row">
+                                               <div class="table_left">
+                                                       <h:outputLabel for="password" value="Passwort:" />
+                                               </div>
+
+                                               <div class="table_right">
+                                                       <h:inputSecret class="input" id="password" size="10" maxlength="255" />
+                                               </div>
+                                       </div>
+
+                                       <div class="clear"></div>
+                               </fieldset>
+
+                               <div class="table_footer">
+                                       <h:commandButton class="reset" type="reset" value="Formular zurücksetzen" />
+                                       <h:commandButton class="submit" type="submit" action="#{controller.doLogin()}" value="Einloggen" />
+                               </div>
+                       </div>
+               </h:form>
+       </div>
+</ui:composition>
diff --git a/PizzaService-war/web/WEB-INF/templates/guest/guest_menu.tpl b/PizzaService-war/web/WEB-INF/templates/guest/guest_menu.tpl
new file mode 100644 (file)
index 0000000..0e4d718
--- /dev/null
@@ -0,0 +1,27 @@
+<ui:composition
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:f="http://java.sun.com/jsf/core"
+       xmlns:h="http://java.sun.com/jsf/html"
+       xmlns:ui="http://java.sun.com/jsf/facelets">
+       <div class="menu">
+               <div class="menu_header">
+                       Home
+               </div>
+
+               <ul>
+                       <li><h:link title="Eingangsseite" outcome="index" value="Home" /></li>
+                       <li><h:link title="Zum Warenkorb" outcome="basket" value="Zum Warenkorb" /></li>
+                       <li><h:link title="Sitzung beennden" outcome="bye" value="Sitzung beenden" /></li>
+               </ul>
+
+               <div class="menu_header">
+                       Kundenlogin
+               </div>
+
+               <ul>
+                       <li><h:link title="Login für bestehende Kunden" outcome="customer_login" value="Einloggen" /></li>
+                       <li><h:link title="Anmeldung als neuer Kunde" outcome="customer_register" value="Neuer Kunde" /></li>
+                       <li><h:link title="Neues Passwort erstellen" outcome="customer_lost_passwd" value="Passwort vergessen?" /></li>
+               </ul>
+       </div>
+</ui:composition>
diff --git a/PizzaService-war/web/WEB-INF/tlds/basket.tld b/PizzaService-war/web/WEB-INF/tlds/basket.tld
new file mode 100644 (file)
index 0000000..234caf2
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd">
+       <tlib-version>1.0</tlib-version>
+       <jsp-version>1.2</jsp-version>
+       <short-name>basket</short-name>
+       <uri>http://mxchange.org/jshop/tags/basket</uri>
+
+       <tag>
+               <name>mini_basket</name>
+               <description>A mini basket showing latest added item and a link to the full basket web page</description>
+               <tag-class>org.mxchange.pizzaapplication.tags.basket.MiniBasketTag</tag-class>
+               <attribute>
+                       <name>basket</name>
+                       <description>Basket instance, should be the same as the bean</description>
+                       <required>true</required>
+                       <rtexprvalue>true</rtexprvalue>
+                       <type>org.mxchange.jshop.beans.basket.BasketBean</type>
+               </attribute>
+       </tag>
+</taglib>
diff --git a/PizzaService-war/web/WEB-INF/web.xml b/PizzaService-war/web/WEB-INF/web.xml
new file mode 100644 (file)
index 0000000..fe867e3
--- /dev/null
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+       <context-param>
+               <description>Full-qualified back class name, must implement DatabaseBackend interface</description>
+               <param-name>database.backend.class</param-name>
+               <param-value>org.mxchange.jcore.database.backend.base64.Base64CsvDatabaseBackend</param-value>
+       </context-param>
+       <context-param>
+               <description>Login name for MySQL database, mostly not root</description>
+               <param-name>database.mysql.login</param-name>
+               <param-value>root</param-value>
+       </context-param>
+       <context-param>
+               <description>Password for above login, an empty password can be archived by setting a space</description>
+               <param-name>database.mysql.password</param-name>
+               <param-value>root</param-value>
+       </context-param>
+       <context-param>
+               <description>Hostname or IP address for MySQL server</description>
+               <param-name>database.mysql.host</param-name>
+               <param-value>localhost</param-value>
+       </context-param>
+       <context-param>
+               <description>Name of MySQL catalog</description>
+               <param-name>database.mysql.dbname</param-name>
+               <param-value>test</param-value>
+       </context-param>
+       <context-param>
+               <description>Data path for file-based database backends. This must be a relative path and it will reside 2 levels up from the server's web path.</description>
+               <param-name>database.backend.storagepath</param-name>
+               <param-value>data</param-value>
+       </context-param>
+       <context-param>
+               <param-name>javax.faces.PROJECT_STAGE</param-name>
+               <param-value>Development</param-value>
+       </context-param>
+       <filter>
+               <description>A servlet filter for setting character encoding to UTF-8</description>
+               <filter-name>Utf8ServletFilter</filter-name>
+               <filter-class>org.mxchange.jsfcore.filter.servlet.utf8.Utf8ServletFilter</filter-class>
+       </filter>
+       <filter>
+               <description>A servlet filter for logging</description>
+               <filter-name>Log4jServletFilter</filter-name>
+               <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
+       </filter>
+       <!--
+       TODO: No longer used
+       <filter>
+               <description>A filter for handling added basket items</description>
+               <filter-name>BasketItemAddedFilter</filter-name>
+               <filter-class>org.mxchange.jshop.filter.servlet.basket.BasketItemAddedFilter</filter-class>
+       </filter>
+       <filter-mapping>
+               <filter-name>BasketItemAddedFilter</filter-name>
+               <url-pattern>/form_handler/add_item.jsp</url-pattern>
+       </filter-mapping>
+       //-->
+       <filter-mapping>
+               <filter-name>Log4jServletFilter</filter-name>
+               <url-pattern>/*</url-pattern>
+       </filter-mapping>
+       <filter-mapping>
+               <filter-name>Utf8ServletFilter</filter-name>
+               <url-pattern>/*</url-pattern>
+       </filter-mapping>
+       <servlet>
+               <servlet-name>Faces Servlet</servlet-name>
+               <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+               <load-on-startup>1</load-on-startup>
+       </servlet>
+       <servlet-mapping>
+               <servlet-name>Faces Servlet</servlet-name>
+               <url-pattern>/faces/*</url-pattern>
+       </servlet-mapping>
+       <mime-mapping>
+               <extension>tpl</extension>
+               <mime-type>text/plain</mime-type>
+       </mime-mapping>
+       <session-config>
+               <session-timeout>
+                       30
+               </session-timeout>
+       </session-config>
+       <welcome-file-list>
+               <welcome-file>faces/index.xhtml</welcome-file>
+               <!--<welcome-file>index.jsp</welcome-file>-->
+       </welcome-file-list>
+</web-app>
diff --git a/PizzaService-war/web/admin/category.jsp b/PizzaService-war/web/admin/category.jsp
new file mode 100644 (file)
index 0000000..8aefece
--- /dev/null
@@ -0,0 +1,141 @@
+<%-- 
+       Document   : category
+       Created on : 05.08.2015, 10:51:14
+       Author     : Roland Haeder
+--%>
+
+<%--<%@page errorPage="errorHandler.jsp" %>--%>
+<%@page import="org.mxchange.jshop.category.Category"%>
+<%@page import="org.mxchange.pizzaapplication.beans.controller.PizzaServiceBean"%>
+<%@page import="org.mxchange.pizzaapplication.beans.controller.PizzaBean"%>
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<jsp:useBean id="controller" scope="session" class="org.mxchange.pizzaapplication.beans.controller.PizzaServiceBean" type="PizzaBean" />
+
+<jsp:setProperty name="controller" property="application" value="${pageContext.servletContext}" />
+<jsp:setProperty name="controller" property="session" value="${pageContext.session}" />
+
+<%
+       // TODO: Can be removed later
+       controller.init();
+%>
+
+<c:set var="basePath" value="${pageContext.request.contextPath}" />
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
+       <head>
+               <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+               <link rel="stylesheet" href="${basePath}/style.css" type="text/css" />
+               <title>Pizza-Service - Kategorien</title>
+       </head>
+
+       <body>
+               <div id="header"> 
+                       <div id="title">
+                               <h1>Pizza-Service - Kategorien</h1>
+                       </div>
+               </div>
+
+               <jsp:include page="/static/admin/admin_menu.jsp" flush="false" />
+
+               <div id="content_outer">
+                       <div id="content_title">
+                               <h2>Kategorien administrieren:</h2>
+                       </div>
+
+                       <div id="content">
+                               <div class="para">
+                                       <form action="${basePath}/form_handler/admin/do_category.jsp" accept-charset="utf-8" id="form" method="post">
+                                       <table class="table">
+                                               <thead>
+                                                       <tr>
+                                                               <th class="table_header_column">
+                                                                       Auswählen:
+                                                               </th>
+                                                               <th class="table_header_column">
+                                                                       Bezeichnung:
+                                                               </th>
+                                                               <th class="table_header_column">
+                                                                       Elternkategorie:
+                                                               </th>
+                                                       </tr>
+                                               </thead>
+
+                                               <tbody>
+                                                       <c:forEach var="category" items="${controller.allCategoriesIterator}">
+                                                       <tr>
+                                                               <td>
+                                                                       ${category.categoryId}:
+                                                                       <input class="input" type="checkbox" name="categoryId[${category.categoryId}]" value="1" />
+                                                               </td>
+                                                               <td>
+                                                                       ${category.decodedTitle}
+                                                               </td>
+                                                               <td>
+                                                                       ${controller.generateLinkForParent(category)}
+                                                               </td>
+                                                       </tr>
+                                                       </c:forEach>
+
+                                                       <tr>
+                                                               <td colspan="3" class="table_footer">
+                                                                       <input class="reset" type="reset" value="Formular zurücksetzen" />
+                                                                       <input class="submit" type="submit" name="edit" value="Ändern" />
+                                                                       <input class="delete" type="submit" name="delete" value="Löschen" />
+                                                               </td>
+                                                       </tr>
+                                               </tbody>
+                                       </table>
+                                       </form>
+                               </div>
+
+                               <div class="para">
+                                       <form action="${basePath}/form_handler/admin/do_category.jsp" accept-charset="utf-8" id="add_category" method="post">
+                                       <div class="table">
+                                               <div class="table_header">
+                                                       Neue Kategorie hinzufügen:
+                                               </div>
+
+                                               <fieldset id="product_data">
+                                                       <legend>Bitte alle Felder ausfüllen:</legend>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       Bezeichnung:
+                                                                       <div class="tiny">(z.B. <em>Pizzen</em>)</div>
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <input class="input" type="text" name="title" size="10" maxlength="255" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       Elternkategorie:
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <jsp:include flush="false" page="/static/admin/admin_parent_category_selection_box.jsp" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+                                               </fieldset>
+
+                                               <div class="table_footer">
+                                                       <input class="reset" type="reset" value="Formular zurücksetzen" />
+                                                       <input class="submit" type="submit" name="add" value="Hinzufügen" />
+                                               </div>
+                                       </div>
+                                       </form>
+                               </div>
+                       </div>
+               </div>
+
+               <jsp:include page="/static/admin/admin_footer.jsp" flush="false" />
+       </body>
+</html>
diff --git a/PizzaService-war/web/admin/index.jsp b/PizzaService-war/web/admin/index.jsp
new file mode 100644 (file)
index 0000000..d6cea8c
--- /dev/null
@@ -0,0 +1,48 @@
+<%-- 
+       Document   : index
+       Created on : 04.08.2015, 10:33:10
+       Author     : Roland Haeder
+--%>
+
+<%--<%@page errorPage="errorHandler.jsp" %>--%>
+<%@page import="java.util.Map"%>
+<%@page import="java.util.Iterator"%>
+<%@page import="org.mxchange.pizzaapplication.beans.controller.PizzaServiceBean"%>
+<%@page import="org.mxchange.pizzaapplication.beans.controller.PizzaBean"%>
+<%@page import="org.mxchange.jshop.product.Product"%>
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+<jsp:useBean id="controller" scope="session" class="org.mxchange.pizzaapplication.beans.controller.PizzaServiceBean" type="PizzaBean" />
+
+<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<c:set var="basePath" value="${pageContext.request.contextPath}" />
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
+       <head>
+               <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+               <link rel="stylesheet" href="${basePath}/style.css" type="text/css" />
+               <title>Pizza-Service - Administration</title>
+       </head>
+
+       <body>
+               <div id="header"> 
+                       <div id="title">
+                               <h1>Pizza-Service - Administration</h1>
+                       </div>
+               </div>
+
+               <jsp:include page="/static/admin/admin_menu.jsp" flush="false" />
+
+               <div id="content_outer">
+                       <div id="content_title">
+                               <h2>Willkommen zur Administration:</h2>
+                       </div>
+
+                       <div id="content">
+                               Einiges kann hier eingestellt werden.
+                       </div>
+               </div>
+
+               <jsp:include page="/static/admin/admin_footer.jsp" flush="false" />
+       </body>
+</html>
diff --git a/PizzaService-war/web/admin/product.jsp b/PizzaService-war/web/admin/product.jsp
new file mode 100644 (file)
index 0000000..49af00a
--- /dev/null
@@ -0,0 +1,188 @@
+<%-- 
+       Document   : product
+       Created on : 04.08.2015, 10:55:10
+       Author     : Roland Haeder
+--%>
+
+<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%--<%@page errorPage="errorHandler.jsp" %>--%>
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+<%@page import="org.mxchange.pizzaapplication.beans.controller.PizzaBean"%>
+<%@page import="org.mxchange.pizzaapplication.beans.controller.PizzaServiceBean"%>
+<jsp:useBean id="controller" scope="session" class="org.mxchange.pizzaapplication.beans.controller.PizzaServiceBean" type="PizzaBean" />
+
+<jsp:setProperty name="controller" property="application" value="${pageContext.servletContext}" />
+<jsp:setProperty name="controller" property="session" value="${pageContext.session}" />
+
+<%
+       // TODO: Can be removed later
+       controller.init();
+%>
+
+<c:set var="basePath" value="${pageContext.request.contextPath}" />
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
+       <head>
+               <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+               <link rel="stylesheet" href="${basePath}/style.css" type="text/css" />
+               <title>Pizza-Service - Produkte</title>
+       </head>
+
+       <body>
+               <div id="header"> 
+                       <div id="title">
+                               <h1>Pizza-Service - Produkte</h1>
+                       </div>
+               </div>
+
+               <jsp:include page="/static/admin/admin_menu.jsp" flush="false" />
+
+               <div id="content_outer">
+                       <div id="content_title">
+                               <h2>Diese Produkte wurden eingestellt:</h2>
+                       </div>
+
+                       <div id="content">
+                               <div class="para">
+                                       <form action="${basePath}/form_handler/admin/do_product.jsp" accept-charset="utf-8" id="form" method="post">
+                                       <table class="table">
+                                               <thead>
+                                                       <tr>
+                                                               <th class="table_header_column">
+                                                                       Produktnummer:
+                                                               </th>
+                                                               <th class="table_header_column">
+                                                                       Produktbezeichnung:
+                                                               </th>
+                                                               <th class="table_header_column">
+                                                                       Einzelpreis:
+                                                               </th>
+                                                               <th class="table_header_column">
+                                                                       Kategorie:
+                                                               </th>
+                                                               <th class="table_header_column">
+                                                                       Verfügbar:
+                                                               </th>
+                                                       </tr>
+                                               </thead>
+
+                                               <tbody>
+                                                       <c:forEach var="product" items="${controller.allProductsIterator}">
+                                                       <tr>
+                                                               <td>
+                                                                       ${product.itemId}:
+                                                                       <input class="input" type="checkbox" name="itemId[${product.itemId}]" value="1" />
+                                                               </td>
+                                                               <td>
+                                                                       ${product.title}
+                                                               </td>
+                                                               <td>
+                                                                       ${product.price}
+                                                               </td>
+                                                               <td>
+                                                                       ${controller.getPrintableProduktCategory(product)}
+                                                               </td>
+                                                               <td>
+                                                                       ${controller.getPrintableProduktAvailability(product)}
+                                                               </td>
+                                                       </tr>
+                                                       </c:forEach>
+                                                       <tr>
+                                                               <td colspan="5" class="table_footer">
+                                                                       <input class="reset" type="reset" value="Formular zurücksetzen" />
+                                                                       <input class="submit" type="submit" name="edit" value="Ändern" />
+                                                                       <input class="delete" type="submit" name="delete" value="Löschen" />
+                                                               </td>
+                                                       </tr>
+                                               </tbody>
+                                       </table>
+                                       </form>
+                               </div>
+
+                               <div class="para">
+                                       <form action="${basePath}/form_handler/admin/do_product.jsp" accept-charset="utf-8" id="add" method="post">
+                                       <div class="table">
+                                               <div class="table_header">
+                                                       Neues Produkt hinzufügen:
+                                               </div>
+
+                                               <fieldset id="product_data">
+                                                       <legend>Bitte alle Felder ausfüllen:</legend>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       Produktbezeichnung:
+                                                                       <div class="tiny">(z.B. <em>Pizza Italia</em>)</div>
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <input class="input" type="text" name="title" size="10" maxlength="255" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       Einzelpreis:
+                                                                       <div class="tiny">(z.B. <em>50.0</em>)</div>
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <input class="input" type="text" name="price" size="10" maxlength="255" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       Kategorie:
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <jsp:include flush="false" page="/static/admin/admin_category_selection_box.jsp" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       Verfügbar:
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <select class="select" name="available" size="1">
+                                                                               <option value="true">Ja</option>
+                                                                               <option value="false">Nein</option>
+                                                                       </select>
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+                                               </fieldset>
+
+                                               <div class="table_footer">
+                                                       <input class="reset" type="reset" value="Formular zurücksetzen" />
+                                                       <input class="submit" type="submit" name="add" value="Hinzufügen" />
+                                               </div>
+                                       </div>
+                                       </form>
+                               </div>
+
+                               <div class="para">
+                                       Hinweise zum Hinzufügen von Produkten:
+                                       <ul>
+                                               <li>Beim Preis keine Währungszeichen (wie &euro; usw.) eingeben.</li>
+                                               <li>Kommastellen mit Punkt, nicht mit Komma abtrennen.</li>
+                                               <li>Keine Tausendertrenner verwenden, auch keine Leerschritte.</li>
+                                       </ul>
+                               </div>
+                       </div>
+               </div>
+
+               <jsp:include page="/static/admin/admin_footer.jsp" flush="false" />
+       </body>
+</html>
diff --git a/PizzaService-war/web/bye.xhtml b/PizzaService-war/web/bye.xhtml
new file mode 100644 (file)
index 0000000..167737b
--- /dev/null
@@ -0,0 +1,49 @@
+<%-- 
+       Document   : bye
+       Created on : 05.08.2015, 10:51:14
+       Author     : Roland Haeder
+--%>
+
+<%--<%@page errorPage="errorHandler.jsp" %>--%>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
+       <head>
+               <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+               <link rel="stylesheet" href="${basePath}/style.css" type="text/css" />
+               <title>Pizza-Service - Sitzung beenden</title>
+       </head>
+
+       <body>
+               <div id="header"> 
+                       <div id="title">
+                               <h1>Pizza-Service - Sitzung beenden</h1>
+                       </div>
+               </div>
+
+               <jsp:include page="/static/guest/guest_menu.jsp" flush="false" />
+
+               <div id="content_outer">
+                       <div id="content_title">
+                               <h2>Situng beenden:</h2>
+                       </div>
+
+                       <div id="content">
+                               <%
+                               synchronized (session) {
+                                       if (!session.isNew()) {
+                                               // Not new session
+                                               session.invalidate();
+                                               out.println("Sitzung beendet.");
+                                       } else {
+                                               // New session
+                                               out.println("Sitzung bereits beendet.");
+                                       }
+                               }
+                               %>
+                       </div>
+               </div>
+
+               <jsp:include page="/static/guest/guest_footer.jsp" flush="false" />
+       </body>
+</html>
diff --git a/PizzaService-war/web/customer/login.xhtml b/PizzaService-war/web/customer/login.xhtml
new file mode 100644 (file)
index 0000000..198e37c
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl" id="customer_login">
+               <ui:define name="title">Einloggen</ui:define>
+
+               <ui:define name="menu">
+                       <ui:include id="menu" class="guest_menu" src="/WEB-INF/templates/guest/guest_menu.tpl" />
+               </ui:define>
+
+               <ui:define name="content_header">
+                       Zum Kundenbereich einloggen
+               </ui:define>
+
+               <ui:define name="content">
+                       <div class="para">
+                               Noch kein Kunde? Einfach beim Bestellen anmelden oder <h:link id="customer_register" outcome="customer_register" title="Als Kunde anmelden">hier</h:link> anmelden.
+                       </div>
+
+                       <div class="para">
+                               <ui:include id="login_form" class="login_form" src="/WEB-INF/templates/guest/guest_login_form.tpl" />
+                       </div>
+
+                       <div class="para">
+                               <h:link id="customer_lost_password" outcome="customer_register" title="Passwort wiederherstellen" value="Passwort vergessen?" />
+                       </div>
+               </ui:define>
+
+               <ui:define name="footer">
+                       <ui:include id="footer" class="guest_footer" src="/WEB-INF/templates/guest/guest_footer.tpl" />
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/PizzaService-war/web/customer/lost_passwd.xhtml b/PizzaService-war/web/customer/lost_passwd.xhtml
new file mode 100644 (file)
index 0000000..0535296
--- /dev/null
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
+               <ui:define name="title">Passwort vergessen</ui:define>
+
+               <ui:define name="menu">
+                       <ui:include id="menu" class="guest_menu" src="/WEB-INF/templates/guest/guest_menu.tpl" />
+               </ui:define>
+
+               <ui:define name="content_header">
+                       Stellen Sie Ihr Passwort wieder her.
+               </ui:define>
+
+               <ui:define name="content">
+                       <div class="para" id="customer_lost_password_content">
+                               <h:form acceptcharset="utf-8" id="lost_password_form">
+                                       <div class="table">
+                                               <div class="table_header">
+                                                       Sie haben Ihr Passwort vergessen?
+                                               </div>
+
+                                               <fieldset id="login_data">
+                                                       <legend title="Bitte Daten eingeben:">Bitte Daten eingeben:</legend>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="id" value="Kundennummer:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputText class="input" id="id" size="10" maxlength="20" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_header">
+                                                               ... oder ...
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="email" value="eMail-Adresse:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputText class="input" id="email" size="20" maxlength="255" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                               </fieldset>
+
+                                               <div class="table_footer">
+                                                       <h:commandButton class="reset" type="reset" value="Formular zurücksetzen" />
+                                                       <h:commandButton class="submit" type="submit" value="Weiter zu Schritt 2" action="#{controller.doLostPasswordStep2()}" />
+                                               </div>
+                                       </div>
+                               </h:form>
+                       </div>
+               </ui:define>
+
+               <ui:define name="footer">
+                       <ui:include id="footer" class="guest_footer" src="/WEB-INF/templates/guest/guest_footer.tpl" />
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/PizzaService-war/web/customer/register.xhtml b/PizzaService-war/web/customer/register.xhtml
new file mode 100644 (file)
index 0000000..3be507e
--- /dev/null
@@ -0,0 +1,291 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
+               <ui:define name="title">Neukunde</ui:define>
+
+               <ui:define name="menu">
+                       <ui:include id="menu" class="guest_menu" src="/WEB-INF/templates/guest/guest_menu.tpl" />
+               </ui:define>
+
+               <ui:define name="content_header">
+                       Anmelden zum Pizza-Service:
+               </ui:define>
+
+               <ui:define name="content">
+                       <div class="para">
+                               Sie sind bereits Kunde? Dann <h:link outcome="customer_login" value="hier" /> einloggen.
+                       </div>
+
+                       <h:form acceptcharset="utf-8" id="register_form">
+                               <div class="table">
+                                       <div class="table_header">
+                                               Anmelden als Neukunde
+                                       </div>
+
+                                       <div class="para notice">
+                                               Bitte geben Sie mindestens Name, Anschrift und Telefonnummer ein:
+                                       </div>
+
+                                       <div class="para">
+                                               <fieldset id="personal_data">
+                                                       <legend title="Bitte geben Sie Ihre Daten ein.">Bitte Ihre Daten eingeben:</legend>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="gender" value="Anrede:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <ui:include src="/WEB-INF/templates/generic/gender_selection_box.tpl" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="companyname" value="Firmenname:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputText class="input" id="companyname" size="15" maxlength="255" value="#{customer.companyName}" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="firstName" value="Vorname:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputText class="input" id="firstName" size="10" maxlength="255" value="#{customer.firstName}" required="true">
+                                                                               <f:validator validatorId="NameValidator" />
+                                                                       </h:inputText>
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="familyName" value="Nachname:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputText class="input" id="familyName" size="10" maxlength="255" value="#{customer.familyName}" required="true">
+                                                                               <f:validator validatorId="NameValidator" />
+                                                                       </h:inputText>
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="street" value="Straße:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputText class="input" id="street" size="20" maxlength="255" value="#{customer.street}" required="true">
+                                                                               <f:validator validatorId="NameValidator" />
+                                                                       </h:inputText>
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="houseNumber" value="Hausnummer:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputText class="input" id="houseNumber" size="3" maxlength="5" value="#{customer.houseNumber}" required="true">
+                                                                               <f:validateLongRange minimum="1" maximum="500" />
+                                                                       </h:inputText>
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="zipCode" value="Postleitzahl:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputText class="input" id="zipCode" size="5" maxlength="6" value="#{customer.zipCode}" required="true" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="city" value="Ort:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputText class="input" id="city" size="10" maxlength="255" value="#{customer.city}" required="true">
+                                                                               <f:validator validatorId="NameValidator" />
+                                                                       </h:inputText>
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="phoneNumber" value="Telefon:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputText class="input" id="phoneNumber" size="20" maxlength="255" value="#{customer.phoneNumber}" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="faxNumber" value="Faxnummer:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputText class="input" id="faxNumber" size="20" maxlength="255" value="#{customer.faxNumber}" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="cellphoneNumber" value="Handy:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputText class="input" id="cellphoneNumber" size="20" maxlength="255" value="#{customer.cellphoneNumber}" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+                                               </fieldset>
+                                       </div>
+
+                                       <div class="para">
+                                               <fieldset id="login_data">
+                                                       <legend title="Zum Bestätigen wird Ihre Email-Adresse benötigt, für den Login Kundennummer und Passwort.">Email-Adresse und Passwort:</legend>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="emailAddress1" value="eMail-Adresse eingeben:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputText class="input" id="emailAddress1" size="20" maxlength="255" value="#{customer.emailAddress}" required="true" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="emailAddress2" value="eMail-Adresse wiederholen:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputText class="input" id="emailAddress2" size="20" maxlength="255" value="#{customer.emailAddress}" required="true" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="para"></div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="password1" value="Passwort eingeben:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputSecret class="input" id="password1" size="10" maxlength="255" required="true" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="password2" value="Passwort wiederholen:" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputSecret class="input" id="password2" size="10" maxlength="255" required="true" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="para notice">
+                                                               Die Kundennummer wird Ihnen später vergeben.
+                                                       </div>
+                                               </fieldset>
+                                       </div>
+
+                                       <div class="para">
+                                               <fieldset id="terms_privacy">
+                                                       <legend title="Bitte die AGBs und Datenschutzbestimmungen lesen und akzeptieren.">Rechtliches:</legend>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left25">
+                                                                       <h:selectBooleanCheckbox class="input" id="privacy" required="true" requiredMessage="Bitte den Datenschutzbestimmungen zustimmen.">
+                                                                               <f:validator validatorId="PrivacyTermsCheckboxValidator" />
+                                                                       </h:selectBooleanCheckbox>
+                                                               </div>
+
+                                                               <div class="table_right75">
+                                                                       Ja, ich habe die <h:link outcome="privacy" target="_blank" value="Datenschutzbestimmungen" /> gelesen und
+                                                                       auch verstanden.
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left25">
+                                                                       <h:selectBooleanCheckbox class="input" id="terms" required="true" requiredMessage="Bitte den AGBs zustimmen.">
+                                                                               <f:validator validatorId="PrivacyTermsCheckboxValidator" />
+                                                                       </h:selectBooleanCheckbox>
+                                                               </div>
+
+                                                               <div class="table_right75">
+                                                                       Ja, ich habe die <h:link outcome="terms" target="_blank" value="Allgemeinen Geschäftsbedingungen" /> gelesen und
+                                                                       auch verstanden.
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+                                               </fieldset>
+                                       </div>
+
+                                       <div class="table_footer">
+                                               <h:commandButton class="reset" type="reset" value="Formular zurücksetzen" />
+                                               <h:commandButton class="submit" type="submit" id="register" value="Anmelden" action="#{controller.doRegister()}" />
+                                       </div>
+                               </div>
+                       </h:form>
+               </ui:define>
+
+               <ui:define name="footer">
+                       <ui:include id="footer" class="guest_footer" src="/WEB-INF/templates/guest/guest_footer.tpl" />
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/PizzaService-war/web/errorHandler.xhtml b/PizzaService-war/web/errorHandler.xhtml
new file mode 100644 (file)
index 0000000..1021261
--- /dev/null
@@ -0,0 +1,52 @@
+<%-- 
+       Document   : errorHandler
+       Created on : 05.08.2015, 12:06:39
+       Author     : Roland Haeder
+--%>
+
+<%@page import="java.io.PrintWriter"%>
+<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
+<jsp:useBean id="date" class="java.util.Date" />
+
+<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<c:set var="basePath" value="${pageContext.request.contextPath}" />
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
+       <head>
+               <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+               <link rel="stylesheet" href="${basePath}/style.css" type="text/css" />
+               <title>Pizza-Service - Fehler</title>
+       </head>
+
+       <body>
+               <div id="header"> 
+                       <div id="title">
+                               <h1>Pizza-Service - Fehler</h1>
+                       </div>
+               </div>
+
+               <jsp:include page="/static/guest/guest_menu.jsp" flush="false" />
+
+               <div id="content_outer">
+                       <div id="content_title">
+                               <h2>An error occured:</h2>
+                       </div>
+
+                       <div id="content">
+                               Unfortunately an unexpected error has occurred. Below you can find the error details.
+                               <ul>
+                                       <li>Timestamp: <fmt:formatDate value="${date}" type="both" dateStyle="long" timeStyle="long" /></li>
+                                       <li>Action: <c:out value="${requestScope['javax.servlet.forward.request_uri']}" /></li>
+                                       <li>Exception: <c:out value="${requestScope['javax.servlet.error.exception']}" /></li>
+                                       <li>Message: <c:out value="${requestScope['javax.servlet.error.message']}" /></li>
+                                       <li>Status code: <c:out value="${requestScope['javax.servlet.error.status_code']}" /></li>
+                                       <li>User agent: <c:out value="${header['user-agent']}" /></li>
+                               </ul>
+                       </div>
+               </div>
+
+               <jsp:include page="/static/guest/guest_footer.jsp" flush="false" />
+       </body>
+</html>
diff --git a/PizzaService-war/web/form_handler/add_item.jsp b/PizzaService-war/web/form_handler/add_item.jsp
new file mode 100644 (file)
index 0000000..74d7cf4
--- /dev/null
@@ -0,0 +1,48 @@
+<%-- 
+       Document   : add_item
+       Ceated on : Aug 17, 2015, 7:03:38 PM
+       Author     : Roland Haeder
+--%>
+
+<%--<%@page errorPage="errorHandler.jsp" %>--%>
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+<%@page import="org.mxchange.pizzaapplication.beans.controller.PizzaBean"%>
+<%@page import="org.mxchange.pizzaapplication.beans.controller.PizzaServiceBean"%>
+<%@page import="org.mxchange.jshop.item.AddableBasketItem"%>
+
+<jsp:useBean id="controller" scope="session" class="org.mxchange.pizzaapplication.beans.controller.PizzaServiceBean" type="PizzaBean" />
+
+<jsp:setProperty name="controller" property="application" value="${pageContext.servletContext}" />
+<jsp:setProperty name="controller" property="basket" value="${basket}" />
+
+<%
+       // TODO: Can be removed later
+       controller.init();
+%>
+
+<jsp:useBean id="item" scope="request" class="org.mxchange.jshop.item.basket.BasketItem" type="AddableBasketItem" />
+<jsp:setProperty name="item" property="*" />
+
+<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<c:set var="basePath" value="${pageContext.request.contextPath}" />
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
+       <head>
+               <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+               <link rel="stylesheet" href="${basePath}/style.css" type="text/css" />
+               <title>Pizza-Service - Form-Handler</title>
+       </head>
+
+       <body>
+               <div id="title">
+                       <h1>Pizza-Service - Form-Handler</h1>
+               </div>
+
+               <jsp:include page="/static/guest/guest_menu.jsp" flush="false" />
+
+               <jsp:include page="/static/error/direct_call.jsp" flush="false" />
+
+               <jsp:include page="/static/guest/guest_footer.jsp" flush="false" />
+       </body>
+</html>
diff --git a/PizzaService-war/web/form_handler/admin/do_category.jsp b/PizzaService-war/web/form_handler/admin/do_category.jsp
new file mode 100644 (file)
index 0000000..6d6d7e0
--- /dev/null
@@ -0,0 +1,40 @@
+<%-- 
+       Document   : order
+       Created on : 07.08.2015, 14:58:21
+       Author     : Roland Haeder
+--%>
+
+<%--<%@page errorPage="errorHandler.jsp" %>--%>
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+<%@page import="org.mxchange.pizzaapplication.beans.controller.PizzaBean"%>
+<jsp:useBean id="controller" scope="session" class="org.mxchange.pizzaapplication.beans.controller.PizzaServiceBean" type="PizzaBean" />
+
+<jsp:setProperty name="controller" property="request" value="${pageContext.request}" />
+<jsp:setProperty name="controller" property="response" value="${pageContext.response}" />
+
+<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<c:set var="basePath" value="${pageContext.request.contextPath}" />
+
+<%
+       // Handle forms
+       controller.doAdminHandleCategoryForms();
+%>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
+       <head>
+               <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+               <link rel="stylesheet" href="${basePath}/style.css" type="text/css" />
+               <title>Pizza-Service - Form-Handler</title>
+       </head>
+
+       <body>
+               <div id="title">
+                       <h1>Pizza-Service - Form-Handler</h1>
+               </div>
+
+               <jsp:include page="/static/admin/admin_menu.jsp" flush="false" />
+
+               <jsp:include page="/static/error/direct_call.jsp" flush="false" />
+       </body>
+</html>
diff --git a/PizzaService-war/web/form_handler/admin/do_product.jsp b/PizzaService-war/web/form_handler/admin/do_product.jsp
new file mode 100644 (file)
index 0000000..a985dfc
--- /dev/null
@@ -0,0 +1,40 @@
+<%-- 
+       Document   : order
+       Created on : 07.08.2015, 14:58:21
+       Author     : Roland Haeder
+--%>
+
+<%--<%@page errorPage="errorHandler.jsp" %>--%>
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+<%@page import="org.mxchange.pizzaapplication.beans.controller.PizzaBean"%>
+<jsp:useBean id="controller" scope="session" class="org.mxchange.pizzaapplication.beans.controller.PizzaServiceBean" type="PizzaBean" />
+
+<jsp:setProperty name="controller" property="request" value="${pageContext.request}" />
+<jsp:setProperty name="controller" property="response" value="${pageContext.response}" />
+
+<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<c:set var="basePath" value="${pageContext.request.contextPath}" />
+
+<%
+       // Handle forms
+       controller.doAdminHandleProductForms();
+%>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
+       <head>
+               <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+               <link rel="stylesheet" href="${basePath}/style.css" type="text/css" />
+               <title>Pizza-Service - Form-Handler</title>
+       </head>
+
+       <body>
+               <div id="title">
+                       <h1>Pizza-Service - Form-Handler</h1>
+               </div>
+
+               <jsp:include page="/static/admin/admin_menu.jsp" flush="false" />
+
+               <jsp:include page="/static/error/direct_call.jsp" flush="false" />
+       </body>
+</html>
diff --git a/PizzaService-war/web/imprint.xhtml b/PizzaService-war/web/imprint.xhtml
new file mode 100644 (file)
index 0000000..db28ca0
--- /dev/null
@@ -0,0 +1,27 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
+               <ui:define name="title">Impressum</ui:define>
+
+               <ui:define name="menu">
+                       <ui:include id="menu" class="guest_menu" src="/WEB-INF/templates/guest/guest_menu.tpl" />
+               </ui:define>
+
+               <ui:define name="content_header">
+                       Impressum
+               </ui:define>
+
+               <ui:define name="content">
+                       Hier kommt das Impressum hin!
+               </ui:define>
+
+               <ui:define name="footer">
+                       <ui:include id="footer" class="guest_footer" src="/WEB-INF/templates/guest/guest_footer.tpl" />
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/PizzaService-war/web/index.html b/PizzaService-war/web/index.html
new file mode 100644 (file)
index 0000000..e1d12c2
--- /dev/null
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<!--
+To change this license header, choose License Headers in Project Properties.
+To change this template file, choose Tools | Templates
+and open the template in the editor.
+-->
+<html>
+       <head>
+               <title>TODO supply a title</title>
+               <meta charset="UTF-8">
+               <meta name="viewport" content="width=device-width, initial-scale=1.0">
+       </head>
+       <body>
+               <div>TODO write content</div>
+       </body>
+</html>
diff --git a/PizzaService-war/web/index.xhtml b/PizzaService-war/web/index.xhtml
new file mode 100644 (file)
index 0000000..74acebc
--- /dev/null
@@ -0,0 +1,141 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <!--
+       TODO: Not used:
+       xmlns:basket="http://mxchange.org/jshop/tags/basket"
+       //-->
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
+               <ui:define name="title">Willkommen!</ui:define>
+
+               <ui:define name="menu">
+                       <ui:include id="menu" class="guest_menu" src="/WEB-INF/templates/guest/guest_menu.tpl" />
+               </ui:define>
+
+               <ui:define name="content_header">
+                       Eingangsseite (dummy)
+               </ui:define>
+
+               <ui:define name="content">
+                       <!--
+                       TODO Not used!
+                       <h:panelGrid class="basket_item_table" columnClasses="table_data_column" headerClass="table_header_column">
+                               <f:facet name="header">
+                                       Bestellen? Bestellmenge: Produkt: Einzelpreis:
+                               </f:facet>
+                       </h:panelGrid>
+                       //-->
+
+                       <h:form acceptcharset="utf-8" id="add_item">
+                               <table class="basket_item_table">
+                                       <thead>
+                                               <tr>
+                                                       <th colspan="5" class="table_header">
+                                                               Folgendes kann bestellt werden:
+                                                       </th>
+                                               </tr>
+
+                                               <tr>
+                                                       <th class="table_header_column">
+                                                               Bestellen?
+                                                       </th>
+
+                                                       <th class="table_header_column">
+                                                               Anzahl:
+                                                       </th>
+
+                                                       <th class="table_header_column">
+                                                               Produkt:
+                                                       </th>
+
+                                                       <th class="table_header_column">
+                                                               Einzelpreis:
+                                                       </th>
+
+                                                       <th class="table_header_column">
+                                                               Zwischensumme:
+                                                       </th>
+                                               </tr>
+                                       </thead>
+
+                                       <tbody>
+                                               <ui:repeat var="product" value="#{controller.availableProducts}">
+                                                       <!-- Cache isAdded call to reduce calls //-->
+                                                       <c:set var="isAdded" value="#{basket.isAdded(product)}" />
+
+                                                       <ui:fragment rendered="#{isAdded == true}">
+                                                               <tr>
+                                                                       <td class="table_data_column">
+                                                                               <h:link outcome="basket" title="Zum Warenkorb" value="Warenkorb" />
+                                                                       </td>
+
+                                                                       <td class="table_data_column">
+                                                                               #{basket.item.amount}
+                                                                       </td>
+
+                                                                       <td class="table_data_column">
+                                                                               #{product.title}
+                                                                       </td>
+
+                                                                       <td class="table_data_column" align="right">
+                                                                               <h:outputText class="price" value="#{product.price}">
+                                                                                       <f:convertNumber type="currency" minFractionDigits="2" maxFractionDigits="2" />
+                                                                               </h:outputText>
+                                                                       </td>
+
+                                                                       <td class="table_data_column" align="right">
+                                                                               <h:outputText class="price" value="#{basket.item.calculateTotalPrice()}">
+                                                                                       <f:convertNumber type="currency" minFractionDigits="2" maxFractionDigits="2" />
+                                                                               </h:outputText>
+                                                                       </td>
+                                                               </tr>
+                                                       </ui:fragment>
+
+                                                       <ui:fragment rendered="#{isAdded == false}">
+                                                               <tr>
+                                                                       <td class="table_data_column">
+                                                                               <h:commandButton class="submit" id="add" value="Hinzufügen" action="#{basket.addToBasket(product)}" />
+                                                                               <h:inputHidden id="itemId" value="#{product.itemId}" />
+                                                                               <h:inputHidden id="itemType" value="Product" />
+                                                                       </td>
+
+                                                                       <td class="table_data_column">
+                                                                               <h:inputText class="input" id="amount" size="3" maxlength="20">
+                                                                                       <!--
+                                                                                       If the customer wants to order more, he need to call in.
+                                                                                       //-->
+                                                                                       <f:validateLongRange minimum="1" maximum="10" />
+                                                                               </h:inputText>
+                                                                       </td>
+
+                                                                       <td class="table_data_column">
+                                                                               #{product.title}
+                                                                       </td>
+
+                                                                       <td class="table_data_column" align="right">
+                                                                               <h:outputText class="price" value="#{product.price}">
+                                                                                       <f:convertNumber type="currency" minFractionDigits="2" maxFractionDigits="2" />
+                                                                               </h:outputText>
+                                                                       </td>
+
+                                                                       <td class="table_data_column" align="right">
+                                                                               -
+                                                                       </td>
+                                                               </tr>
+                                                       </ui:fragment>
+                                               </ui:repeat>
+                                       </tbody>
+                               </table>
+                       </h:form>
+               </ui:define>
+
+               <ui:define name="footer">
+                       <ui:include id="footer" class="guest_footer" src="/WEB-INF/templates/guest/guest_footer.tpl" />
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/PizzaService-war/web/privacy.xhtml b/PizzaService-war/web/privacy.xhtml
new file mode 100644 (file)
index 0000000..c78c75e
--- /dev/null
@@ -0,0 +1,27 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
+               <ui:define name="title">Datenschutzbestimmungen</ui:define>
+
+               <ui:define name="menu">
+                       <ui:include id="menu" class="guest_menu" src="/WEB-INF/templates/guest/guest_menu.tpl" />
+               </ui:define>
+
+               <ui:define name="content_header">
+                       Datenschutzbestimmungen
+               </ui:define>
+
+               <ui:define name="content">
+                       Hier kommen die Datenschutzbestimmungen hin.
+               </ui:define>
+
+               <ui:define name="footer">
+                       <ui:include id="footer" class="guest_footer" src="/WEB-INF/templates/guest/guest_footer.tpl" />
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/PizzaService-war/web/resources/css/cssLayout.css b/PizzaService-war/web/resources/css/cssLayout.css
new file mode 100644 (file)
index 0000000..57b5048
--- /dev/null
@@ -0,0 +1,145 @@
+#top {
+       position: relative;
+       background-color: #036fab;
+       color: #ffffff;
+       padding: 5px;
+       margin: 0px 0px 10px 0px;
+}
+
+#footer {
+       position: relative;
+       background-color: #c2dfef;
+       padding: 5px;
+       margin: 10px 0px 0px 0px;
+}
+
+#left {
+       float: left;
+       background-color: #ece3a5;
+       padding: 5px;
+       width: 150px;
+}
+
+#right {
+       float: right;
+       background-color: #ece3a5;
+       padding: 5px;
+       width: 150px;
+}
+
+.center_content {
+       position: relative;
+       background-color: #dddddd;
+       padding: 5px;
+}
+
+.left_content {
+       background-color: #dddddd;
+       padding: 5px;
+       margin-left: 170px;
+}
+
+.right_content {
+       background-color: #dddddd;
+       padding: 5px;
+       margin: 0px 170px 0px 170px;
+}
+
+#top a:link, #top a:visited {
+       color: #ffffff;
+       font-weight : bold;
+       text-decoration: none;
+}
+
+#top a:link:hover, #top a:visited:hover  {
+       color: #000000;
+       font-weight : bold;
+       text-decoration : underline;
+}
+
+/**
+div {
+       border: 1px solid #ff0000;
+}
+/**/
+
+table, .table {
+       margin: 0px;
+       padding: 0px;
+}
+
+.table {
+       width: 500px;
+}
+
+.basket_item_table {
+       width: 600px;
+}
+
+.table_row {
+       width: 100%;
+       min-height: 20px;
+}
+
+.table_left {
+       width: 250px;
+       min-height: 20px;
+       float: left;
+}
+
+.table_right {
+       width: 200px;
+       min-height: 20px;
+       float: right;
+}
+
+.table_left25 {
+       width: 20px;
+       min-height: 20px;
+       float: left;
+}
+
+.table_right75 {
+       width: 430px;
+       min-height: 20px;
+       float: right;
+}
+
+.para {
+       padding: 5px 5px 5px 5px;
+}
+
+.clear {
+       clear: both;
+}
+
+ul.footer_nav {
+       text-align: center;
+       width : 500px;
+       list-style: none;
+       margin: 0px;
+}
+
+ul.footer_nav li {
+       float: left;
+       width: 100px;
+}
+
+.menu ul {
+       list-style: none;
+       padding-left: 5px;
+}
+
+.table_header {
+       text-align: center;
+       font-weight: bold;
+       font-size: 20px;
+}
+
+.table_header_column {
+       width: 100px;
+}
+
+.table_data_column {
+       width: 100px;
+}
diff --git a/PizzaService-war/web/resources/css/default.css b/PizzaService-war/web/resources/css/default.css
new file mode 100644 (file)
index 0000000..1df064a
--- /dev/null
@@ -0,0 +1,31 @@
+body {
+       background-color: #ffffff;
+       font-size: 12px;
+       font-family: lucida;
+       color: #000000;  
+       margin: 10px;
+}
+
+h1 {
+       border-bottom: 1px solid #AFAFAF;
+       font-size:  16px;
+       font-weight: bold;
+       margin: 0px;
+       padding: 0px;
+}
+
+a:link, a:visited {
+       color: #045491;
+       font-weight : bold;
+       text-decoration: none;
+}
+
+a:link:hover, a:visited:hover {
+       color: #045491;
+       font-weight : bold;
+       text-decoration : underline;
+}
+
+label {
+       vertical-align: middle;
+}
diff --git a/PizzaService-war/web/static/admin/admin_category_selection_box.jsp b/PizzaService-war/web/static/admin/admin_category_selection_box.jsp
new file mode 100644 (file)
index 0000000..e1d2bec
--- /dev/null
@@ -0,0 +1,16 @@
+<%-- 
+       Document   : admin_category_selection_box
+       Created on : 14.08.2015, 12:51:05
+       Author     : Roland Haeder
+--%>
+
+<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@page import="org.mxchange.pizzaapplication.beans.controller.PizzaServiceBean"%>
+<%@page import="org.mxchange.pizzaapplication.beans.controller.PizzaBean"%>
+<jsp:useBean id="controller" scope="session" class="org.mxchange.pizzaapplication.beans.controller.PizzaServiceBean" type="PizzaBean" />
+
+<select class="select" name="categoryId" size="1">
+       <c:forEach var="category" items="${controller.allCategoriesIterator}">
+               <option value="${category.categoryId}">${category.decodedTitle}</option>
+       </c:forEach>
+</select>
diff --git a/PizzaService-war/web/static/admin/admin_footer.jsp b/PizzaService-war/web/static/admin/admin_footer.jsp
new file mode 100644 (file)
index 0000000..aa6b21b
--- /dev/null
@@ -0,0 +1,16 @@
+<%-- 
+       Document   : admin_footer
+       Created on : 11.08.2015, 12:28:03
+       Author     : Roland Haeder
+--%>
+
+<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<c:set var="basePath" value="${pageContext.request.contextPath}" />
+
+<div class="footer">
+       <ul class="footer_nav">
+               <li><a href="${basePath}/">Zur Webseite</a></li>
+       </ul>
+</div>
+
+<div class="clear"></div>
diff --git a/PizzaService-war/web/static/admin/admin_menu.jsp b/PizzaService-war/web/static/admin/admin_menu.jsp
new file mode 100644 (file)
index 0000000..9250428
--- /dev/null
@@ -0,0 +1,21 @@
+<%-- 
+       Document   : admin_menu
+       Created on : 06.08.2015, 12:41:44
+       Author     : Roland Haeder
+--%>
+
+<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<c:set var="basePath" value="${pageContext.request.contextPath}" />
+
+<div id="menu">
+       <ul>
+               <li><a href="${basePath}/admin/" title="Eingangsseite">Home</a></li>
+               <li><a href="${basePath}/admin/category.jsp" title="Kazegorie">Kategorie</a></li>
+               <li><a href="${basePath}/admin/product.jsp" title="Produkt">Produkt</a></li>
+       </ul>
+
+       <ul>
+               <li><a href="${basePath}/admin/logout.jsp" title="Ausloggen">Ausloggen</a></li>
+               <li><a href="${basePath}/" title="Zur Webseite, aber eingeloggt bleiben">Webseite aufrufen</a></li>
+       </ul>
+</div>
diff --git a/PizzaService-war/web/static/admin/admin_parent_category_selection_box.jsp b/PizzaService-war/web/static/admin/admin_parent_category_selection_box.jsp
new file mode 100644 (file)
index 0000000..c00a925
--- /dev/null
@@ -0,0 +1,17 @@
+<%-- 
+       Document   : admin_parent_category_selection_box
+       Created on : 14.08.2015, 12:51:05
+       Author     : Roland Haeder
+--%>
+
+<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@page import="org.mxchange.pizzaapplication.beans.controller.PizzaServiceBean"%>
+<%@page import="org.mxchange.pizzaapplication.beans.controller.PizzaBean"%>
+<jsp:useBean id="controller" scope="session" class="org.mxchange.pizzaapplication.beans.controller.PizzaServiceBean" type="PizzaBean" />
+
+<select class="select" name="parentId" size="1">
+       <option value="">Ist oberste Kategorie</option>
+       <c:forEach var="category" items="${controller.allCategoriesIterator}">
+               <option value="${category.categoryId}">${category.decodedTitle}</option>
+       </c:forEach>
+</select>
diff --git a/PizzaService-war/web/static/error/direct_call.jsp b/PizzaService-war/web/static/error/direct_call.jsp
new file mode 100644 (file)
index 0000000..37dab2c
--- /dev/null
@@ -0,0 +1,14 @@
+<%-- 
+       Document   : direct_call
+       Created on : 11.08.2015, 12:28:03
+       Author     : Roland Haeder
+--%>
+<div id="content_outer">
+       <div id="content_title">
+               <h2>Bitte nicht direkt aufrufen:</h2>
+       </div>
+
+       <div id="content">
+               Bitte rufen Sie diese Seite nicht direkt auf.
+       </div>
+</div>
diff --git a/PizzaService-war/web/terms.xhtml b/PizzaService-war/web/terms.xhtml
new file mode 100644 (file)
index 0000000..e84f73f
--- /dev/null
@@ -0,0 +1,27 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
+               <ui:define name="title">Allgemeine Gesch&auml;ftsbedingungen</ui:define>
+
+               <ui:define name="menu">
+                       <ui:include id="menu" class="guest_menu" src="/WEB-INF/templates/guest/guest_menu.tpl" />
+               </ui:define>
+
+               <ui:define name="content_header">
+                       Allgemeine Gesch&auml;ftsbedingungen
+               </ui:define>
+
+               <ui:define name="content">
+                       Hier kommen die allgemeinen Gesch&auml;ftsbedingungen hin.
+               </ui:define>
+
+               <ui:define name="footer">
+                       <ui:include id="footer" class="guest_footer" src="/WEB-INF/templates/guest/guest_footer.tpl" />
+               </ui:define>
+       </ui:composition>
+</html>
index 9b61e64c253f2d3e77b5d55ec3f268743903e154..2f206fe272e88e92994d9a03c142fae4387c65dd 100644 (file)
@@ -221,8 +221,8 @@ exists or setup the property manually. For example like this:
         </copy>
     </target>
     <target depends="init,deps-jar,pre-pre-compile,pre-compile" name="-do-compile-deps">
-        <copyfiles files="${reference.PizzaService-ejb.dist-ear}" todir="${build.dir}//"/>
         <copyfiles files="${reference.PizzaService-war.dist-ear}" todir="${build.dir}//"/>
+        <copyfiles files="${reference.PizzaService-ejb.dist-ear}" todir="${build.dir}//"/>
     </target>
     <target name="post-compile">
         <!-- Empty placeholder for easier customization. -->
index 56ae0794a67e326c2b11a7c3d4c1c8ed8406b130..67a5eceba1ea8def0e4d8c61220952898f589fa2 100644 (file)
@@ -1,8 +1,8 @@
-build.xml.data.CRC32=5c81fdbd
+build.xml.data.CRC32=f13244bf
 build.xml.script.CRC32=8e3e9528
 build.xml.stylesheet.CRC32=a5d15b16@1.49.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=5c81fdbd
-nbproject/build-impl.xml.script.CRC32=e91b2e0c
+nbproject/build-impl.xml.data.CRC32=f13244bf
+nbproject/build-impl.xml.script.CRC32=8247d3f3
 nbproject/build-impl.xml.stylesheet.CRC32=5eea63a6@1.49.1
index 1c6b8dcddd369f2e432986d45ef769865dfa5347..f9a92a448189ef36807402c9e8d5bbbd3937ce9b 100644 (file)
@@ -13,17 +13,17 @@ j2ee.appclient.mainclass.args=${j2ee.appclient.tool.args}
 j2ee.compile.on.save=true
 j2ee.deploy.on.save=true
 j2ee.platform=1.7
-j2ee.platform.classpath=${j2ee.server.middleware}/mq/lib/jaxm-api.jar:${j2ee.server.home}/modules/endorsed/javax.annotation-api.jar:${j2ee.server.home}/modules/endorsed/jaxb-api-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/bean-validator.jar:${j2ee.server.home}/modules/javax.batch-api.jar:${j2ee.server.home}/modules/javax.ejb-api.jar:${j2ee.server.home}/modules/javax.el.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent-api.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent.jar:${j2ee.server.home}/modules/javax.enterprise.deploy-api.jar:${j2ee.server.home}/modules/javax.faces.jar:${j2ee.server.home}/modules/javax.inject.jar:${j2ee.server.home}/modules/javax.interceptor-api.jar:${j2ee.server.home}/modules/javax.jms-api.jar:${j2ee.server.home}/modules/javax.json.jar:${j2ee.server.home}/modules/javax.mail.jar:${j2ee.server.home}/modules/javax.management.j2ee-api.jar:${j2ee.server.home}/modules/javax.persistence.jar:${j2ee.server.home}/modules/javax.resource-api.jar:${j2ee.server.home}/modules/javax.security.auth.message-api.jar:${j2ee.server.home}/modules/javax.security.jacc-api.jar:${j2ee.server.home}/modules/javax.servlet-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl.jar:${j2ee.server.home}/modules/javax.transaction-api.jar:${j2ee.server.home}/modules/javax.websocket-api.jar:${j2ee.server.home}/modules/javax.ws.rs-api.jar:${j2ee.server.home}/modules/javax.xml.registry-api.jar:${j2ee.server.home}/modules/javax.xml.rpc-api.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/weld-osgi-bundle.jar
+j2ee.platform.classpath=${j2ee.server.middleware}/mq/lib/jaxm-api.jar:${j2ee.server.home}/modules/endorsed/javax.annotation-api.jar:${j2ee.server.home}/modules/endorsed/jaxb-api.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/bean-validator.jar:${j2ee.server.home}/modules/javax.batch-api.jar:${j2ee.server.home}/modules/javax.ejb-api.jar:${j2ee.server.home}/modules/javax.el.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent-api.jar:${j2ee.server.home}/modules/javax.enterprise.concurrent.jar:${j2ee.server.home}/modules/javax.enterprise.deploy-api.jar:${j2ee.server.home}/modules/javax.faces.jar:${j2ee.server.home}/modules/javax.inject.jar:${j2ee.server.home}/modules/javax.interceptor-api.jar:${j2ee.server.home}/modules/javax.jms-api.jar:${j2ee.server.home}/modules/javax.json.jar:${j2ee.server.home}/modules/javax.mail.jar:${j2ee.server.home}/modules/javax.management.j2ee-api.jar:${j2ee.server.home}/modules/javax.persistence.jar:${j2ee.server.home}/modules/javax.resource-api.jar:${j2ee.server.home}/modules/javax.security.auth.message-api.jar:${j2ee.server.home}/modules/javax.security.jacc-api.jar:${j2ee.server.home}/modules/javax.servlet-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl-api.jar:${j2ee.server.home}/modules/javax.servlet.jsp.jstl.jar:${j2ee.server.home}/modules/javax.transaction-api.jar:${j2ee.server.home}/modules/javax.websocket-api.jar:${j2ee.server.home}/modules/javax.ws.rs-api.jar:${j2ee.server.home}/modules/javax.xml.registry-api.jar:${j2ee.server.home}/modules/javax.xml.rpc-api.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/weld-osgi-bundle.jar
 j2ee.platform.embeddableejb.classpath=${j2ee.server.home}/lib/embedded/glassfish-embedded-static-shell.jar
 j2ee.platform.wscompile.classpath=${j2ee.server.home}/modules/webservices-osgi.jar
-j2ee.platform.wsgen.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/endorsed/jaxb-api-osgi.jar
-j2ee.platform.wsimport.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/endorsed/jaxb-api-osgi.jar
+j2ee.platform.wsgen.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/endorsed/jaxb-api.jar
+j2ee.platform.wsimport.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/endorsed/jaxb-api.jar
 j2ee.platform.wsit.classpath=
 j2ee.server.type=gfv3ee6
 jar.compress=false
 jar.content.additional=\
-    ${reference.PizzaService-ejb.dist-ear}:\
-    ${reference.PizzaService-war.dist-ear}
+    ${reference.PizzaService-war.dist-ear}:\
+    ${reference.PizzaService-ejb.dist-ear}
 jar.name=PizzaService.ear
 javac.debug=true
 javac.deprecation=false
@@ -33,7 +33,7 @@ meta.inf=src/conf
 no.dependencies=false
 platform.active=default_platform
 project.PizzaService-ejb=PizzaService-ejb
-project.PizzaService-war=../PizzaService-war
+project.PizzaService-war=PizzaService-war
 reference.PizzaService-ejb.dist-ear=${project.PizzaService-ejb}/dist/PizzaService-ejb.jar
 reference.PizzaService-war.dist-ear=${project.PizzaService-war}/dist/PizzaService-war.war
 resource.dir=setup
index b13c3e051e7b3ea9aac102aaac1d4196e2bac590..da8c8e30e13ce794c1997c3cfe0b7b5fe1045d40 100644 (file)
@@ -8,11 +8,11 @@
             <web-module-libraries/>
             <web-module-additional-libraries>
                 <library>
-                    <file>${reference.PizzaService-ejb.dist-ear}</file>
+                    <file>${reference.PizzaService-war.dist-ear}</file>
                     <path-in-war>/</path-in-war>
                 </library>
                 <library>
-                    <file>${reference.PizzaService-war.dist-ear}</file>
+                    <file>${reference.PizzaService-ejb.dist-ear}</file>
                     <path-in-war>/</path-in-war>
                 </library>
             </web-module-additional-libraries>
diff --git a/src/java/log4j2.xml b/src/java/log4j2.xml
new file mode 100644 (file)
index 0000000..f2db261
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (C) 2015 Roland Haeder
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+-->
+<Configuration status="INFO">
+       <Appenders>
+               <Console name="console" target="SYSTEM_OUT">
+                       <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+               </Console>
+       </Appenders>
+
+       <Loggers>
+               <Root level="TRACE">
+                       <AppenderRef ref="console" />
+               </Root>
+
+               <Logger name="org.mxchange.jcore.BaseFrameworkSystem" level="INFO">
+                       <AppenderRef ref="console" />
+               </Logger>
+       </Loggers>
+</Configuration>
diff --git a/src/java/org/mxchange/localization/bundle_de_DE.properties b/src/java/org/mxchange/localization/bundle_de_DE.properties
new file mode 100644 (file)
index 0000000..f13ba23
--- /dev/null
@@ -0,0 +1,23 @@
+# Copyright (C) 2015 Roland Haeder
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+BaseContact.gender.unknown.text=Unbekannt
+BaseContact.gender.male.text=Herr
+BaseContact.gender.female.text=Frau
+BaseContact.gender.company.text=Firma
+MiniBasketTag.basket_is_empty=Der Warenkorb ist leer.
+MiniBasketTag.last_item=Zuletzt hinzugef&uuml;gt: {0}
+MiniBasketTag.additional_items=Es befinden sich noch {0} weitere Produkte im Warenkorb.
+MiniBasketTag.to_basket=Zum Warenkorb
+MiniBasketTag.header=Warenkorb
diff --git a/src/java/org/mxchange/localization/bundle_en_US.properties b/src/java/org/mxchange/localization/bundle_en_US.properties
new file mode 100644 (file)
index 0000000..1dc4212
--- /dev/null
@@ -0,0 +1,23 @@
+# Copyright (C) 2015 Roland Haeder
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+BaseContact.gender.unknown.text=Unknown
+BaseContact.gender.male.text=Mr.
+BaseContact.gender.female.text=Mrs.
+BaseContact.gender.company.text=Company
+MiniBasketTag.basket_is_empty=The basket is empty.
+MiniBasketTag.last_item=Last added item: {0}
+MiniBasketTag.additional_items=There are {0} items in the basket.
+MiniBasketTag.to_basket=To basket
+MiniBasketTag.header=Basket