Employee example cleanup
diff --git a/dbws/dbws.simple/.settings/org.eclipse.core.resources.prefs b/dbws/dbws.simple/.settings/org.eclipse.core.resources.prefs
index cdfe4f1..f022440 100644
--- a/dbws/dbws.simple/.settings/org.eclipse.core.resources.prefs
+++ b/dbws/dbws.simple/.settings/org.eclipse.core.resources.prefs
@@ -1,5 +1,4 @@
 eclipse.preferences.version=1
-encoding//src/main/java=UTF-8
 encoding//src/test/java=UTF-8
 encoding//src/test/resources=UTF-8
 encoding/<project>=UTF-8
diff --git a/jpa/employee/employee.model/src/main/java/eclipselink/example/jpa/employee/services/diagnostics/Diagnostics.java b/jpa/employee/employee.model/src/main/java/eclipselink/example/jpa/employee/services/diagnostics/Diagnostics.java
index 7c49489..6387f7f 100644
--- a/jpa/employee/employee.model/src/main/java/eclipselink/example/jpa/employee/services/diagnostics/Diagnostics.java
+++ b/jpa/employee/employee.model/src/main/java/eclipselink/example/jpa/employee/services/diagnostics/Diagnostics.java
@@ -86,7 +86,7 @@
         }
         return trace;
     }
-    
+
     public void clear() {
         this.traces.set(null);
     }
@@ -125,5 +125,12 @@
             return entries;
         }
 
+        public void truncate(int length, String message) {
+            if (getEntries().size() > length) {
+                this.entries = this.entries.subList(0, length - 1);
+                this.entries.add(message);
+            }
+        }
+
     }
 }
diff --git a/jpa/employee/employee.model/src/main/java/eclipselink/example/jpa/employee/services/diagnostics/DiagnosticsInterceptor.java b/jpa/employee/employee.model/src/main/java/eclipselink/example/jpa/employee/services/diagnostics/DiagnosticsInterceptor.java
deleted file mode 100644
index 8d2d789..0000000
--- a/jpa/employee/employee.model/src/main/java/eclipselink/example/jpa/employee/services/diagnostics/DiagnosticsInterceptor.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the 
- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 
- * which accompanies this distribution. 
- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
- * and the Eclipse Distribution License is available at 
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * Contributors:
- *  dclarke - initial
- ******************************************************************************/
-package eclipselink.example.jpa.employee.services.diagnostics;
-
-import javax.ejb.EJB;
-import javax.interceptor.AroundInvoke;
-import javax.interceptor.Interceptor;
-import javax.interceptor.InvocationContext;
-
-/**
- * TODO
- * 
- * @author dclarke
- * @since EclipseLink 2.4.2
- */
-@Interceptor
-public class DiagnosticsInterceptor {
-
-    private Diagnostics diagnostics;
-
-    @EJB
-    public void setDiagnostics(Diagnostics diagnostics) {
-        this.diagnostics = diagnostics;
-    }
-
-    public Diagnostics getDiagnostics() {
-        return diagnostics;
-    }
-
-    @AroundInvoke
-    public Object intercept(InvocationContext ctx) throws Exception {
-        System.out.println("*** DiagnosticsInterceptor intercepting " + ctx.getMethod().getName());
-
-        try {
-            return ctx.proceed();
-        } finally {
-            if (!ctx.getMethod().getName().equals("getDiagnostics")) {
-                System.out.println("*** DiagnosticsInterceptor exiting");
-            }
-        }
-    }
-
-}
diff --git a/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/EditEmployeeTest.java b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/EditEmployeeTest.java
index 36bee03..732c05b 100644
--- a/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/EditEmployeeTest.java
+++ b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/EditEmployeeTest.java
@@ -14,7 +14,6 @@
 
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
-import javax.persistence.OptimisticLockException;
 
 import org.junit.After;
 import org.junit.AfterClass;
diff --git a/jpa/employee/employee.web-js/.settings/org.eclipse.wst.html.core.prefs b/jpa/employee/employee.web-js/.settings/org.eclipse.wst.html.core.prefs
new file mode 100644
index 0000000..38ff1b2
--- /dev/null
+++ b/jpa/employee/employee.web-js/.settings/org.eclipse.wst.html.core.prefs
@@ -0,0 +1,39 @@
+attrDuplicate=2
+attrInvalidName=2
+attrInvalidValue=2
+attrNameMismatch=2
+attrUndefName=-1
+attrUndefValue=2
+attrValueEqualsMissing=2
+attrValueMismatch=1
+attrValueUnclosed=2
+cdataInvalidContent=2
+cdataUnclosed=1
+commentInvalidContent=2
+commentUnclosed=1
+docDoctypeUnclosed=1
+docDuplicateTag=1
+docInvalidChar=2
+docInvalidContent=2
+eclipse.preferences.version=1
+elemCoexistence=2
+elemDuplicate=2
+elemEndInvalidCase=1
+elemInvalidContent=2
+elemInvalidDirective=1
+elemInvalidEmptyTag=2
+elemInvalidName=1
+elemInvalidText=2
+elemMissingEnd=2
+elemMissingStart=2
+elemStartInvalidCase=2
+elemUnclosedEndTag=1
+elemUnclosedStartTag=1
+elemUnknownName=2
+elemUnnecessaryEnd=2
+piInvalidContent=2
+piUnclosed=1
+piUndefined=2
+refInvalidContent=2
+resourceNotFound=2
+use-project-settings=true
diff --git a/jpa/employee/employee.web-js/.settings/org.eclipse.wst.jsdt.core.prefs b/jpa/employee/employee.web-js/.settings/org.eclipse.wst.jsdt.core.prefs
new file mode 100644
index 0000000..c077bb1
--- /dev/null
+++ b/jpa/employee/employee.web-js/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -0,0 +1,39 @@
+eclipse.preferences.version=1
+org.eclipse.wst.jsdt.core.compiler.problem.deprecation=warning
+org.eclipse.wst.jsdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.wst.jsdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.wst.jsdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.wst.jsdt.core.compiler.problem.duplicateLocalVariables=warning
+org.eclipse.wst.jsdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.wst.jsdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.wst.jsdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.wst.jsdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.looseVarDecleration=warning
+org.eclipse.wst.jsdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.wst.jsdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.nullReference=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.optionalSemicolon=warning
+org.eclipse.wst.jsdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.undefinedField=warning
+org.eclipse.wst.jsdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.uninitializedGlobalVariable=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.uninitializedLocalVariable=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.unresolvedFieldReference=error
+org.eclipse.wst.jsdt.core.compiler.problem.unresolvedMethodReference=error
+org.eclipse.wst.jsdt.core.compiler.problem.unresolvedTypeReference=error
+org.eclipse.wst.jsdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.wst.jsdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.wst.jsdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.wst.jsdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.wst.jsdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.wst.jsdt.core.compiler.problem.unusedPrivateMember=warning
+semanticValidation=enabled
diff --git a/jpa/employee/employee.web/.settings/org.eclipse.core.resources.prefs b/jpa/employee/employee.web/.settings/org.eclipse.core.resources.prefs
index 5e09596..7f60f10 100644
--- a/jpa/employee/employee.web/.settings/org.eclipse.core.resources.prefs
+++ b/jpa/employee/employee.web/.settings/org.eclipse.core.resources.prefs
@@ -1,6 +1,7 @@
 eclipse.preferences.version=1
 encoding//src/main/java=UTF-8
 encoding//src/main/java/eclipselink/example/jpa/employee/web/EditEmployee.java=UTF-8
+encoding//src/main/java/eclipselink/example/jpa/employee/web/Navigation.java=UTF-8
 encoding//src/main/resources=UTF-8
 encoding//src/test/java=UTF-8
 encoding/<project>=UTF-8
diff --git a/jpa/employee/employee.web/.settings/org.eclipse.wst.html.core.prefs b/jpa/employee/employee.web/.settings/org.eclipse.wst.html.core.prefs
new file mode 100644
index 0000000..467372b
--- /dev/null
+++ b/jpa/employee/employee.web/.settings/org.eclipse.wst.html.core.prefs
@@ -0,0 +1,39 @@
+attrDuplicate=2
+attrInvalidName=2
+attrInvalidValue=2
+attrNameMismatch=2
+attrUndefName=2
+attrUndefValue=2
+attrValueEqualsMissing=2
+attrValueMismatch=1
+attrValueUnclosed=2
+cdataInvalidContent=2
+cdataUnclosed=1
+commentInvalidContent=2
+commentUnclosed=1
+docDoctypeUnclosed=1
+docDuplicateTag=1
+docInvalidChar=2
+docInvalidContent=2
+eclipse.preferences.version=1
+elemCoexistence=2
+elemDuplicate=2
+elemEndInvalidCase=1
+elemInvalidContent=2
+elemInvalidDirective=1
+elemInvalidEmptyTag=2
+elemInvalidName=1
+elemInvalidText=2
+elemMissingEnd=2
+elemMissingStart=2
+elemStartInvalidCase=2
+elemUnclosedEndTag=1
+elemUnclosedStartTag=1
+elemUnknownName=-1
+elemUnnecessaryEnd=2
+piInvalidContent=2
+piUnclosed=1
+piUndefined=2
+refInvalidContent=2
+resourceNotFound=2
+use-project-settings=true
diff --git a/jpa/employee/employee.web/.settings/org.eclipse.wst.jsdt.core.prefs b/jpa/employee/employee.web/.settings/org.eclipse.wst.jsdt.core.prefs
new file mode 100644
index 0000000..046bdbf
--- /dev/null
+++ b/jpa/employee/employee.web/.settings/org.eclipse.wst.jsdt.core.prefs
@@ -0,0 +1,39 @@
+eclipse.preferences.version=1
+org.eclipse.wst.jsdt.core.compiler.problem.deprecation=warning
+org.eclipse.wst.jsdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.wst.jsdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.wst.jsdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.wst.jsdt.core.compiler.problem.duplicateLocalVariables=warning
+org.eclipse.wst.jsdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.wst.jsdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.wst.jsdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.wst.jsdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.looseVarDecleration=warning
+org.eclipse.wst.jsdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.wst.jsdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.nullReference=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.optionalSemicolon=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.undefinedField=warning
+org.eclipse.wst.jsdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.uninitializedGlobalVariable=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.uninitializedLocalVariable=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.unresolvedFieldReference=error
+org.eclipse.wst.jsdt.core.compiler.problem.unresolvedMethodReference=error
+org.eclipse.wst.jsdt.core.compiler.problem.unresolvedTypeReference=error
+org.eclipse.wst.jsdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.wst.jsdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.wst.jsdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.wst.jsdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.wst.jsdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.wst.jsdt.core.compiler.problem.unusedPrivateMember=warning
+semanticValidation=enabled
diff --git a/jpa/employee/employee.web/.settings/org.eclipse.wst.xml.core.prefs b/jpa/employee/employee.web/.settings/org.eclipse.wst.xml.core.prefs
new file mode 100644
index 0000000..6732777
--- /dev/null
+++ b/jpa/employee/employee.web/.settings/org.eclipse.wst.xml.core.prefs
@@ -0,0 +1,18 @@
+attributeHasNoValue=2
+eclipse.preferences.version=1
+endTagWithAttributes=2
+honourAllSchemaLocations=true
+indicateNoGrammar=-1
+indiciateNoDocumentElement=-1
+markupValidation=false
+missingClosingBracket=2
+missingClosingQuote=2
+missingEndTag=2
+missingQuotes=2
+missingStartTag=2
+missingTagName=2
+namespaceInPITarget=2
+use-project-settings=true
+whitespaceAtStart=2
+whitespaceBeforeTagName=2
+xinclude=true
diff --git a/jpa/employee/employee.web/pom.xml b/jpa/employee/employee.web/pom.xml
index d1c9df9..4132bc7 100644
--- a/jpa/employee/employee.web/pom.xml
+++ b/jpa/employee/employee.web/pom.xml
@@ -62,6 +62,7 @@
 
 
 	<build>
+		<finalName>employe.web</finalName>
 		<defaultGoal>package</defaultGoal>
 
 		<plugins>
diff --git a/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/Admin.java b/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/Admin.java
index 3e75548..f53169c 100644
--- a/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/Admin.java
+++ b/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/Admin.java
@@ -15,10 +15,14 @@
 import java.util.List;
 
 import javax.ejb.EJB;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ApplicationScoped;
 import javax.faces.bean.ManagedBean;
-import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
 
 import eclipselink.example.jpa.employee.services.AdminBean;
+import eclipselink.example.jpa.employee.services.diagnostics.Diagnostics;
+import eclipselink.example.jpa.employee.services.diagnostics.Diagnostics.SQLTrace;
 
 /**
  * TODO
@@ -27,14 +31,25 @@
  * @since EclipseLink 2.4.2
  */
 @ManagedBean
-@RequestScoped
+@ApplicationScoped
 public class Admin {
 
     private AdminBean adminBean;
 
     private List<String> typeNames;
 
-    private boolean displaySql = false;
+    boolean sqlTraceEnabled = true;
+
+    private Diagnostics diagnostics;
+
+    public Diagnostics getDiagnostics() {
+        return diagnostics;
+    }
+
+    @EJB
+    public void setDiagnostics(Diagnostics diagnostics) {
+        this.diagnostics = diagnostics;
+    }
 
     public AdminBean getAdminBean() {
         return adminBean;
@@ -62,22 +77,6 @@
         return typeNames;
     }
 
-    public boolean isDisplaySql() {
-        return displaySql;
-    }
-
-    public void setDisplaySql(boolean displaySql) {
-        this.displaySql = displaySql;
-    }
-
-    public void toggleSqlDisplay() {
-        this.displaySql = !this.displaySql;
-    }
-
-    public String getToggleSqlDisplayButton() {
-        return isDisplaySql() ? "Disable SQL Display" : "Enable SQL Display";
-    }
-
     public String getCacheSize(String typeName) {
         int size = getAdminBean().getCacheSize(typeName);
         if (size < 0) {
@@ -86,4 +85,22 @@
         return Integer.toString(size);
     }
 
+    public boolean isSqlTraceEnabled() {
+        return getDiagnostics().isEnabled();
+    }
+
+    public String getMessages() {
+        SQLTrace trace = getDiagnostics().getTrace(true);
+
+        if (isSqlTraceEnabled() && trace != null) {
+            // Truncate at 5 messages
+            trace.truncate(5, "... SQL trace truncated");
+
+            for (String entry : trace.getEntries()) {
+                FacesContext.getCurrentInstance().addMessage("SQL", new FacesMessage(entry));
+            }
+        }
+        return null;
+    }
+
 }
diff --git a/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/DiagnosticsTrace.java b/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/DiagnosticsTrace.java
deleted file mode 100644
index 715aa28..0000000
--- a/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/DiagnosticsTrace.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the 
- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 
- * which accompanies this distribution. 
- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
- * and the Eclipse Distribution License is available at 
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * Contributors:
- *  dclarke - initial
- ******************************************************************************/
-package eclipselink.example.jpa.employee.web;
-
-import javax.ejb.EJB;
-import javax.faces.application.FacesMessage;
-import javax.faces.bean.ManagedBean;
-import javax.faces.bean.RequestScoped;
-import javax.faces.context.FacesContext;
-
-import eclipselink.example.jpa.employee.services.diagnostics.Diagnostics;
-import eclipselink.example.jpa.employee.services.diagnostics.Diagnostics.SQLTrace;
-
-/**
- * TODO
- * 
- * @author dclarke
- * @since EclipseLink 2.4.2
- */
-@ManagedBean
-@RequestScoped
-public class DiagnosticsTrace {
-
-    private Diagnostics diagnostics;
-
-    public Diagnostics getDiagnostics() {
-        return diagnostics;
-    }
-
-    @EJB
-    public void setDiagnostics(Diagnostics diagnostics) {
-        this.diagnostics = diagnostics;
-    }
-
-    public String getMessages() {
-        SQLTrace trace = getDiagnostics().getTrace(true);
-
-        if (trace != null) {
-            for (String entry : trace.getEntries()) {
-                FacesContext.getCurrentInstance().addMessage("SQL", new FacesMessage(entry));
-            }
-        }
-        return null;
-    }
-
-}
diff --git a/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/EditEmployee.java b/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/EditEmployee.java
index 1fce81b..3403a0b 100644
--- a/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/EditEmployee.java
+++ b/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/EditEmployee.java
@@ -43,10 +43,6 @@
 
     private EmployeeRepository repository;
 
-    protected static final String PAGE = "/employee/edit";
-    protected static final String PAGE_REDIRECT = "/employee/edit?faces-redirect=true";
-    protected static final String INDEX_PAGE = "/index?faces-redirect=true";
-
     public EmployeeRepository getRepository() {
         return repository;
     }
@@ -120,7 +116,7 @@
     }
 
     public String cancel() {
-        return INDEX_PAGE;
+        return Navigation.INDEX_REDIRECT;
     }
 
     /**
@@ -159,5 +155,5 @@
         getEmployee().removePhoneNumber(phone);
         return null;
     }
-
+    
 }
diff --git a/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/EmployeeResults.java b/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/EmployeeResults.java
index 9ca6b7d..eda1330 100644
--- a/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/EmployeeResults.java
+++ b/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/EmployeeResults.java
@@ -137,7 +137,13 @@
         Flash flashScope = FacesContext.getCurrentInstance().getExternalContext().getFlash();
         flashScope.put("employee", employee);
 
-        return EditEmployee.PAGE;
+        return Navigation.EDIT;
     }
 
+    public String delete(Employee employee) {
+        Flash flashScope = FacesContext.getCurrentInstance().getExternalContext().getFlash();
+        flashScope.put("employee", employee);
+
+        return Navigation.EDIT;
+    }
 }
diff --git a/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/Navigation.java b/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/Navigation.java
new file mode 100644
index 0000000..630ed3a
--- /dev/null
+++ b/jpa/employee/employee.web/src/main/java/eclipselink/example/jpa/employee/web/Navigation.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2013 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the 
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 
+ * which accompanies this distribution. 
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at 
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ *  dclarke - initial
+ ******************************************************************************/
+package eclipselink.example.jpa.employee.web;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+import eclipselink.example.jpa.employee.model.Employee;
+
+/**
+ * Backing bean to edit or create an {@link Employee}.
+ * 
+ * @author dclarke
+ * @since EclipseLink 2.3.0
+ */
+@ManagedBean
+@RequestScoped
+public class Navigation {
+
+    protected static final String INDEX_REDIRECT = "/index?faces-redirect=true";
+    protected static final String ABOUT_REDIRECT = "/about?faces-redirect=true";
+    protected static final String ADMIN_REDIRECT = "/admin?faces-redirect=true";
+    protected static final String EDIT = "/employee/edit";
+    protected static final String EDIT_REDIRECT = EDIT + "?faces-redirect=true";
+    protected static final String SEARCH_REDIRECT = "employee/search?faces-redirect=true";
+
+    public String home() {
+        return INDEX_REDIRECT;
+    }
+
+    public String about() {
+        return ABOUT_REDIRECT;
+    }
+
+    public String admin() {
+        return ADMIN_REDIRECT;
+    }
+
+    public String edit() {
+        return EDIT_REDIRECT;
+    }
+
+    public String search() {
+        return SEARCH_REDIRECT;
+    }
+
+}
diff --git a/jpa/employee/employee.web/src/main/webapp/WEB-INF/template.jsf b/jpa/employee/employee.web/src/main/webapp/WEB-INF/template.jsf
index f6a94e9..4e6a702 100644
--- a/jpa/employee/employee.web/src/main/webapp/WEB-INF/template.jsf
+++ b/jpa/employee/employee.web/src/main/webapp/WEB-INF/template.jsf
@@ -23,11 +23,11 @@
 			<h1 class="title">Employee Example</h1>
 			<nav> <h:form>
 				<ul>
-					<li><h:commandLink action="/index?faces-redirect=true"
+					<li><h:commandLink action="#{navigation.home}"
 							value="Home" /></li>
-					<li><h:commandLink action="/about?faces-redirect=true"
+					<li><h:commandLink action="#{navigation.about}"
 							value="About" /></li>
-					<li><h:commandLink action="/admin?faces-redirect=true"
+					<li><h:commandLink action="#{navigation.admin}"
 							value="Admin" /></li>
 				</ul>
 			</h:form></nav> </header>
@@ -47,7 +47,7 @@
 
 			</div>
 		</div>
-		<h:outputText value="#{diagnosticsTrace.messages}" />
+		<h:outputText value="#{admin.messages}"/>
 		<div id="footer-container">
 			<footer class="wrapper"> <h:messages /> </footer>
 		</div>
diff --git a/jpa/employee/employee.web/src/main/webapp/about.xhtml b/jpa/employee/employee.web/src/main/webapp/about.xhtml
index d95804c..0b3b2ca 100644
--- a/jpa/employee/employee.web/src/main/webapp/about.xhtml
+++ b/jpa/employee/employee.web/src/main/webapp/about.xhtml
@@ -13,8 +13,7 @@
 		<p>This example illustrates how EclipseLink can be used</p>
 		<h2>Links</h2>
 		<ul>
-			<a href="http://wiki.eclipse.org/EclipseLink/Examples/JPA/Employee">Wiki
-				page</a>
+			<li><a href="http://wiki.eclipse.org/EclipseLink/Examples/JPA/Employee">Wiki page</a></li>
 		</ul>
 	</ui:define>
 
diff --git a/jpa/employee/employee.web/src/main/webapp/employee/results.xhtml b/jpa/employee/employee.web/src/main/webapp/employee/results.xhtml
index 1b0c2bc..d271358 100644
--- a/jpa/employee/employee.web/src/main/webapp/employee/results.xhtml
+++ b/jpa/employee/employee.web/src/main/webapp/employee/results.xhtml
@@ -28,6 +28,8 @@
 				<h:column>
 					<h:commandButton value="Edit" action="#{employeeResults.edit(emp)}"
 						class="button-small" />
+					<h:commandButton value="Delete" action="#{employeeResults.delete(emp)}"
+						class="button-small" rendered="false"/>
 				</h:column>
 
 				<f:facet name="footer" rendered="#{employeeResults.hasPaging}">
diff --git a/jpa/employee/employee.web/src/main/webapp/index.xhtml b/jpa/employee/employee.web/src/main/webapp/index.xhtml
index 1b7c01e..ffc89a8 100644
--- a/jpa/employee/employee.web/src/main/webapp/index.xhtml
+++ b/jpa/employee/employee.web/src/main/webapp/index.xhtml
@@ -25,13 +25,13 @@
 					</div>
 					<div align="right">
 						<h:commandLink value="Advanced Search"
-							action="employee/search?faces-redirect=true" />
+							action="#{navigation.search}" />
 					</div>
 				</h:panelGroup>
 				<h:panelGroup>
 					<div align="center">
-						<h:commandButton action="/employee/edit?faces-redirect=true"
-							value="Create" class="menu-button" />
+						<h:commandButton action="#{navigation.edit}" value="Create"
+							class="menu-button" />
 					</div>
 				</h:panelGroup>
 			</h:panelGrid>