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 - * <h1>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<String, Object> configuration) - { + MappedConfiguration<String, Object> 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<String, Object> configuration) - { + MappedConfiguration<String, Object> 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: <code>contributeApplicationDefaults</code> - */ - @Contribute(SymbolProvider.class) - @ApplicationDefaults - public static void setupEnvironment(MappedConfiguration<String, Object> configuration) - { + /** + * Use annotation or method naming convention: <code>contributeApplicationDefaults</code> + */ + @Contribute(SymbolProvider.class) + @ApplicationDefaults + public static void setupEnvironment(MappedConfiguration<String, Object> 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<RequestFilter> configuration, - @Local - RequestFilter filter) - { + public void addTimingFilter(OrderedConfiguration<RequestFilter> 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 <em>tapestry.execution-mode</em> * includes <code>development</code>. */ -public class DevelopmentModule -{ +public class DevelopmentModule { public static void contributeApplicationDefaults( - MappedConfiguration<String, Object> configuration) - { + MappedConfiguration<String, Object> 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 <em>tapestry.execution-mode</em> 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 @@ -<!DOCTYPE html> -<html lang="en" xmlns="http://www.w3.org/1999/xhtml" - xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd" - > -<head> - <meta charset="utf-8"/> - <title>${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

- - + +