diff --git a/apache-tapestry/src/main/java/com/baeldung/tapestry/components/Layout.java b/apache-tapestry/src/main/java/com/baeldung/tapestry/components/Layout.java
index 8737ee8c5c..5316bd9722 100644
--- a/apache-tapestry/src/main/java/com/baeldung/tapestry/components/Layout.java
+++ b/apache-tapestry/src/main/java/com/baeldung/tapestry/components/Layout.java
@@ -1,45 +1,16 @@
package com.baeldung.tapestry.components;
import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.annotations.Import;
import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.annotations.Symbol;
/**
- * Layout component for pages of application test-project.
+ * Layout component for pages of application.
*/
-@Import(module = "bootstrap/collapse")
public class Layout {
- @Inject
- private ComponentResources resources;
-
- /**
- * The page title, for the
element and the
- * element.
- */
- @Property
- @Parameter(required = true, defaultPrefix = BindingConstants.LITERAL)
- private String title;
-
- @Property
- private String pageName;
-
- @Property
- @Inject
- @Symbol(SymbolConstants.APPLICATION_VERSION)
- private String appVersion;
-
- public String getClassForPageName() {
- return resources.getPageName().equalsIgnoreCase(pageName) ? "active" : null;
- }
-
- public String[] getPageNames() {
- return new String[] { "Index", "About", "Contact" };
- }
+ @Property
+ @Parameter(required = true, defaultPrefix = BindingConstants.LITERAL)
+ private String title;
}
diff --git a/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/About.java b/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/About.java
deleted file mode 100644
index c769375e28..0000000000
--- a/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/About.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.baeldung.tapestry.pages;
-
-import org.apache.tapestry5.annotations.PageActivationContext;
-
-public class About {
-
- @PageActivationContext
- private String learn;
-
- public String getLearn() {
- return learn;
- }
-
- public void setLearn(String learn) {
- this.learn = learn;
- }
-
-}
diff --git a/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/Contact.java b/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/Contact.java
deleted file mode 100644
index 9bb7291000..0000000000
--- a/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/Contact.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.baeldung.tapestry.pages;
-
-public class Contact {
-
-}
diff --git a/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/Home.java b/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/Home.java
new file mode 100644
index 0000000000..34e99a9cce
--- /dev/null
+++ b/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/Home.java
@@ -0,0 +1,36 @@
+package com.baeldung.tapestry.pages;
+
+import java.util.Date;
+
+import org.apache.tapestry5.Block;
+import org.apache.tapestry5.annotations.Log;
+import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.ioc.annotations.Inject;
+import org.apache.tapestry5.services.ajax.AjaxResponseRenderer;
+import org.slf4j.Logger;
+
+public class Home {
+
+ @Property
+ private String appName = "apache-tapestry";
+
+ public Date getCurrentTime() {
+ return new Date();
+ }
+
+ @Inject
+ private Logger logger;
+
+ @Inject
+ private AjaxResponseRenderer ajaxResponseRenderer;
+
+ @Inject
+ private Block ajaxBlock;
+
+ @Log
+ void onCallAjax() {
+ logger.info("Ajax call");
+ ajaxResponseRenderer.addRender("ajaxZone", ajaxBlock);
+ }
+
+}
diff --git a/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/Index.java b/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/Index.java
index 16ff974fc6..7d9e9a1aaa 100644
--- a/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/Index.java
+++ b/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/Index.java
@@ -19,50 +19,41 @@ import java.util.Date;
* Start page of application apache-tapestry.
*/
public class Index {
- @Inject
- private Logger logger;
+ @Inject
+ private Logger logger;
- @Inject
- private AjaxResponseRenderer ajaxResponseRenderer;
+ @Inject
+ private AjaxResponseRenderer ajaxResponseRenderer;
- @Property
- @Inject
- @Symbol(SymbolConstants.TAPESTRY_VERSION)
- private String tapestryVersion;
+ @Property
+ @Inject
+ @Symbol(SymbolConstants.TAPESTRY_VERSION)
+ private String tapestryVersion;
- @InjectPage
- private About about;
+ @Inject
+ private Block block;
- @Inject
- private Block block;
+ // Handle call with an unwanted context
+ Object onActivate(EventContext eventContext) {
+ return eventContext.getCount() > 0 ?
+ new HttpError(404, "Resource not found") :
+ null;
+ }
- // Handle call with an unwanted context
- Object onActivate(EventContext eventContext) {
- return eventContext.getCount() > 0 ?
- new HttpError(404, "Resource not found") :
- null;
- }
+ @Log
+ void onComplete() {
+ logger.info("Complete call on Index page");
+ }
- Object onActionFromLearnMore() {
- about.setLearn("LearnMore");
+ @Log
+ void onAjax() {
+ logger.info("Ajax call on Index page");
- return about;
- }
+ ajaxResponseRenderer.addRender("middlezone", block);
+ }
- @Log
- void onComplete() {
- logger.info("Complete call on Index page");
- }
-
- @Log
- void onAjax() {
- logger.info("Ajax call on Index page");
-
- ajaxResponseRenderer.addRender("middlezone", block);
- }
-
- public Date getCurrentTime() {
- return new Date();
- }
+ public Date getCurrentTime() {
+ return new Date();
+ }
}
diff --git a/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/Login.java b/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/Login.java
index 72572b2584..c5005f11f5 100644
--- a/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/Login.java
+++ b/apache-tapestry/src/main/java/com/baeldung/tapestry/pages/Login.java
@@ -4,51 +4,39 @@ import org.apache.tapestry5.alerts.AlertManager;
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.corelib.components.PasswordField;
-import org.apache.tapestry5.corelib.components.TextField;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.slf4j.Logger;
public class Login {
- @Inject
- private Logger logger;
+ @Inject
+ private Logger logger;
- @Inject
- private AlertManager alertManager;
+ @Inject
+ private AlertManager alertManager;
- @InjectComponent
- private Form login;
+ @InjectComponent
+ private Form login;
- @InjectComponent("email")
- private TextField emailField;
+ @Property
+ private String email;
- @InjectComponent("password")
- private PasswordField passwordField;
+ @Property
+ private String password;
- @Property
- private String email;
+ void onValidateFromLogin() {
+ if(email == null || password == null) {
+ alertManager.error("Email/Password is null");
+ login.recordError("Validation failed");
+ }
+ }
- @Property
- private String password;
+ Object onSuccessFromLogin() {
+ alertManager.success("Welcome! Login Successful");
+ return Home.class;
+ }
- void onValidateFromLogin() {
- if (!email.equals("users@tapestry.apache.org"))
- login.recordError(emailField, "Try with user: users@tapestry.apache.org");
-
- if ( !password.equals("Tapestry5"))
- login.recordError(passwordField, "Try with password: Tapestry5");
- }
-
- Object onSuccessFromLogin() {
- logger.info("Login successful!");
- alertManager.success("Welcome aboard!");
-
- return Index.class;
- }
-
- void onFailureFromLogin() {
- logger.warn("Login error!");
- alertManager.error("I'm sorry but I can't log you in!");
- }
+ void onFailureFromLogin() {
+ alertManager.error("Please try again with correct credentials");
+ }
}
diff --git a/apache-tapestry/src/main/java/com/baeldung/tapestry/services/AppModule.java b/apache-tapestry/src/main/java/com/baeldung/tapestry/services/AppModule.java
index 3e400c9ce3..c4d57d5b86 100644
--- a/apache-tapestry/src/main/java/com/baeldung/tapestry/services/AppModule.java
+++ b/apache-tapestry/src/main/java/com/baeldung/tapestry/services/AppModule.java
@@ -2,7 +2,7 @@ package com.baeldung.tapestry.services;
import java.io.IOException;
-import org.apache.tapestry5.*;
+import org.apache.tapestry5.SymbolConstants;
import org.apache.tapestry5.ioc.MappedConfiguration;
import org.apache.tapestry5.ioc.OrderedConfiguration;
import org.apache.tapestry5.ioc.ServiceBinder;
@@ -10,20 +10,18 @@ import org.apache.tapestry5.ioc.annotations.Contribute;
import org.apache.tapestry5.ioc.annotations.Local;
import org.apache.tapestry5.ioc.services.ApplicationDefaults;
import org.apache.tapestry5.ioc.services.SymbolProvider;
-import org.apache.tapestry5.services.*;
-import org.apache.tapestry5.services.javascript.JavaScriptStack;
-import org.apache.tapestry5.services.javascript.StackExtension;
-import org.apache.tapestry5.services.javascript.StackExtensionType;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.RequestFilter;
+import org.apache.tapestry5.services.RequestHandler;
+import org.apache.tapestry5.services.Response;
import org.slf4j.Logger;
/**
* This module is automatically included as part of the Tapestry IoC Registry, it's a good place to
* configure and extend Tapestry, or to place your own service definitions.
*/
-public class AppModule
-{
- public static void bind(ServiceBinder binder)
- {
+public class AppModule {
+ public static void bind(ServiceBinder binder) {
// binder.bind(MyServiceInterface.class, MyServiceImpl.class);
// Make bind() calls on the binder object to define most IoC services.
@@ -33,8 +31,7 @@ public class AppModule
}
public static void contributeFactoryDefaults(
- MappedConfiguration configuration)
- {
+ MappedConfiguration configuration) {
// The values defined here (as factory default overrides) are themselves
// overridden with application defaults by DevelopmentModule and QaModule.
@@ -48,8 +45,7 @@ public class AppModule
}
public static void contributeApplicationDefaults(
- MappedConfiguration configuration)
- {
+ MappedConfiguration configuration) {
// Contributions to ApplicationDefaults will override any contributions to
// FactoryDefaults (with the same key). Here we're restricting the supported
// locales to just "en" (English). As you add localised message catalogs and other assets,
@@ -57,23 +53,22 @@ public class AppModule
// the first locale name is the default when there's no reasonable match).
configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en");
- // You should change the passphrase immediately; the HMAC passphrase is used to secure
+ // You should change the passphrase immediately; the HMAC passphrase is used to secure
// the hidden field data stored in forms to encrypt and digitally sign client-side data.
configuration.add(SymbolConstants.HMAC_PASSPHRASE, "change this immediately");
}
- /**
- * Use annotation or method naming convention: contributeApplicationDefaults
- */
- @Contribute(SymbolProvider.class)
- @ApplicationDefaults
- public static void setupEnvironment(MappedConfiguration configuration)
- {
+ /**
+ * Use annotation or method naming convention: contributeApplicationDefaults
+ */
+ @Contribute(SymbolProvider.class)
+ @ApplicationDefaults
+ public static void setupEnvironment(MappedConfiguration configuration) {
// Support for jQuery is new in Tapestry 5.4 and will become the only supported
// option in 5.5.
- configuration.add(SymbolConstants.JAVASCRIPT_INFRASTRUCTURE_PROVIDER, "jquery");
- configuration.add(SymbolConstants.BOOTSTRAP_ROOT, "context:mybootstrap");
- }
+ configuration.add(SymbolConstants.JAVASCRIPT_INFRASTRUCTURE_PROVIDER, "jquery");
+ configuration.add(SymbolConstants.BOOTSTRAP_ROOT, "context:mybootstrap");
+ }
/**
@@ -94,24 +89,19 @@ public class AppModule
* a service named "RequestFilter" we use an explicit service id that we can reference
* inside the contribution method.
*/
- public RequestFilter buildTimingFilter(final Logger log)
- {
- return new RequestFilter()
- {
+ public RequestFilter buildTimingFilter(final Logger log) {
+ return new RequestFilter() {
public boolean service(Request request, Response response, RequestHandler handler)
- throws IOException
- {
+ throws IOException {
long startTime = System.currentTimeMillis();
- try
- {
+ try {
// The responsibility of a filter is to invoke the corresponding method
// in the handler. When you chain multiple filters together, each filter
// received a handler that is a bridge to the next filter.
return handler.service(request, response);
- } finally
- {
+ } finally {
long elapsed = System.currentTimeMillis() - startTime;
log.info("Request time: {} ms", elapsed);
@@ -128,10 +118,7 @@ public class AppModule
* that implement RequestFilter (defined in other modules).
*/
@Contribute(RequestHandler.class)
- public void addTimingFilter(OrderedConfiguration configuration,
- @Local
- RequestFilter filter)
- {
+ public void addTimingFilter(OrderedConfiguration configuration, @Local RequestFilter filter) {
// Each contribution to an ordered configuration has a name, When necessary, you may
// set constraints to precisely control the invocation order of the contributed filter
// within the pipeline.
diff --git a/apache-tapestry/src/main/java/com/baeldung/tapestry/services/DevelopmentModule.java b/apache-tapestry/src/main/java/com/baeldung/tapestry/services/DevelopmentModule.java
index d73848e492..d9c8493e39 100644
--- a/apache-tapestry/src/main/java/com/baeldung/tapestry/services/DevelopmentModule.java
+++ b/apache-tapestry/src/main/java/com/baeldung/tapestry/services/DevelopmentModule.java
@@ -1,27 +1,15 @@
package com.baeldung.tapestry.services;
-import java.io.IOException;
-
-import org.apache.tapestry5.*;
+import org.apache.tapestry5.SymbolConstants;
import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.ServiceBinder;
-import org.apache.tapestry5.ioc.annotations.Local;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.RequestFilter;
-import org.apache.tapestry5.services.RequestHandler;
-import org.apache.tapestry5.services.Response;
-import org.slf4j.Logger;
/**
* This module is automatically included as part of the Tapestry IoC Registry if tapestry.execution-mode
* includes development
.
*/
-public class DevelopmentModule
-{
+public class DevelopmentModule {
public static void contributeApplicationDefaults(
- MappedConfiguration configuration)
- {
+ MappedConfiguration configuration) {
// The factory default is true but during the early stages of an application
// overriding to false is a good idea. In addition, this is often overridden
// on the command line as -Dtapestry.production-mode=false
diff --git a/apache-tapestry/src/main/java/com/baeldung/tapestry/services/QaModule.java b/apache-tapestry/src/main/java/com/baeldung/tapestry/services/QaModule.java
index 53e964385e..fc6fb595e9 100644
--- a/apache-tapestry/src/main/java/com/baeldung/tapestry/services/QaModule.java
+++ b/apache-tapestry/src/main/java/com/baeldung/tapestry/services/QaModule.java
@@ -1,17 +1,8 @@
package com.baeldung.tapestry.services;
-import java.io.IOException;
-
-import org.apache.tapestry5.*;
+import org.apache.tapestry5.SymbolConstants;
import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
import org.apache.tapestry5.ioc.ServiceBinder;
-import org.apache.tapestry5.ioc.annotations.Local;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.RequestFilter;
-import org.apache.tapestry5.services.RequestHandler;
-import org.apache.tapestry5.services.Response;
-import org.slf4j.Logger;
/**
* This module is automatically included as part of the Tapestry IoC Registry if tapestry.execution-mode
diff --git a/apache-tapestry/src/main/resources/com/baeldung/tapestry/components/Layout.tml b/apache-tapestry/src/main/resources/com/baeldung/tapestry/components/Layout.tml
index ad1bf1e487..b47727cb58 100644
--- a/apache-tapestry/src/main/resources/com/baeldung/tapestry/components/Layout.tml
+++ b/apache-tapestry/src/main/resources/com/baeldung/tapestry/components/Layout.tml
@@ -1,67 +1,21 @@
-
-
-
-
- ${title}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ ${title}
+
+
+
+
+
diff --git a/apache-tapestry/src/main/resources/com/baeldung/tapestry/pages/About.tml b/apache-tapestry/src/main/resources/com/baeldung/tapestry/pages/About.tml
deleted file mode 100644
index d460024cc2..0000000000
--- a/apache-tapestry/src/main/resources/com/baeldung/tapestry/pages/About.tml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
About apache-tapestry application ...
-
-
-
-
-
-
-
- To learn more go to
- Tapestry home
- and start typing...
-
-
-
-
-
-
diff --git a/apache-tapestry/src/main/resources/com/baeldung/tapestry/pages/Contact.tml b/apache-tapestry/src/main/resources/com/baeldung/tapestry/pages/Contact.tml
deleted file mode 100644
index 70b897d227..0000000000
--- a/apache-tapestry/src/main/resources/com/baeldung/tapestry/pages/Contact.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
- Contact com.baeldung ...
-
-
diff --git a/apache-tapestry/src/main/resources/com/baeldung/tapestry/pages/Home.properties b/apache-tapestry/src/main/resources/com/baeldung/tapestry/pages/Home.properties
new file mode 100644
index 0000000000..4647845163
--- /dev/null
+++ b/apache-tapestry/src/main/resources/com/baeldung/tapestry/pages/Home.properties
@@ -0,0 +1 @@
+introMsg=Welcome to the Apache Tapestry Tutorial
diff --git a/apache-tapestry/src/main/resources/com/baeldung/tapestry/pages/Home.tml b/apache-tapestry/src/main/resources/com/baeldung/tapestry/pages/Home.tml
new file mode 100644
index 0000000000..3dafb63f0a
--- /dev/null
+++ b/apache-tapestry/src/main/resources/com/baeldung/tapestry/pages/Home.tml
@@ -0,0 +1,14 @@
+
+
+ Home! ${appName}
+ ${message:introMsg}
+ ${currentTime}
+ Call Ajax
+
+
+
+ Rendered through Ajax
+ The current time is: ${currentTime}
+
+
+
diff --git a/apache-tapestry/src/main/resources/com/baeldung/tapestry/pages/Login.tml b/apache-tapestry/src/main/resources/com/baeldung/tapestry/pages/Login.tml
index 75c07549eb..ac78a55341 100644
--- a/apache-tapestry/src/main/resources/com/baeldung/tapestry/pages/Login.tml
+++ b/apache-tapestry/src/main/resources/com/baeldung/tapestry/pages/Login.tml
@@ -6,8 +6,8 @@
Please sign in
-
-
+
+