This is an automated email from the ASF dual-hosted git repository. thiagohp pushed a commit to branch feature/requirejs-less in repository https://gitbox.apache.org/repos/asf/tapestry-5.git
The following commit(s) were added to refs/heads/feature/requirejs-less by this push: new b1953856d Even more test fixes b1953856d is described below commit b1953856d9061ed4ac1264f6b6c2d518d26e3df7 Author: Thiago H. de Paula Figueiredo <thi...@arsmachina.com.br> AuthorDate: Tue Aug 5 23:13:12 2025 -0300 Even more test fixes --- .../tapestry5/corelib/components/LinkSubmit.java | 24 ++++++++++++--- .../tapestry5/corelib/components/TimeInterval.java | 13 +++++--- .../internal/services/DocumentLinkerImpl.java | 4 +-- .../internal/services/EsModuleInitsManager.java | 35 ++++++++++++++++++---- .../services/PartialMarkupDocumentLinker.java | 2 +- .../apache/tapestry5/modules/JavaScriptModule.java | 29 ++++-------------- .../META-INF/assets/tapestry5/moment-2.15.1.js | 2 +- .../t5/beanvalidator/beanvalidator-validation.ts | 5 ++-- .../src/main/typescript/src/t5/core/fields.ts | 2 +- .../src/main/typescript/src/t5/core/validation.ts | 6 +--- .../integration/app1/pages/PaletteDemo.java | 9 +++++- .../app1/pages/ValidateInErrorEvent.java | 12 ++++++-- .../assets/es-modules/validate-in-error.js | 8 +++++ 13 files changed, 98 insertions(+), 53 deletions(-) diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/LinkSubmit.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/LinkSubmit.java index 4ab44ed18..66141a074 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/LinkSubmit.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/LinkSubmit.java @@ -14,10 +14,20 @@ package org.apache.tapestry5.corelib.components; -import org.apache.tapestry5.*; -import org.apache.tapestry5.annotations.*; +import org.apache.tapestry5.BindingConstants; +import org.apache.tapestry5.ClientElement; +import org.apache.tapestry5.ComponentAction; +import org.apache.tapestry5.ComponentResources; +import org.apache.tapestry5.EventConstants; +import org.apache.tapestry5.MarkupWriter; +import org.apache.tapestry5.TrackableComponentEventCallback; +import org.apache.tapestry5.annotations.Environmental; +import org.apache.tapestry5.annotations.Events; +import org.apache.tapestry5.annotations.Parameter; +import org.apache.tapestry5.annotations.SupportsInformalParameters; import org.apache.tapestry5.corelib.SubmitMode; import org.apache.tapestry5.http.services.Request; +import org.apache.tapestry5.internal.services.ajax.RequireJsModeHelper; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.internal.util.InternalUtils; import org.apache.tapestry5.json.JSONArray; @@ -34,7 +44,6 @@ import org.apache.tapestry5.services.javascript.JavaScriptSupport; */ @SupportsInformalParameters @Events(EventConstants.SELECTED + " by default, may be overridden") -@Import(module = "t5/core/forms") public class LinkSubmit implements ClientElement { /** @@ -94,13 +103,17 @@ public class LinkSubmit implements ClientElement @Inject private Request request; + + @Inject + private RequireJsModeHelper requireJsModeHelper; - @SuppressWarnings("unchecked") + @SuppressWarnings("rawtypes") @Environmental private TrackableComponentEventCallback eventCallback; private String clientId; + @SuppressWarnings("serial") private static class ProcessSubmission implements ComponentAction<LinkSubmit> { private final String clientId; @@ -143,6 +156,9 @@ public class LinkSubmit implements ClientElement { if (!disabled) { + + requireJsModeHelper.importModule("t5/core/forms"); + clientId = javascriptSupport.allocateClientId(resources); formSupport.store(this, new ProcessSubmission(clientId)); diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TimeInterval.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TimeInterval.java index 01d3482da..45fec9e13 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TimeInterval.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TimeInterval.java @@ -12,16 +12,16 @@ package org.apache.tapestry5.corelib.components; +import java.util.Date; + import org.apache.tapestry5.ComponentResources; import org.apache.tapestry5.MarkupWriter; -import org.apache.tapestry5.annotations.Import; import org.apache.tapestry5.annotations.Parameter; import org.apache.tapestry5.annotations.SupportsInformalParameters; +import org.apache.tapestry5.internal.services.ajax.RequireJsModeHelper; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.services.DateUtilities; -import java.util.Date; - /** * Used to present an interval value using Moment.js's from() or fromNow() functions. The interval * is determined in terms of a start and end date; either (but not both) may be omitted, in which @@ -40,7 +40,6 @@ import java.util.Date; * @since 5.4 */ @SupportsInformalParameters -@Import(module = "t5/core/time-interval") public class TimeInterval { /** @@ -65,6 +64,9 @@ public class TimeInterval @Inject ComponentResources resources; + + @Inject + private RequireJsModeHelper requireJsModeHelper; @Inject DateUtilities dateUtilities; @@ -76,6 +78,9 @@ public class TimeInterval boolean beginRender(MarkupWriter writer) { + + requireJsModeHelper.importModule("t5/core/time-interval"); + writer.element(resources.getElementName("span"), // Trigger the client-side logic: "data-timeinterval", "true", diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DocumentLinkerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DocumentLinkerImpl.java index 41f8ef1a8..8c17f5ca2 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DocumentLinkerImpl.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DocumentLinkerImpl.java @@ -278,11 +278,11 @@ public class DocumentLinkerImpl implements DocumentLinker moduleManager.writeInitialization(body, libraryURLs, initsManager.getSortedInits()); // Libraries were already added in the line above. - esModuleManager.writeInitialization(body, Collections.emptyList(), esModulesInitsManager.getInitsAsJsonArrays()); + esModuleManager.writeInitialization(body, Collections.emptyList(), esModulesInitsManager.getInitsAsJsonArrayList()); } else { - esModuleManager.writeInitialization(body, libraryURLs, esModulesInitsManager.getInitsAsJsonArrays()); + esModuleManager.writeInitialization(body, libraryURLs, esModulesInitsManager.getInitsAsJsonArrayList()); } } diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EsModuleInitsManager.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EsModuleInitsManager.java index c79201b5c..c03bd6be2 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EsModuleInitsManager.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EsModuleInitsManager.java @@ -75,16 +75,38 @@ public class EsModuleInitsManager } /** - * Returns all previously added inits as JSONArray instances. + * Returns all inits (pure imports and initializations) as a JSONArray list. */ - public List<JSONArray> getInitsAsJsonArrays() + public List<JSONArray> getAllInitsAsJsonArrayList() { - List<JSONArray> list; - if (!initializations.isEmpty()) + if (!imports.isEmpty() || !initializations.isEmpty()) { - list = new ArrayList<>(initializations.size()); - for (EsModuleInitialization init : initializations) + list = new ArrayList<>(imports.size() + initializations.size()); + list.addAll(toJSONArray(imports)); + list.addAll(toJSONArray(initializations)); + } + else + { + list = Collections.emptyList(); + } + return list; + } + + /** + * Returns all previously added inits as a JSONArray list. + */ + public List<JSONArray> getInitsAsJsonArrayList() + { + return toJSONArray(initializations); + } + + private List<JSONArray> toJSONArray(final List<EsModuleInitialization> inits) { + List<JSONArray> list; + if (!inits.isEmpty()) + { + list = new ArrayList<>(inits.size()); + for (EsModuleInitialization init : inits) { final EsModuleInitializationImpl initImpl = (EsModuleInitializationImpl) init; final JSONArray arguments = initImpl.getArguments(); @@ -115,3 +137,4 @@ public class EsModuleInitsManager } } + diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinker.java index 7cd6a770a..c8fda5397 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinker.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinker.java @@ -109,7 +109,7 @@ public class PartialMarkupDocumentLinker implements DocumentLinker } List<?> inits = initsManager.getSortedInits(); - final List<?> esModuleInits = esModulesinitsManager.getInitsAsJsonArrays(); + final List<?> esModuleInits = esModulesinitsManager.getAllInitsAsJsonArrayList(); if (inits.size() > 0 || esModuleInits.size() > 0) { diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/JavaScriptModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/JavaScriptModule.java index cbf0120a9..f069ff639 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/JavaScriptModule.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/JavaScriptModule.java @@ -556,29 +556,6 @@ public class JavaScriptModule } } -// @Contribute(EsModuleManager.class) -// public static void setupApplicationCatalogEsModules(OrderedConfiguration<EsModuleManagerContribution> configuration, -// LocalizationSetter localizationSetter, -// ComponentMessagesSource messagesSource, -// ResourceChangeTracker resourceChangeTracker, -// @Symbol(SymbolConstants.COMPACT_JSON) boolean compactJSON) -// { -// -// EsModuleConfigurationCallback callback = jsonObject -> { -// -// for (Locale locale : localizationSetter.getSupportedLocales()) -// { -// MessageCatalogResource resource = new MessageCatalogResource(false, locale, messagesSource, resourceChangeTracker, compactJSON); -// -// jsonObject.put("t5/core/messages/" + locale.toString(), resource.toURL()); -// } -// -// }; -// -// configuration.add("ApplicationCatalog", EsModuleManagerContribution.base(callback)); -// -// } - @Contribute(EsShimManager.class) public static void setupBaseEsShims( MappedConfiguration<String, Resource> configuration, @@ -600,6 +577,12 @@ public class JavaScriptModule .defaultExport("jQuery.noConflict()") .getResource()); + final Resource moment = assetSource.getClasspathAsset("/META-INF/assets/tapestry5//moment-2.15.1.js") + .getResource(); + configuration.add("t5/core/moment", new EsShim(moment) + .defaultExport("moment") + .getResource()); + if (compatibility.enabled(Trait.BOOTSTRAP_3)) { final String[] modules = new String[]{"affix", "alert", "button", "carousel", "collapse", "dropdown", "modal", diff --git a/tapestry-core/src/main/resources/META-INF/assets/tapestry5/moment-2.15.1.js b/tapestry-core/src/main/resources/META-INF/assets/tapestry5/moment-2.15.1.js index 1388ae65e..e7c5ff5d7 100644 --- a/tapestry-core/src/main/resources/META-INF/assets/tapestry5/moment-2.15.1.js +++ b/tapestry-core/src/main/resources/META-INF/assets/tapestry5/moment-2.15.1.js @@ -8,7 +8,7 @@ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory() -}(this, function () { 'use strict'; +}(this || window, function () { 'use strict'; var hookCallback; diff --git a/tapestry-core/src/main/typescript/src/t5/beanvalidator/beanvalidator-validation.ts b/tapestry-core/src/main/typescript/src/t5/beanvalidator/beanvalidator-validation.ts index eb407fca4..6ba83312d 100644 --- a/tapestry-core/src/main/typescript/src/t5/beanvalidator/beanvalidator-validation.ts +++ b/tapestry-core/src/main/typescript/src/t5/beanvalidator/beanvalidator-validation.ts @@ -24,14 +24,13 @@ import _ from "underscore"; import dom from "t5/core/dom" import events from "t5/core/events" -import fields from "t5/core/fields" +import "t5/core/fields" import utils from "t5/core/utils" import validation from "t5/core/validation" -// Both lines below are used to force the TypeScript compiler to actually import t5/core/fields +// Lines below ise used to force the TypeScript compiler to actually import t5/core/fields // and t5/core/validation even though they're not used directly here. This file uses events // set up by the imported files. -let workaround1 = fields; let workaround2 = validation; // @ts-ignore diff --git a/tapestry-core/src/main/typescript/src/t5/core/fields.ts b/tapestry-core/src/main/typescript/src/t5/core/fields.ts index ba4c24005..f548d3695 100644 --- a/tapestry-core/src/main/typescript/src/t5/core/fields.ts +++ b/tapestry-core/src/main/typescript/src/t5/core/fields.ts @@ -237,4 +237,4 @@ dom.onDocument(events.field.showValidationError, null, function(event: EventWrap }); -export default {findHelpBlocks, createHelpBlock, showValidationError}; \ No newline at end of file +export {findHelpBlocks, createHelpBlock, showValidationError}; \ No newline at end of file diff --git a/tapestry-core/src/main/typescript/src/t5/core/validation.ts b/tapestry-core/src/main/typescript/src/t5/core/validation.ts index 39d47c5ab..cb5a4d69b 100644 --- a/tapestry-core/src/main/typescript/src/t5/core/validation.ts +++ b/tapestry-core/src/main/typescript/src/t5/core/validation.ts @@ -22,13 +22,9 @@ import dom from "t5/core/dom"; import events from "t5/core/events"; import utils from "t5/core/utils"; import messages from "t5/core/messages"; -import fields from "t5/core/fields"; +import "t5/core/fields"; import { ElementWrapper } from "t5/core/types"; -// Line below is used to force the TypeScript compiler to actually import t5/core/fields -// as it's not used directly here. This file uses events set up by the imported files. -let workaround = fields; - const REGEXP_META = "t5:regular-expression"; const minus = messages("decimal-symbols.minus"); diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PaletteDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PaletteDemo.java index 3694f8ccc..cfe7c92d8 100644 --- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PaletteDemo.java +++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PaletteDemo.java @@ -30,12 +30,12 @@ import org.apache.tapestry5.commons.services.TypeCoercer; import org.apache.tapestry5.integration.app1.data.ProgrammingLanguage; import org.apache.tapestry5.internal.OptionGroupModelImpl; import org.apache.tapestry5.internal.OptionModelImpl; +import org.apache.tapestry5.internal.services.ajax.RequireJsModeHelper; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.util.AbstractSelectModel; import org.apache.tapestry5.util.EnumSelectModel; import org.apache.tapestry5.util.EnumValueEncoder; -@Import(module="palette-demo") public class PaletteDemo { @Inject @@ -52,6 +52,13 @@ public class PaletteDemo @Inject private TypeCoercer typeCoercer; + @Inject + private RequireJsModeHelper requireJsModeHelper; + + void beginRender() + { + requireJsModeHelper.importModule("palette-demo"); + } void onPrepareFromDemo() { diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidateInErrorEvent.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidateInErrorEvent.java index 645703abb..e70308884 100644 --- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidateInErrorEvent.java +++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidateInErrorEvent.java @@ -1,10 +1,18 @@ package org.apache.tapestry5.integration.app1.pages; -import org.apache.tapestry5.annotations.Import; import org.apache.tapestry5.annotations.Property; +import org.apache.tapestry5.internal.services.ajax.RequireJsModeHelper; +import org.apache.tapestry5.ioc.annotations.Inject; -@Import(module = {"validate-in-error"}) public class ValidateInErrorEvent { @Property private String value; + + @Inject + private RequireJsModeHelper requireJsModeHelper; + + void beginRender() { + requireJsModeHelper.importModule("validate-in-error"); + } + } diff --git a/tapestry-core/src/test/resources/META-INF/assets/es-modules/validate-in-error.js b/tapestry-core/src/test/resources/META-INF/assets/es-modules/validate-in-error.js new file mode 100644 index 000000000..55f4777fe --- /dev/null +++ b/tapestry-core/src/test/resources/META-INF/assets/es-modules/validate-in-error.js @@ -0,0 +1,8 @@ +import dom from 't5/core/dom'; +import events from 't5/core/events'; + +dom.onDocument(events.form.validateInError, 'form', function() { + const attributes = + {id: 'validate-in-error'}; + this.prepend(dom.create('div', attributes, 'Validate in error')); +});