You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2009/02/26 16:54:35 UTC

svn commit: r748189 [1/3] - in /incubator/empire-db/trunk: ./ empire-db-examples/ empire-db-examples/empire-db-example-struts2-cxf/ empire-db-examples/empire-db-example-struts2-cxf/src/ empire-db-examples/empire-db-example-struts2-cxf/src/main/ empire-...

Author: doebele
Date: Thu Feb 26 15:54:32 2009
New Revision: 748189

URL: http://svn.apache.org/viewvc?rev=748189&view=rev
Log:
Added example web application showing the use of empire-db / empire-db-struts2 extensions with a  apache-xcf webservice.

Added:
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/pom.xml   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/client/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/client/EmployeeManagementProxy.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/Department.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/Employee.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/EmployeeManagementInterface.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/common/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/common/Errors.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleApplication.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleConfig.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleContext.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleHtmlTagDictionary.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleRequest.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleSession.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleUser.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/EmployeeDetailAction.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/EmployeeListAction.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/LoginAction.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/BeanDetailAction.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/DetailAction.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/SampleAction.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/ws/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/ws/SampleBeanClass.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/ws/SampleBeanDomain.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/ws/SampleRecord.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/ws/records/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/ws/records/DepartmentRecord.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/ws/records/EmployeeRecord.java   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/resources/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/resources/log4j.dtd   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/resources/log4j.xml   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/resources/messages_de.properties   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/resources/messages_en.properties   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/resources/struts.properties   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/resources/struts.xml   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/webapp/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/webapp/WEB-INF/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/webapp/WEB-INF/config.xml   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/webapp/WEB-INF/empire-tags.tld   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/webapp/WEB-INF/web.xml   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/webapp/css/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/webapp/css/main.css   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/webapp/index.html   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/webapp/jsp/
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/webapp/jsp/employeeDetails.jsp   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/webapp/jsp/employeeList.jsp   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/webapp/jsp/employeeSearch.jsp   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/webapp/jsp/error.jsp   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/webapp/jsp/login.jsp   (with props)
    incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/test/
Modified:
    incubator/empire-db/trunk/empire-assembly-all.xml
    incubator/empire-db/trunk/empire-db-examples/pom.xml

Modified: incubator/empire-db/trunk/empire-assembly-all.xml
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-assembly-all.xml?rev=748189&r1=748188&r2=748189&view=diff
==============================================================================
--- incubator/empire-db/trunk/empire-assembly-all.xml (original)
+++ incubator/empire-db/trunk/empire-assembly-all.xml Thu Feb 26 15:54:32 2009
@@ -65,6 +65,7 @@
 				<include>empire-db-struts2/**</include>
 				<include>empire-db-examples/empire-db-example-struts2/**</include>
 				<include>empire-db-examples/empire-db-example-cxf/**</include>
+				<include>empire-db-examples/empire-db-example-struts2-cxf/**</include>
 			</includes>
 			<excludes>
 				<exclude>**/empire-db/target/**</exclude>
@@ -98,6 +99,7 @@
 				<include>org.apache.empire-db:empire-db-example-advanced</include>
     			<include>org.apache.empire-db:empire-db-example-struts2</include>
     			<include>org.apache.empire-db:empire-db-example-cxf</include>
+    			<include>org.apache.empire-db:empire-db-example-struts2-cxf</include>
 			</includes>
 			<binaries>
 				<outputDirectory>lib</outputDirectory>

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/pom.xml
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/pom.xml?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/pom.xml (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/pom.xml Thu Feb 26 15:54:32 2009
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+	<!--
+		Licensed to the Apache Software Foundation (ASF) under one or more
+		contributor license agreements. See the NOTICE file distributed with
+		this work for additional information regarding copyright ownership.
+		The ASF licenses this file to You under the Apache License, Version
+		2.0 (the "License"); you may not use this file except in compliance
+		with the License. You may obtain a copy of the License at
+
+		http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+		applicable law or agreed to in writing, software distributed under the
+		License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+		CONDITIONS OF ANY KIND, either express or implied. See the License for
+		the specific language governing permissions and limitations under the
+		License.
+	-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<parent>
+		<artifactId>empire-db-examples</artifactId>
+		<groupId>org.apache.empire-db</groupId>
+		<version>2.0.5-SNAPSHOT</version>
+		<relativePath>../pom.xml</relativePath>
+	</parent>
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.apache.empire-db</groupId>
+	<artifactId>empire-db-example-struts2-cxf</artifactId>
+	<packaging>war</packaging>
+	<name>Empire-db Struts2/CXF Example</name>
+	<version>2.0.5-SNAPSHOT</version>
+	<description>Examples showing the use of empire-db.</description>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.empire-db</groupId>
+			<artifactId>empire-db</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.empire-db</groupId>
+			<artifactId>empire-db-struts2</artifactId>
+		</dependency>
+
+	    <dependency>
+			<groupId>org.apache.cxf</groupId>
+			<artifactId>cxf-rt-frontend-jaxws</artifactId>
+			<version>2.1.3</version>
+		</dependency>
+		
+	        <!-- Jetty is needed if you're are not using the CXFServlet -->
+		<dependency>
+			<groupId>org.apache.cxf</groupId>
+			<artifactId>cxf-rt-transports-http-jetty</artifactId>
+			<version>2.1.3</version>
+		</dependency>
+	</dependencies>
+	
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.mortbay.jetty</groupId>
+				<artifactId>maven-jetty-plugin</artifactId>
+				<version>6.1.10</version>
+				<configuration>
+					<scanIntervalSeconds>10</scanIntervalSeconds>
+					<stopKey>foo</stopKey>
+					<stopPort>9999</stopPort>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
\ No newline at end of file

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/client/EmployeeManagementProxy.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/client/EmployeeManagementProxy.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/client/EmployeeManagementProxy.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/client/EmployeeManagementProxy.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.empire.samples.cxf.wssample.client;
+
+import java.util.List;
+
+import javax.xml.ws.Holder;
+
+import org.apache.cxf.interceptor.LoggingInInterceptor;
+import org.apache.cxf.interceptor.LoggingOutInterceptor;
+import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
+import org.apache.empire.samples.cxf.wssample.common.Department;
+import org.apache.empire.samples.cxf.wssample.common.Employee;
+import org.apache.empire.samples.cxf.wssample.common.EmployeeManagementInterface;
+
+// The access to WebService.
+public class EmployeeManagementProxy
+{
+    private EmployeeManagementInterface proxy = null;
+    private String                      serviceAddress;
+
+    public EmployeeManagementProxy(String serviceAddress)
+    {
+        this.serviceAddress = serviceAddress;
+        init();
+    }
+
+    private void init()
+    {
+        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
+        factory.getInInterceptors().add(new LoggingInInterceptor());
+        factory.getOutInterceptors().add(new LoggingOutInterceptor());
+        factory.setServiceClass(EmployeeManagementInterface.class);
+        factory.setAddress(serviceAddress);
+        this.proxy = (EmployeeManagementInterface) factory.create();
+    }
+
+    public Employee createEmmployee()
+    {
+        return proxy.createEmmployee();
+    }
+
+    public List<Department> getDepartments()
+    {
+        return proxy.getDepartments();
+    }
+
+    public Employee getEmmployee(int id)
+    {
+        return proxy.getEmmployee(id);
+    }
+
+    public boolean saveEmployee(Employee e)
+    {
+        // Employee is here a INOUT parameter, and therfore has to be placed in a Holder.
+        Holder<Employee> holder = new Holder<Employee>(e);
+        boolean retVal = proxy.saveEmmployee(holder);
+        // In order to retrieve changes made by the webservice we copy the content to our local variable.
+        e.set(holder.value);
+        return retVal;
+    }
+
+    public boolean deleteEmployee(int id)
+    {
+        return proxy.deleteEmmployee(id);
+    }
+
+    public List<Employee> searchEmployee(Integer id, String firstName, String lastName, Integer department)
+    {
+        return proxy.searchEmmployee(id, firstName, lastName, department);
+    }
+
+    public String test()
+    {
+        return proxy.test();
+    }
+
+}

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/client/EmployeeManagementProxy.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/Department.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/Department.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/Department.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/Department.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.empire.samples.cxf.wssample.common;
+
+import java.util.Date;
+
+import org.apache.empire.db.DBRecord;
+
+
+// Holds all the data represented by a department-record from the database
+public class Department {
+
+	private long departmentId = DBRecord.REC_NEW;
+	private String name = "";
+	private String head = "";
+	private String businessUnit = "";
+	private Date updateTimestamp = null;
+
+	public void setDepartmentId(long id) {
+		departmentId = id;
+	}
+
+	public long getDepartmentId() {
+		return departmentId;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setHead(String head) {
+		this.head = head;
+	}
+
+	public String getHead() {
+		return head;
+	}
+
+	public void setBusinessUnit(String businessUnit) {
+		this.businessUnit = businessUnit;
+	}
+
+	public String getBusinessUnit() {
+		return businessUnit;
+	}
+
+	public void setUpdateTimestamp(Date d) {
+		this.updateTimestamp = d;
+	}
+
+	public Date getUpdateTimestamp() {
+		return updateTimestamp;
+	}
+	
+	public String toString()
+	{
+		return name;
+	}
+
+}

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/Department.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/Employee.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/Employee.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/Employee.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/Employee.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,172 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.empire.samples.cxf.wssample.common;
+
+import java.util.Date;
+
+//Holds all the data represented by a employee-record from the database
+public class Employee {
+
+	private long employeeId = -1;
+	private String salutation = "";
+	private String firstname = "";
+	private String lastname = "";
+	private Date dateOfBirth = null;
+	private long departmentId = -1;
+	private String gender = "";
+	private String phoneNumber = "";
+	private String email = "";
+	private double salary = -1;
+	private boolean retired = false;
+	private Date updateTimestamp = null;
+	private boolean isNew = false;
+
+	public void set(Employee e) {
+		employeeId = e.getDepartmentId();
+		salutation = e.getSalutation();
+		firstname = e.getFirstname();
+		lastname = e.getLastname();
+		dateOfBirth = e.getDateOfBirth();
+		departmentId = e.getDepartmentId();
+		gender = e.getGender();
+		phoneNumber = e.getPhoneNumber();
+		email = e.getEmail();
+		salary = e.getSalary();
+		retired = e.isRetired();
+		updateTimestamp = e.getUpdateTimestamp();
+		isNew = e.isNew();
+	}
+
+	public void setEmployeeId(long id) {
+		employeeId = id;
+	}
+
+	public long getEmployeeId() {
+		return employeeId;
+	}
+
+	public void setSalutation(String salutation) {
+		this.salutation = salutation;
+	}
+
+	public String getSalutation() {
+		return salutation;
+	}
+
+	public void setFirstname(String firstname) {
+		this.firstname = firstname;
+	}
+
+	public String getFirstname() {
+		return firstname;
+	}
+
+	public void setLastname(String lastname) {
+		this.lastname = lastname;
+	}
+
+	public String getLastname() {
+		return lastname;
+	}
+
+	public void setDateOfBirth(Date dateOfBirth) {
+		this.dateOfBirth = dateOfBirth;
+	}
+
+	public Date getDateOfBirth() {
+		return dateOfBirth;
+	}
+
+	public void setDepartmentId(long departmentId) {
+		this.departmentId = departmentId;
+	}
+
+	public long getDepartmentId() {
+		return departmentId;
+	}
+
+	public void setGender(String gender) {
+		this.gender = gender;
+	}
+
+	public String getGender() {
+		return gender;
+	}
+
+	public void setPhoneNumber(String phone) {
+		this.phoneNumber = phone;
+	}
+
+	public String getPhoneNumber() {
+		return phoneNumber;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setRetired(boolean retired) {
+		this.retired = retired;
+	}
+
+	public boolean isRetired() {
+		return retired;
+	}
+
+	public void setUpdateTimestamp(Date d) {
+		this.updateTimestamp = d;
+	}
+
+	public Date getUpdateTimestamp() {
+		return updateTimestamp;
+	}
+
+	public void setSalary(double salary) {
+		this.salary = salary;
+	}
+
+	public double getSalary() {
+		return salary;
+	}
+
+	@Override
+	public String toString() {
+		String str = "";
+		str += getEmployeeId() + ": ";
+		str += getSalutation() + " ";
+		str += getFirstname() + " ";
+		str += getLastname();
+
+		return str;
+	}
+
+	public void setNew(boolean isNew) {
+		this.isNew = isNew;
+	}
+
+	public boolean isNew() {
+		return isNew;
+	}
+
+}
\ No newline at end of file

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/Employee.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/EmployeeManagementInterface.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/EmployeeManagementInterface.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/EmployeeManagementInterface.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/EmployeeManagementInterface.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.empire.samples.cxf.wssample.common;
+
+import java.util.List;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.jws.WebParam.Mode;
+import javax.xml.ws.Holder;
+
+//specifies the the attribute wsdl:portType
+@WebService(name = "employeeManagement")
+
+public interface EmployeeManagementInterface
+{
+
+    @WebMethod(operationName = "searchEmmployee")
+    @WebResult(name = "searchResponse")
+    public List<Employee> searchEmmployee(@WebParam(name = "id", mode = Mode.IN) Integer id,
+                                          @WebParam(name = "firstName", mode = Mode.IN) String firstName,
+                                          @WebParam(name = "lastName", mode = Mode.IN) String lastName,
+                                          @WebParam(name = "department", mode = Mode.IN) Integer department);
+
+    @WebMethod(operationName = "getEmmployee")
+    @WebResult(name = "employee")
+    public Employee getEmmployee(@WebParam(name = "id", mode = Mode.IN) int id);
+
+    @WebMethod(operationName = "createEmmployee")
+    @WebResult(name = "newEmployee")
+    public Employee createEmmployee();
+
+    @WebMethod(operationName = "saveEmmployee")
+    @WebResult(name = "saveResponse")
+    public boolean saveEmmployee(@WebParam(name = "employee", mode = Mode.INOUT) Holder<Employee> e);
+
+    @WebMethod(operationName = "deleteEmmployee")
+    @WebResult(name = "deleteResponse")
+    public boolean deleteEmmployee(@WebParam(name = "id", mode = Mode.IN) int id);
+
+    @WebMethod(operationName = "test")
+    @WebResult(name = "testResponse")
+    public String test();
+
+    @WebMethod(operationName = "getDepartments")
+    @WebResult(name = "allDepartments")
+    public List<Department> getDepartments();
+}

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/samples/cxf/wssample/common/EmployeeManagementInterface.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/common/Errors.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/common/Errors.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/common/Errors.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/common/Errors.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.empire.struts2.websample.common;
+
+import org.apache.empire.commons.ErrorType;
+
+public class Errors {
+    public static final ErrorType WebServiceNotAvailable = new ErrorType(
+            "error.wsnav", "WebService not Responding!");
+}
\ No newline at end of file

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/common/Errors.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleApplication.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleApplication.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleApplication.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleApplication.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,114 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.struts2.websample.web;
+
+import javax.servlet.ServletContext;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.empire.samples.cxf.wssample.client.EmployeeManagementProxy;
+import org.apache.empire.struts2.actionsupport.TextProviderActionSupport;
+import org.apache.empire.struts2.html.HtmlTagDictionary;
+import org.apache.empire.struts2.web.WebApplication;
+import org.apache.empire.struts2.websample.ws.SampleBeanDomain;
+
+public class SampleApplication implements WebApplication {
+	// Logger
+	protected static Log log = LogFactory.getLog(SampleApplication.class);
+
+	// must be singleton
+	private static SampleApplication application;
+
+	public static SampleApplication getInstance() {
+		return application;
+	}
+
+	// Non-Static
+	private SampleBeanDomain beanDomain = new SampleBeanDomain();
+	private SampleConfig config = new SampleConfig();
+	
+	private EmployeeManagementProxy ws = new EmployeeManagementProxy(config
+			.getServiceAddress());
+
+	public void init(ServletContext servletContext) {
+		try {
+
+			// Application
+			if (application != null) {
+				log.fatal("Application has already been initiallized!");
+				return;
+			}
+			application = this;
+
+			// register all controls
+			// InputControlManager.registerControl("myType", new
+			// MyTypeInputControl());
+			config.init(servletContext.getRealPath("WEB-INF/config.xml"));
+
+			// Set Html Dictionary
+			HtmlTagDictionary.set(new SampleHtmlTagDictionary());
+
+			// Set Database to Servlet Context
+			servletContext.setAttribute("db", beanDomain);
+
+			// Get a Webservice Connection
+			log.info("*** testing Webservice Connection ***");
+			ws = initWebServiceProxy();
+
+			// Disable Message caching
+			TextProviderActionSupport.setCachingEnabled(false);
+
+			// Done
+			log.info("Application initialized ");
+
+		} catch (Exception e) {
+			// Error
+			log.info(e.toString());
+			e.printStackTrace();
+		}
+
+	}
+
+	public SampleBeanDomain getBeanDomain() {
+		return beanDomain;
+	}
+
+	public EmployeeManagementProxy getWebServiceProxy() {
+		return ws;
+	}
+
+	public void releaseEmployeeProxy(EmployeeManagementProxy ws) {
+		// Return Connection to Connection Pool
+	}
+
+	private EmployeeManagementProxy initWebServiceProxy() {
+		String addr = config.getServiceAddress();
+		try {
+			EmployeeManagementProxy emp = new EmployeeManagementProxy(addr);
+			String info = emp.test();
+			log.info(info);
+			return emp;
+		} catch (Throwable e) {
+			log.error("Failed to connect directly to '" + addr + "'");
+			throw new RuntimeException(e);
+		}
+
+	}
+
+}

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleApplication.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleConfig.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleConfig.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleConfig.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleConfig.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.struts2.websample.web;
+
+import org.apache.empire.xml.XMLConfiguration;
+
+public class SampleConfig extends XMLConfiguration {
+	
+	private String databaseProvider = "webservice";
+	
+	private String serviceHost = "http://localhost";
+
+	private String servicePort = "8080";
+
+	private String serviceName = "WSSAMPLE";
+
+
+	/**
+	 * Initialize the configuration
+	 */
+	public boolean init(String filename) {
+		// Read the properties file
+		if (super.init(filename, false, true) == false)
+			return false;
+		// Done
+		if (readProperties(this, "properties") == false)
+			return false;
+		// Reader Provider Properties
+		return readProperties(this, "properties-" + databaseProvider);
+	}
+
+	public String getDatabaseProvider() {
+		return databaseProvider;
+	}
+
+	public String getServiceHost() {
+		return serviceHost;
+	}
+
+	public String getServicePort() {
+		return servicePort;
+	}
+
+	public String getServiceName() {
+		return serviceName;
+	}
+
+	public String getServiceAddress() {
+		return serviceHost + ":" + servicePort + "/" + serviceName;
+	}
+
+	// ------- Setters -------
+
+	public void setDatabaseProvider(String databaseProvider) {
+		this.databaseProvider = databaseProvider;
+	}
+
+	public void setServiceHost(String serviceHost) {
+		this.serviceHost = serviceHost;
+	}
+
+	public void setServicePort(String servicePort) {
+		this.servicePort = servicePort;
+	}
+
+	public void setServiceName(String serviceName) {
+		this.serviceName = serviceName;
+	}
+
+}

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleConfig.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleContext.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleContext.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleContext.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleContext.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.struts2.websample.web;
+
+import org.apache.empire.samples.cxf.wssample.client.EmployeeManagementProxy;
+import org.apache.empire.struts2.websample.ws.SampleBeanDomain;
+
+public class SampleContext
+{
+
+    /*
+     * This is just a very simple implementation of a "context" object.
+     * You may add user specific information here.
+     * 
+     */
+    
+    public SampleBeanDomain getBeanDomain()
+    {
+        return SampleApplication.getInstance().getBeanDomain();
+    }
+
+    public EmployeeManagementProxy getWebserviceProxy()
+    {
+        return SampleApplication.getInstance().getWebServiceProxy();
+    }
+}

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleContext.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleHtmlTagDictionary.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleHtmlTagDictionary.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleHtmlTagDictionary.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleHtmlTagDictionary.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.struts2.websample.web;
+
+import org.apache.empire.struts2.html.DefaultHtmlTagDictionary;
+
+public class SampleHtmlTagDictionary extends DefaultHtmlTagDictionary
+{
+    // ------- Input Control -------
+
+    @Override
+    public boolean InputReadOnlyAsData()
+    {
+        return false; // Show Read Only Input as Data (not as disabled input)
+    }
+    
+    @Override
+    public int InputMaxCharSize()
+    {
+        return 40; // Maximum horizontal size in characters
+    }
+
+    @Override
+    public String InputWrapperTag()
+    {
+        return "tr";
+    }
+
+    @Override
+    public String InputLabelTag()
+    {
+        return "td";
+    }
+
+    @Override
+    public String InputControlTag()
+    {
+        return "td";
+    }
+
+    // ------- Errors -------
+
+    @Override
+    public String ErrorItemEntryClass()
+    {
+        return "errorMessage";
+    }
+
+    @Override
+    public String ErrorActionEntryClass()
+    {
+        return "errorMessage";
+    }
+
+    @Override
+    public String ErrorEntryWrapperTag()
+    {
+        return "span";
+    }
+
+    // ------- Message -------
+
+    @Override
+    public String MessageTag()
+    {
+        return "div";
+    }
+
+    @Override
+    public String MessageClass()
+    {
+        return "actionMessage";
+    }
+
+}

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleHtmlTagDictionary.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleRequest.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleRequest.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleRequest.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleRequest.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,118 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.struts2.websample.web;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.empire.samples.cxf.wssample.client.EmployeeManagementProxy;
+import org.apache.empire.struts2.web.EmpireStrutsDispatcher;
+import org.apache.empire.struts2.web.WebRequest;
+
+
+public class SampleRequest implements WebRequest
+{
+    // Logger
+    protected static Log log = LogFactory.getLog(SampleRequest.class);
+
+    private HttpServletRequest  httpRequest;
+    private HttpServletResponse httpResponse;
+    private SampleSession       session;
+    private EmployeeManagementProxy          ws;  // Connection for this request
+    
+    public static SampleRequest getInstance()
+    {
+        return (SampleRequest)EmpireStrutsDispatcher.getCurrentRequest();        
+    }
+    
+    public boolean init(HttpServletRequest request, HttpServletResponse response, Object session)
+    {
+        this.httpRequest = request;
+        this.httpResponse = response;
+        // Set Internal objects
+        this.session = (SampleSession)session;
+        if (this.session==null)
+        {   // Error
+            log.fatal("Internal Error: Session object is null");
+            return false;
+        }
+        // continue processing
+        return true;
+    }
+
+    public void exit(int exitCode)
+    {
+    	//TODO: how to roll back on webservice?
+        // Cleanup
+        if (ws!=null)
+        {   // Commit or rollback connection depending on the exit code
+            if (exitCode>=0)
+            {   // 0 or positive exitCode indicates success
+                log.debug("Request ended sucessfully. Committing database changes.");
+                //getApplication().getDatabase().commit(connection);
+            }
+            else 
+            {   // negative exitCode indicates an error
+                log.warn("Request ended with errors. Database changes will be rolled back.");
+                //getApplication().getDatabase().rollback(connection);
+            }
+            // Release Connection
+            getApplication().releaseEmployeeProxy(ws);
+            ws= null;
+        }
+        // Release objects
+        this.httpRequest = null;
+        this.httpResponse = null;
+    }
+
+    // Get Session
+    public SampleSession getSession()
+    {
+        return session;
+    }
+
+    // Get Application
+    public SampleApplication getApplication()
+    {
+        return session.getApplication();
+    }
+
+    // Get Connection
+    public EmployeeManagementProxy getEmployeeManagementProxy()
+    {
+        // Get a Connection for the Connection Pool 
+        if (ws==null)
+        	ws= getApplication().getWebServiceProxy();
+        // return connection
+        return ws;
+    }
+    
+    public HttpServletRequest getHttpRequest()
+    {
+        return httpRequest;
+    }
+
+    public HttpServletResponse getHttpResponse()
+    {
+        return httpResponse;
+    }
+    
+}

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleRequest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleSession.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleSession.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleSession.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleSession.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.struts2.websample.web;
+
+import java.util.HashMap;
+
+import javax.servlet.http.HttpSession;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.empire.struts2.web.WebSession;
+
+
+public class SampleSession implements WebSession
+{
+    // Logger
+    protected static Log log = LogFactory.getLog(SampleSession.class);
+
+    // Non-Static
+    private SampleApplication application = null;
+    public SampleUser user = null;
+    public HashMap<String, Object> objectMap = new HashMap<String, Object>();
+    
+    // Init Session
+    public void init(HttpSession session, Object application)
+    {
+        this.application = (SampleApplication) application;
+        if (this.application==null)
+        {
+            throw new RuntimeException("Fatal: Application object is null!");
+        }
+        log.info("Session created ");
+    }
+
+    // Get Application
+    public SampleApplication getApplication()
+    {
+        return application;
+    }
+
+    public SampleUser getUser()
+    {
+        return user;
+    }
+
+    public void setUser(SampleUser user)
+    {
+        this.user = user;
+    }
+    
+    public Object getObject(String name)
+    {
+        return objectMap.get(name);
+    }
+    
+    public final Object getObject(Class objclass)
+    {
+        return getObject(objclass.getName());
+    }
+    
+    public Object setObject(String name, Object obj)
+    {
+        return objectMap.put(name, obj);
+    }
+    
+    public final Object setObject(Class objclass, Object obj)
+    {
+        return setObject(objclass.getName(), obj);
+    }
+    
+}

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleSession.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleUser.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleUser.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleUser.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleUser.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.struts2.websample.web;
+
+import java.util.Locale;
+
+public class SampleUser
+{
+    private String userId;
+    private String displayName;
+    private Locale locale = Locale.ENGLISH;
+
+    public SampleUser(String userId, String displayName)
+    {
+        this.userId = userId;
+        this.displayName = displayName;
+    }
+
+    public String getDisplayName()
+    {
+        return displayName;
+    }
+
+    public String getUserId()
+    {
+        return userId;
+    }
+
+    public Locale getLocale()
+    {
+        return locale;
+    }
+
+    public void setLocale(Locale locale)
+    {
+        if(locale!=null)
+            this.locale = locale;
+    }
+
+}

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/SampleUser.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/EmployeeDetailAction.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/EmployeeDetailAction.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/EmployeeDetailAction.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/EmployeeDetailAction.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.struts2.websample.web.actions;
+
+import org.apache.empire.samples.cxf.wssample.client.EmployeeManagementProxy;
+import org.apache.empire.samples.cxf.wssample.common.Employee;
+import org.apache.empire.struts2.actionsupport.SessionPersistence;
+import org.apache.empire.struts2.websample.web.SampleApplication;
+import org.apache.empire.struts2.websample.web.SampleContext;
+import org.apache.empire.struts2.websample.web.actiontypes.BeanDetailAction;
+import org.apache.empire.struts2.websample.ws.records.EmployeeRecord;
+
+/**
+ * EmployeeDetailAction
+ * <p>
+ * This class provides form processing functions for an Employee record.<br>
+ * The class uses a RecordActionSupport object which does most of the work.<br>
+ * For multi-record forms it is possible to have several RecordActionSupport members.<br>
+ * In this case each must be given a differnt property name however (see RecordActionSupport overloads).
+ * </p>
+ */
+public class EmployeeDetailAction extends BeanDetailAction<Employee>
+{
+    private EmployeeManagementProxy proxy = SampleApplication.getInstance().getWebServiceProxy();
+
+    // ------- Action Construction -------
+
+    public EmployeeDetailAction()
+    {
+        super(new EmployeeRecord(new SampleContext()), SessionPersistence.Key);
+
+    }
+
+    /*
+     * 
+     * public EmployeeDetailAction2() { super(SampleBeanDomain.getInstance().T_EMPLOYEES,SessionPersistence.Key); }
+     */
+
+    // ------- Action Properties -------
+    // ------- the have to overridables -------
+    @Override
+    public Employee createBean()
+    {
+        Employee e = proxy.createEmmployee();
+        return e;
+    }
+
+    @Override
+    public boolean deleteBean(Object[] key)
+    {
+        int id = Integer.parseInt(key[0].toString());
+        return proxy.deleteEmployee(id);
+    }
+
+    @Override
+    public Employee loadBean(Object[] key)
+    {
+        //TODO: not working properly!
+        int id = Integer.parseInt(key[0].toString());
+        return proxy.getEmmployee(id);
+    }
+
+    @Override
+    public boolean saveBean(Employee bean, boolean isNew)
+    {
+        return proxy.saveEmployee(bean);
+    }
+
+}

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/EmployeeDetailAction.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/EmployeeListAction.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/EmployeeListAction.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/EmployeeListAction.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/EmployeeListAction.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,170 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.struts2.websample.web.actions;
+
+import java.util.List;
+
+import org.apache.empire.commons.Options;
+import org.apache.empire.samples.cxf.wssample.common.Employee;
+import org.apache.empire.struts2.websample.web.SampleContext;
+import org.apache.empire.struts2.websample.web.actiontypes.SampleAction;
+import org.apache.empire.struts2.websample.ws.records.EmployeeRecord;
+
+/**
+ * EmployeeListAction
+ * <p>
+ * This class provides form functions for searching and displaying a list of employees. This implementation shows two optional
+ * approaches for this. 1. Use a ReaderListActionSupport object to directly display database query results in the JSP.<br>
+ * This is most efficient, however it lacks some flexibility.<br>
+ * 2. Use a BeanListActionSupport object to obtain a list of JavaBean objects from the query.<br>
+ * From the JSP the data of the list will be accessed though their getter and setters.<br>
+ * While this is not a efficent as the Reader approach, it is more flexible since post processing of the query result is
+ * possbile.
+ * </p>
+ */
+public class EmployeeListAction extends SampleAction
+{
+    /**
+     * Action mappings
+     */
+    public static final String SEARCH = "search";
+    public static final String LIST   = "list";
+
+    // the search info
+    public static class SearchInfo
+    {
+        private Integer employeeId;
+        private String  firstName;
+        private String  lastName;
+        private Integer departmentId;
+
+        public Integer getEmployeeId()
+        {
+            return employeeId;
+        }
+
+        public void setEmployeeId(Integer employeeId)
+        {
+            this.employeeId = employeeId;
+        }
+
+        public Integer getDepartmentId()
+        {
+            return departmentId;
+        }
+
+        public void setDepartmentId(Integer departmentId)
+        {
+            this.departmentId = departmentId;
+        }
+
+        public String getFirstName()
+        {
+            return firstName;
+        }
+
+        public void setFirstName(String firstName)
+        {
+            this.firstName = firstName;
+        }
+
+        public String getLastName()
+        {
+            return lastName;
+        }
+
+        public void setLastName(String lastName)
+        {
+            this.lastName = lastName;
+        }
+    }
+
+    private List<Employee> employeeBeanList = null;
+    private Options        departments      = null;
+
+    // ------- Action Construction -------
+
+    public EmployeeListAction()
+    {
+
+    }
+
+    // ------- Action Properties -------
+
+    public SearchInfo getSearchInfo()
+    {
+        return (SearchInfo) getActionBean(SearchInfo.class, true);
+    }
+
+    // -------- Employee Bean List --------
+
+    public List<Employee> getEmployees()
+    {
+        return employeeBeanList;
+    }
+
+    // -------- Action Methods --------
+
+    public String doInit()
+    {
+        // check webservice availability!
+        checkWebService();
+        return SEARCH;
+    }
+
+    public String doReset()
+    {
+        removeActionBean(SearchInfo.class);
+        // check webservice availability!
+        checkWebService();
+        return SEARCH;
+    }
+
+    public String doQuery()
+    {
+        // Reset list status
+        return doList();
+    }
+
+    public String doList()
+    {
+        SearchInfo si = getSearchInfo();
+        // check webservice availability!
+        if (checkWebService())
+        {
+            employeeBeanList = getWSProxy().searchEmployee(si.getEmployeeId(), si.getFirstName(), si.getLastName(),
+                                                           si.getDepartmentId());
+            return LIST;
+        } else
+            return SEARCH;
+
+    }
+
+    public Options getDepartments()
+    {
+        if (!isWebServiceAV())
+            return new Options(); // Webservice is note not available ... so do nothing
+
+        if (departments == null)
+            departments = EmployeeRecord.getDepartments(new SampleContext());
+
+        return departments;
+    }
+
+}

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/EmployeeListAction.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/LoginAction.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/LoginAction.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/LoginAction.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/LoginAction.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,172 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.struts2.websample.web.actions;
+
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.empire.commons.Errors;
+import org.apache.empire.commons.OptionEntry;
+import org.apache.empire.commons.Options;
+import org.apache.empire.struts2.websample.web.SampleUser;
+import org.apache.empire.struts2.websample.web.actiontypes.SampleAction;
+
+import com.opensymphony.xwork2.config.entities.Parameterizable;
+
+@SuppressWarnings("serial")
+public class LoginAction extends SampleAction implements Parameterizable // StaticParametersInterceptor
+{
+    // Login Targets
+    public static final String INPUT   = "input";
+    public static final String SUCCESS = "success";
+
+    // LoginInfo
+    public class LoginInfo
+    {
+        private String name;
+        private String pwd;
+        private String locale;
+
+        public String getName()
+        {
+            return name;
+        }
+
+        public void setName(String name)
+        {
+            this.name = name;
+        }
+
+        public String getPwd()
+        {
+            return pwd;
+        }
+
+        public void setPwd(String pwd)
+        {
+            this.pwd = pwd;
+        }
+
+        public String getLocale()
+        {
+            return locale;
+        }
+
+        public void setLocale(String locale)
+        {
+            this.locale = locale;
+        }
+    }
+
+    // Login Action
+    public LoginAction()
+    {
+        // Constructor
+    }
+
+    // Login requried for this action
+    @Override
+    public boolean loginRequired()
+    {
+        return false;
+    }
+
+    // Login form bean
+    private LoginInfo loginInfo = new LoginInfo();
+
+    public LoginInfo getLoginInfo()
+    {
+        return loginInfo;
+    }
+
+    public String doInit()
+    {
+        SampleUser user = getSession().getUser();
+        if (user != null)
+            loginInfo.setName(user.getUserId());
+        
+        // check webservice availability!
+        checkWebService();
+        
+        // Done
+        return INPUT;
+    }
+
+    public String doLogin()
+    {
+        String userID = loginInfo.getName();
+        String userName = userID;
+
+        if (userID == null || userID.length() == 0)
+        {
+            setActionError(Errors.InvalidPassword);
+            return INPUT;
+        }
+
+        // Login
+        SampleUser user = new SampleUser(userID, userName);
+        user.setLocale(new Locale(loginInfo.getLocale()));
+        getSession().setUser(user);
+        // Done
+        return SUCCESS;
+    }
+
+    public String doLogout()
+    {
+        getSession().setUser(null);
+        // check webservice availability!
+        checkWebService();
+        return INPUT;
+    }
+
+    public String doError()
+    {
+        log.info("An error as occurred");
+        return INPUT;
+    }
+
+    /*
+     * Implementation of Parameterizable
+     */
+
+    private Map<String, Object> actionConfigParams = null;
+
+    public void addParam(String name, Object value)
+    {
+        actionConfigParams.put(name, value);
+    }
+
+    public Map<String, Object> getParams()
+    {
+        return actionConfigParams;
+    }
+
+    public void setParams(Map<String, Object> actionConfigParams)
+    {
+        this.actionConfigParams = actionConfigParams;
+    }
+
+    public Options getLanguages()
+    {
+        Options o = new Options();
+        o.add(new OptionEntry(Locale.ENGLISH, Locale.ENGLISH.getDisplayLanguage()));
+        o.add(new OptionEntry(Locale.GERMAN, Locale.GERMAN.getDisplayLanguage()));
+        return o;
+    }
+}

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actions/LoginAction.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/BeanDetailAction.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/BeanDetailAction.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/BeanDetailAction.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/BeanDetailAction.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,221 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.struts2.websample.web.actiontypes;
+
+import org.apache.empire.commons.Errors;
+import org.apache.empire.data.Record;
+import org.apache.empire.data.bean.BeanClass;
+import org.apache.empire.data.bean.BeanRecordProxy;
+import org.apache.empire.struts2.actionsupport.BeanActionSupport;
+import org.apache.empire.struts2.actionsupport.SessionPersistence;
+import org.apache.empire.struts2.web.WebErrors;
+
+import com.opensymphony.xwork2.interceptor.NoParameters;
+
+
+/**
+ * BeanDetailAction
+ * <p>
+ * This class allows using a JavaBean or Data Transfer Object (DTO) for form data processing.
+ * Metadata for the Beans should be provided using the BeanClass and BeanProperty classes.
+ * </p>
+ * @author Rainer
+ */
+public abstract class BeanDetailAction<T> extends DetailAction
+    implements NoParameters // set this to provide custom parameter handling
+{
+    protected final BeanActionSupport<T> beanSupport;
+    
+    /**
+     * Constructs a BeanDetailAction from a BeanRecordProxy object
+     * @param record the BeanRecordProxy for the bean 
+     * @param persistence persistence level
+     */
+    public BeanDetailAction(BeanRecordProxy<T> record, SessionPersistence persistence)
+    {
+        beanSupport = new BeanActionSupport<T>(this, record, persistence);
+    }
+
+    /**
+     * Constructs a BeanDetailAction from a BeanClass definition
+     * @param beanClass the bean class defining the bean's metadata 
+     * @param persistence persistence level
+     */
+    public BeanDetailAction(BeanClass beanClass, SessionPersistence persistence)
+    {
+        beanSupport = new BeanActionSupport<T>(this, beanClass, persistence);
+    }
+    
+    /**
+     * Returns the Record interface implmentation for the bean.
+     * @return the Record interface implmentation for the bean. 
+     */
+    public Record getRecord() 
+    {
+        return beanSupport.getRecord();
+    }
+
+    @Override
+    public String doCreate() 
+    {
+        T bean = createBean();
+        if (bean==null)
+        {   // Must have an action error set!
+            if (!hasActionError())
+                setActionError(Errors.ObjectNotValid, beanSupport.getRecordPropertyName());
+            return doCancel();
+        }
+        beanSupport.setData(bean);
+        return INPUT;
+    }
+
+    @Override
+    public String doLoad() 
+    {
+        // Read Record
+        Object[] key = beanSupport.getActionParamKey();
+        if (key!=null)
+        {   // Load the bean
+            T bean = loadBean(key);
+            if (bean==null)
+            {   // Must have an action error set!
+                if (!hasActionError())
+                    setActionError(Errors.ItemNotFound, beanSupport.getRecordKeyString());
+                return doCancel();
+            }
+            beanSupport.setData(bean);
+        }
+        // Check if record is valid
+        if (beanSupport.isValid()==false)
+        {
+            setActionError(WebErrors.InvalidFormData);
+            return doCancel();
+        }
+        // Test
+        return INPUT;
+    }
+
+    @Override
+    public String doDelete() 
+    {
+        Object[] key = null;
+        if (beanSupport.hasActionKey(true))
+        {
+            if (beanSupport.getActionParamNewFlag()==false)
+                key = beanSupport.getActionParamKey();
+        }
+        else
+        {   // Get the bean key
+            if (beanSupport.getRecord().isNew()==false)
+                key = beanSupport.getRecordKeyValues();
+        }
+        // Delete the bean
+        if (key!=null && deleteBean(key)==false)
+        {   // An Error has occurred;
+            return doCancel();
+        }
+        // Clear Data
+        beanSupport.setData(null);
+        return RETURN;
+    }
+
+    @Override
+    public String doSave() {
+
+        // bean Support
+        if (beanSupport.isValid()==false)
+        {   // Create new or reload existing item
+            T bean;
+            if (beanSupport.getActionParamNewFlag())
+            {   // crate new Item
+                bean = createBean();
+            }
+            else
+            {   // reload existing item
+                bean = loadBean(beanSupport.getActionParamKey());
+            }
+            if (bean==null)
+            {   // Must have an action error set!
+                if (!hasActionError())
+                    setActionError(Errors.ItemNotFound, beanSupport.getRecordKeyString());
+                return doCancel();
+            }
+            beanSupport.setData(bean);
+        }
+        else if (beanSupport.getRecord().isNew()==false) 
+        {   // Check whether we have the right key
+            if (!beanSupport.checkKey())
+            {   // Record's don't match
+                setActionError(WebErrors.InvalidFormData);
+                return doCancel();
+            }
+        }
+        // LoadFormData 
+        if (beanSupport.loadFormData()==false)
+        {   // Error loading form data
+            return INPUT;
+        }
+        
+        // Save the record
+        boolean isNew = beanSupport.getRecord().isNew();
+        if (saveBean(beanSupport.getData(), isNew)==false)
+        {   // Error saving bean
+            return INPUT;
+        }
+        
+        // Record has been saved successfully
+        // beanSupport.updateSessionKey();
+        beanSupport.setData(null);
+        
+        return RETURN;
+    }
+    
+    // ------- overridables -------
+    
+    /**
+     * Returns the bean for the supplied object key.
+     * If an error occurs the fuction must set an action error and return null.
+     * @return the bean object
+     */
+    public abstract T createBean();
+    
+    /**
+     * Returns the bean for the supplied object key.
+     * If an error occurs the fuction must set an action error and return null.
+     * @param key the bean's key values
+     * @return the bean object
+     */
+    public abstract T loadBean(Object[] key);
+    
+    /**
+     * Saves a bean object 
+     * @param bean 
+     * @param isNew true the bean is a newly created object or false otherwise
+     * @return true if the bean has been stored sucessfully or false otherwise
+     */
+    public abstract boolean saveBean(T bean, boolean isNew);
+    
+    /**
+     * Deletes a bean object
+     * @param bean 
+     * @return true if the bean has been stored sucessfully or false otherwise
+     */
+    public abstract boolean deleteBean(Object[] key);
+    
+}

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/BeanDetailAction.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/DetailAction.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/DetailAction.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/DetailAction.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/DetailAction.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.struts2.websample.web.actiontypes;
+
+
+public abstract class DetailAction extends SampleAction
+{
+    /**
+     * Action mappings
+     */
+    public static final String INPUT  = "input";
+    public static final String RETURN = "return";
+
+    // Detail Action
+    public DetailAction()
+    {
+        // Default constructor
+    }
+        
+    public abstract String doCreate();
+    
+    public abstract String doLoad();
+
+    public abstract String doSave();
+
+    public abstract String doDelete();
+
+    // Optional overridable
+    public String doCancel()
+    {
+        return RETURN;
+    }
+    
+}

Propchange: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/DetailAction.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/SampleAction.java
URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/SampleAction.java?rev=748189&view=auto
==============================================================================
--- incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/SampleAction.java (added)
+++ incubator/empire-db/trunk/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/web/actiontypes/SampleAction.java Thu Feb 26 15:54:32 2009
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.struts2.websample.web.actiontypes;
+
+import java.util.Locale;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.empire.samples.cxf.wssample.client.EmployeeManagementProxy;
+import org.apache.empire.struts2.action.WebAction;
+import org.apache.empire.struts2.websample.common.Errors;
+import org.apache.empire.struts2.websample.web.SampleApplication;
+import org.apache.empire.struts2.websample.web.SampleRequest;
+import org.apache.empire.struts2.websample.web.SampleSession;
+
+public abstract class SampleAction extends WebAction
+{
+    // Logger
+    protected static Log log = LogFactory.getLog(SampleAction.class);
+    private EmployeeManagementProxy proxy = SampleApplication.getInstance().getWebServiceProxy();
+
+    public SampleAction()
+    {
+        // Constructor
+    }
+
+    // Login requried for this action
+    @Override
+    public boolean loginRequired()
+    {
+        return (getSession().getUser() == null);
+    }
+
+    @Override
+    public Locale getLocale()
+    {
+        if (getRequest().getSession().getUser() == null)
+            return Locale.ENGLISH;
+        else
+            return getRequest().getSession().getUser().getLocale();
+    }
+
+    // Request
+    public static SampleRequest getRequest()
+    {
+        return SampleRequest.getInstance();
+    }
+
+    // Application getters
+    public SampleApplication getApplication()
+    {
+        return getRequest().getApplication();
+    }
+
+    public SampleSession getSession()
+    {
+        return getRequest().getSession();
+    }
+
+    public boolean checkWebService()
+    {
+        try
+        {
+            proxy.test();
+            return true;
+        } catch (Exception e)
+        {
+            setActionError(Errors.WebServiceNotAvailable);
+            return false;
+        }
+    }
+    
+    public boolean isWebServiceAV()
+    {
+        try
+        {
+            proxy.test();
+            return true;
+        } catch (Exception e)
+        {
+            return false;
+        }
+    }
+    
+    public EmployeeManagementProxy getWSProxy()
+    {
+        return proxy;
+    }
+
+}