Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

Code Block
titleUpdated for 5.2
  @Inject
  private Locale locale;

  public String getCurrentTimeFormatted()
  {
    DateFormat format = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
tapestry.page-pool-enabled
    return format.format(new Date());
  }

If such issues are difficult to solve, remember that as a temporary work-around you have the option of re-enabling the page pooling behavior of 5.1 by setting tapestry.page-pool-enabled to "true" in your configuration.

Service Id Injection

In prior releases of Tapestry, a constructor parameter of type String was assumed to be the service id. In the many cases where these was not the case (such as using the @Value or @Symbol annotation), the parameter needed to be annotated with the @Inject annotation.

...

Tapestry no longer uses a StAX parser to parse component templates, it has reverted to using a normal SAX parser. This change reduces the number of dependencies for Tapestry, and is a stepping stone towards compatibility with Google App Engine.

Bugs Fixed

  • TAP5-266 – In a conflict between a render phase annotation and the naming convention, the explicit annotation should win
  • TAP5-707 – Yellow highlight remains on updated zone if zone is re-updated too quickly
  • TAP5-711 – Submit component: using image parameter prevents selected event from being fired
  • TAP5-714 – Incorrect encoding of single quotes for Ajax requests
  • TAP5-715 – TypeCoercer.explain incorrectly reports the plan to coerce from primitive types to wrapper types
  • TAP5-719 – Component LinkSubmit doesn't work
  • TAP5-728 – When using the @Validate annotation, spaces around the commas that separate contraints cause runtime exceptions
  • TAP5-734 – Tapestry tutorial documentation refers to old archtype command
  • TAP5-747 – Property expressions that include method invocations that in turn reference properties result in spurious error about "root"
  • TAP5-748 – NPE when defining a component using just t:id and no type or @Component annotation
  • TAP5-749 – The FormFragment and LinkSubmit components create a hidden field whose id ends with ":hidden"
  • TAP5-750 – Tapestry should not attempt to GZip flash movies (.swf files)
  • TAP5-755 – URL rewriting documentation contains an example that won't compile due to lack of a return value
  • TAP5-759 – The documentation of DefaultNullFieldStrategy#replaceFromClient() is wrong about what gets returned
  • TAP5-765 – Included JavaScript libraries are not properly uniqued within an Ajax partial update response
  • TAP5-767 – PropertyConduitSourceImpl should use english locale (instead of default locale) when evaluating decimals
  • TAP5-769 – JavaScript aggregation can be inefficient across multiple pages with different JS requirements
  • TAP5-774 – Initialization JavaScript needs help when order counts
  • TAP5-779 – CLONE -Linksubmit doesn't work inside a form with Zone parameter set
  • TAP5-786 – Exception messages in the pageload packages should be localized
  • TAP5-787 – AbstractIntegrationTest's "assertTextPresent" only checks the first value
  • TAP5-788 – ParallelExecutor service throws RejectedExecutionException if more then THREAD_POOL_MAX_SIZE jobs are submitted
  • TAP5-796 – Form component generates invalid xHtml: there should not be the "name" attribute
  • TAP5-812 – The input validation documentation incorrectly shows validation occuring in the success event handler method
  • TAP5-813 – the component rendering page of the user guide is not generated by maven
  • TAP5-815 – Asset dispatcher allows any file inside the webapp visible and downloadable
  • TAP5-823 – Message about incompatible return type of a render phase method is misleading
  • TAP5-824 – Javasisst 3.9.0.GA not available from central repository
  • TAP5-830 – SpringModuleDef unnecessarily hard-codes that the type of object stored in the context as a ConfigurableWebApplicationContext when any object implementing ApplicationContext is sufficient
  • TAP5-834 – BaseOptimizedSessionPersistedObject does not work correctly with Tomcat & Jetty
  • TAP5-837 – prototype1.6.0 not support for ie8
  • TAP5-839 – Tapestry should ignore (public) synthetic methods in module classes
  • TAP5-856 – MetaDataLocatorImpl.findMeta(String, String, Class) doesn't check contributed defaults - breaks SECURE_PAGE contributions
  • TAP5-868 – It is not possible to attach a validation event listener to a Palette (or other <select> field)
  • TAP5-871 – Generation of Component Reference failed on Windows
  • TAP5-881 – Tapestry's customized Blackbird implementation sends a dubious cookie value over every request
  • TAP5-894 – Fix PartialMarkupDocumentLinkerTest.stylesheet_link()
  • TAP5-896 – Contribute 'properties' file extension to the configuration of ResourceDigestGenerator
  • TAP5-898 – BeanModel methods reorder, include and exclude should return BeanModel<T> (not BeanModel<?>)
  • TAP5-908 – Blackbird console should not add cookies to requests
  • TAP5-913 – Stack size too large exception, related to PropertyExpressionLexer
  • TAP5-919 – Calling MarkupWriter.element() with an even number of arguments throws ArrayIndexOutOfBounds exception, not a useful exception about omitting a attribute name or value
  • TAP5-923 – Injeting Tapestry Services to Spring Beans is completely undocumented
  • TAP5-936 – Tapestry wiki link links to nothing for locales other then en
  • TAP5-937 – LinkImpl does not handle parameters properly when passed into the constructor
  • TAP5-940 – Zone should fire a heart beat event
  • TAP5-943 – Documentation for event handler methods should go into detail about returns true or false
  • TAP5-944 – When a ValueEncoder is unable to convert an id to a entity, it should wrap the underlying type coercion exception to describe the input and expected output type
  • TAP5-945 – Unnecessary and severe lock contention in PerthreadManagerImpl
  • TAP5-947 – Default name "submit" for submit component breaks javascript function submit()
  • TAP5-959 – Ajax event handler methods that return a page instance, page class or page name should cause the client to redirect to that page, but doesn't work in IE7 or 8 if the URL has a query param
  • TAP5-961 – When a URL rewriting rule changes the path for a rendered link (component event or page render), any query parameters associated with the original link are lost
  • TAP5-962 – Errors component includes an @Environmental for FormSupport, but doesn't use it
  • TAP5-964 – Exception report failed to render due to NPE inside session-persisted objects' toString()
  • TAP5-974 – PageCallback should be marked with the @ImmutableSessionPersistedObject annotation
  • TAP5-987 – In some cases you can invoke Form.recordError() and the Form will still fire a success (not a failure) event
  • TAP5-1001 – Garbled exception message when a component is defined in a namespace that is not properly defined as a Tapestry library namespace
  • TAP5-1018 – Request to Application Root path ignores ComponentRequestFilter's
  • TAP5-1019 – French translations for number format error message
  • TAP5-1020 – Fix typo in tapestry-hibernate/src/site/apt/userguide.apt: HibernateTransactionAdviser should be HibernateTransactionAdvisor
  • TAP5-1030 – Injecting a Logger into a non-service object, created as part of constructing a service configuration, should work but doesn't
  • TAP5-1031 – NPE from Any component when invoking getClientId() before the component renders
  • TAP5-1034 – Using URLRewriteRules will fail for component event links if the page has an activation context
  • TAP5-1042 – URLRewriting causes confusion about the incoming Request path, leading to incorrect optimized relative URLs
  • TAP5-1043 – PropertyDisplayBlocks causes NullPointerException when property of type Calendar is null
  • TAP5-1047 – @IncludeJavaScriptLibrary and @IncludeStylesheet may incorrectly calculate resources in component sub-classes
  • TAP5-1052 – Component classes page of the guide should be much more specific that only component classes go in pages, components, etc.
  • TAP5-1054 – Not able to pass an empty string as appName to PageTester
  • TAP5-1057 – XSS vulnerability in calendar component
  • TAP5-1060 – In IE8, forms that should submit using Ajax are triggering full page requests due to a client-side JavaScript error
  • TAP5-1067 – Created component constructor may use too many parameters
  • TAP5-1068 – RenderSupport.addScriptLink(String) deprecated and removed without replacement
  • TAP5-1069 – Tapestry POM should reference only the Apache Nexus repository, not the tapestry.formos.com repository
  • TAP5-1074 – The @QueryParameter annotation uses TypeCoercer to convert from request parameter strings to method parameter values, it should use the ValueEncoder
  • TAP5-1075 – When a template contains a reference to an unknown component, the new UnknownValueException is reported but the Location is no longer reported, making it much harder to determine where the error occurred
  • TAP5-1076 – When a service implementation is reloadable, it will not eager load
  • TAP5-1080 – Page activation context lost when redirecting from HTTP to HTTPS due to the @Secure annotation
  • TAP5-1086 – Localized root path request results in a 404 error if Index page is not available
  • TAP5-1088 – Bean editor model for <class name> already contains a property model for property <property name> when combining model parameter with add parameter of BeanEditor or BeanEditForm
  • TAP5-1090 – Deleting a live-reloaded class can result in a non-descriptive "Parameter url was null." exception
  • TAP5-1096 – If a Zone's id parameter is bound, then the clientId property should return that value, even before the Zone renders
  • TAP5-1100 – On ajax request, template body doesn't render if page is new in pagepool or if server restarted
  • TAP5-1105 – BeanModelSource should recognize public field as properties, but doesn't
  • TAP5-1106 – Tapestry.ajaxFailureHandler has an incorrect signature for an Ajax.Request onException callback
  • TAP5-1109 – Updating multiple zones within a Form creates anomalous empty text fields
  • TAP5-1110 – Tapestry holds onto the verbose descriptions of component class transformations, causing a memory leak
  • TAP5-1116 – Live lock when using compressed and virtual assets due to ByteArrayOutputStream being synchronized
  • TAP5-1120 – It is not possible to override the default Translator contributions to the TranslatorSource service
  • TAP5-1124 – FormEventManager.setSubmittingElement(element) creates input element with type="input"
  • TAP5-1128 – A space is added to a HTML start comment sequence making it impossible to add IE conditional comments
  • TAP5-1130 – LinkSubmit component doesn't work when form contains Select component with default id
  • TAP5-1136 – java.lang.UnsupportedOperationException from UpdateListenerHub when a weak reference is reclaimed
  • TAP5-1137 – Dynamically adding JavaScript libraries to a page via a partial page update does not seem to work consistently in Safari and Chrome
  • TAP5-1138 – ClassTransformation deprecated a bunch of methods, then refers to replacements that don't exist
  • TAP5-1141 – Type coercion from arbitrary object to Boolean will NPE when the object's toString() returns null (should coerce to false)unmigrated-wiki-markup
  • [TAP5-1145|https://issues.apache.org/jira/browse/TAP5-1145] -- Writing only text (or raw text) into a Document via MarkupWriter results in \[empty Document\], not the actual – Writing only text (or raw text) into a Document via MarkupWriter results in [empty Document], not the actual text
  • TAP5-1147 – Ajax updates under IE leak lots of memory
  • TAP5-1154 – ValidationDecorator.insideField not called for Select component
  • TAP5-1156 – Provide a ValueEncoder for a Hibernate entity automatically only if a mapped class exists
  • TAP5-1158 – Captured HTML from failed Selenium assertions do not get stored in the correct place on Windows
  • TAP5-1161 – Tapestry 5.1 seems incompatible with Spring 3
  • TAP5-1166 – ClassPropertyAdapterImpl should skip static fields
  • TAP5-1182 – javax.management preventsTapestry apps from being deployed on GAE
  • TAP5-1185 – Upgrade to latest Javassist version to avoid LocalVariableTable exceptions (especially on Google App Engine)
  • TAP5-1198 – A user defined activate event handler appears to execute *before* the event handler supplied by @PageActivationContext, making defensive coding impossible
  • TAP5-1203 – Use of @Contribute annotation does not work properly with marker annotations
  • TAP5-1207 – A form control component (such as TextField) whose id is "id" can confuse client-side logic for the Form DOM object
  • TAP5-1209 – Marker annotations used with services that have contributions should be applicable to methods (as well as fields and parameters) for compatibility with @Contribute
  • TAP5-1210 – MultiZone update from EventLink with Form fails in Internet Explorer
  • TAP5-1211 – LinkSubmit broken in IE 7 mode
  • TAP5-1216 – ValueEncoderSource does not define a @UsesMappedConfiguration annotation
  • TAP5-1223 – The name "JavaScript" should have a capital "S" but is inconsistent in some class and interface names
  • TAP5-1224 – When contributing to a service using a "contribute" method, the service id from the method name now matches case-sensitively to the service id (it should be case insensitive)
  • TAP5-1262 – XSS vulnerability in calendar component (apply to 5.1.0.x)
  • TAP5-1282 – Form component generates invalid xHtml: there should not be the "name" attribute - Applied to 5.1

Improvements Made

  • TAP5-69 – Add annotation, @Contribute, to allow service contributor methods to be arbitrary named
  • TAP5-88 – Add support for Bulgarian locale
  • TAP5-179 – The TriggerFragment mixin would be more useful if it could invert its logic, i.e., make a a fragment visible when a checkbox was turned off
  • TAP5-247 – Move all Tapestry 5 configuration keys to a constant class
  • TAP5-335 – Provide access to annotations of service implementation class
  • TAP5-424 – Allow component libraries to contribute extra resources to the global application catalog
  • TAP5-632 – Property names (in property expressions) should be able to read or update public variables
  • TAP5-674 – Make it easy to implement a page callback mechanism
  • TAP5-678 – Allow blackbird to be disabled in production mode
  • TAP5-685 – Allow services defined by module tapestry-ioc to be advised and decorated
  • TAP5-713 – Change template parser to not use StAX, as it is not (yet) compatible with Google App Engine
  • TAP5-760 – The Form event "validateForm" is awkwardly named and should be replaced with the simpler name "validate"
  • TAP5-762 – Upgrade Selenium dependencies to version 1.0.1
  • TAP5-764 – Hidden should support ClientElement and support informal parameters.
  • TAP5-777 – Tapestry should ensure that mixins are applied in a deterministic order.
  • TAP5-783 – tapestry should mark via annotation which annotations are component-specific vs. more general
  • TAP5-789 – Provide bean and display blocks for java.util.Calendar
  • TAP5-790 – Provide ApplicationStatePersistenceStrategy for Hibernate entities
  • TAP5-803 – ProgressiveDisplay should include a read-only body property of type Block, just like Zone
  • TAP5-807 – PageRenderLinkSource should add additional methods for creating a Link when you have the page's activation context as an EventContext
  • TAP5-810 – Improve documentation of @Persist annotation
  • TAP5-811 – Layout component documentation is not very clear about directory structure
  • TAP5-814 – include a diagram showing how incoming requests pass through the different pipelines, filters and dispatchers
  • TAP5-826 – The ActionLink documentation is missing the option to use object arrays as context inside templates
  • TAP5-859 – In a stack trace, any lines associated with line #1 of a class are likely to be synthetic methods and should be classified as "uninteresting"
  • TAP5-863 – Tapestry.ajaxRequest is insufficient when doing extra, such as adding query parameters
  • TAP5-884 – Introduce a symbol for tapestry.js
  • TAP5-887 – Easier way to initialize a JSONObject with keys and values
  • TAP5-889 – Provide fluent API for order constraints of contributions
  • TAP5-904 – Make use of Selenium.showContextualBanner() when running integration tests
  • TAP5-905 – Tapestry should support the full range of Unicode characters acceptible by Java as property names
  • TAP5-912 – Validation of properties of type java.util.Collection should fail when the collection is empty
  • TAP5-914 – When autobuilding a Java bean (such as a Session State Object), the code should use the OperationTracker
  • TAP5-915 – It should be possible to override a components message catalog
  • TAP5-917 – Don't set Expires header when tapestry.production-mode is false
  • TAP5-927 – Cannot use Scala for Tapestry IOC Modules
  • TAP5-948 – Built-in mechanism to identify self-referential links and/or event/render requests
  • TAP5-958 – Upgrade Tapestry's built-in copy of prototype.js to version 1.6.1
  • TAP5-963 – Allow access to static resources (css, js, jpg, jpeg, png, gif) inside the app package
  • TAP5-965 – Upgrade EasyMock dependency to release 2.5.2
  • TAP5-967 – ObjectLocator.autobuild would be more useful with an override that allowed a message about the object to be described
  • TAP5-971 – FormFragment component should include a parameter to control whether non-visible content is included in the form submission
  • TAP5-978 – Provide remote management of the page pool settings
  • TAP5-979 – Form component should be more careful with the validation tracker to ensure that a session is not created unless needed
  • TAP5-993 – Reorganize ComponentClassTransformWorkers to start moving away from Javassist
  • TAP5-994 – Field autofocus should be done via Tapestry.init instead of using $ function
  • TAP5-1000 – When Autobuilding a class, the constructor to be used should be identified in the trace output
  • TAP5-1014 – Message about missing or wrong retention policy of a marker annotation is misleading
  • TAP5-1015 – Provide a new return type for event handler methods that would trigger the rendering of a particular page without a redirect
  • TAP5-1023 – (5.2.0-SPNAPSHOT Maven dependencies) tapestry-hibernate-5.2.0 jar generated with tapestry-hibernate-5.2.0-yyyyMMdd.hhmmss-?.jar > tapestry-hibernate-5.2.0-SNAPSHOT.jar whereas all other jar are using -5.2.0-SNAPSHOT
  • TAP5-1024 – Submit component should allow return values from event handler methods triggered by its event
  • TAP5-1033 – Upgrade selenium dependencies to 1.0.3
  • TAP5-1036 – It would be nice if there was a way for committers to run individual integration tests again
  • TAP5-1037 – Rewrite URLRewriter integration tests to use new SeleniumTestCase instead of deprecated AbstractIntegrationTestSuite
  • TAP5-1038 – Rewrite live reload integration tests to use new SeleniumTestCase instead of deprecated AbstractIntegrationTestSuite
  • TAP5-1046 – Change Tapestry client-side JavaScript to make the tapx/Confirm component easier to implement
  • TAP5-1050 – Add API to prevent a particular service implementation from being live reloaded
  • TAP5-1055 – Provide hook to post-process properties files before rolling them into component Messages
  • TAP5-1061 – When a Zone component sends an Ajax request for a client-side update, it should pass an extra query parameter identifying the zone's client-side id
  • TAP5-1077 – Merge symbol values into property values from a bean definition
  • TAP5-1085 – The ExceptionReporter should be configured to mark more of the Tapestry generated classes (used for method & field access and method advice) as hidden by default
  • TAP5-1091 – CLONE -Handler method of LinkSubmit component should accept a context
  • TAP5-1094 – Create a binding prefix, "symbol:", that is used to access IoC symbols
  • TAP5-1112 – Handle array types in property expressions
  • TAP5-1126 – Add a new validator, "none", used when overriding the @Validate annotation
  • TAP5-1127 – Documentation for the Submit and LinkSubmit components should identify that you should cancel defer when inside a Loop
  • TAP5-1129 – LinkSubmit should render minimally (and as <span> tag) and then fill in the details on the client
  • TAP5-1132 – HibernateGridDataSource should assign the result of Projections.rowCount() to java.lang.Number when determining the number of rows for the configured entity type
  • TAP5-1135 – Provide a convinient method to build and start the registry
  • TAP5-1150 – Refactor out a new base class between org.testng.Assert and org.apache.tapestry5.ioc.test.TestBase for non-mock related tests
  • TAP5-1152 – TypeCoercer should include a method exposing the coercion it would use for a given source and target type
  • TAP5-1153 – When in development mode, Tapestry should pretty-print JSON content
  • TAP5-1155 – JavaScript initialization inside the partial page render Ajax response should be unquoted
  • TAP5-1157 – Client-side exceptions during Tapestry.init() should be caught and reported with the console
  • TAP5-1165 – Make better use of the OperationTracker to identify what's going on during a request (and especially, during page construction)
  • TAP5-1170 – Remove automatic injection of service id into parameters of type String
  • TAP5-1174 – Provide a ComponentEventResultProcessor that sends an error response to the client
  • TAP5-1197 – Eliminate page pooling using shared page instances that separate their structure from the mutable state
  • TAP5-1225 – Use recent Groovy/GMaven version and fix GMaven configuration in tapestry-core POM

New Features

  • TAP5-52 – Add Error component that presents validation errors of a single field
  • TAP5-56 – Tapestry should have support for IE conditional stylesheets
  • TAP5-86 – Add support for "cancel" submit buttons (which bypass client-side validation)
  • TAP5-103 – provide access to component parameters from within mixins
  • TAP5-138 – Add Zone parameter to Select component
  • TAP5-152 – Add @Translate annotation to define name of translator to be used with a bean property (rather than lookup by property type)
  • TAP5-156 – Add a @QueryParameter annotation for parameters to event handler method
  • TAP5-226 – Add annotation @SessionAttribute to map a field to a specific session attribute
  • TAP5-680 – Tapestry should provide a mixin for ensuring that the client id of a ClientElement is rendered
  • TAP5-692 – T5 should pick up validators to be applied to a field from the containing component's .properties file.
  • TAP5-801 – Add Trigger component to trigger a component event during rendering
  • TAP5-895 – Tracking issue for Tapestry/JSR-303 integration
  • TAP5-951 – Create more flexible API for testing with Selenium that allows for multiple test cases to share a single instance of Selenium/SeleniumServer/Jetty
  • TAP5-966 – TapestryFilter should be able add additional modules to the Registry to accomidate different testing (or other) execution configurations
  • TAP5-1013 – Live class reloading for service implementations
  • TAP5-1028 – Validator Macros: Combine multiple common validators into a single term
  • TAP5-1035 – In places where an invalid key is used to accessed a named value, Tapestry should report the possible names better (using HTML lists, rather than a long comma-separated string)
  • TAP5-1056 – The application global message catalog should be injectable into services
  • TAP5-1064 – Extend PropertyAccess to understand Scala style properties (which use a different naming convention than JavaBeans)
  • TAP5-1065 – Non-visual mixin to generate events as it begins/ends rendering (useful for generating matching JavaScript)
  • TAP5-1079 – Live class reloading should extend to proxied objects (such as from ObjectLocator.proxy()
  • TAP5-1084 – Zones that initially render inside a Form should support updates within the Form
  • TAP5-1095 – LocalizationSetter service should expose the supported locales as a list of Locale and as a SelectModel
  • TAP5-1097 – New annotation: @HeartbeatDeferred to mark component methods that should execute at the end of the current Heartbeat
  • TAP5-1098 – Provide new SelectModelFactory service that can automatically build a standard SelectModel from objects and property names
  • TAP5-1099 – Introduce public service responsible for handling page activation
  • TAP5-1121 – Provide an annotation to support automatic discarding of the persistent fields after a component or page method invocation
  • TAP5-1159 – Easy way to customize search locations for page and component templates
  • TAP5-1190 – New page-level events to "decorate" component event and page render links

Tasks Completed

  • TAP5-11 – CookiesImplTest does specify a domain cookie with a domain not prefixed with a . (dot)
  • TAP5-556 – Fix TranslatorSourceImplTest
  • TAP5-756 – Add ioko-tapestry-commons to the related projects list
  • TAP5-819 – remove ide-specific files from all sub-modules and add them to svn:ignore
  • TAP5-969 – Method AbstractField.createDefaultParameterBinding() should be deprecated
  • TAP5-976 – Upgrade Spring dependencies to version 3.0.0.RELEASE
  • TAP5-1081 – Remove formos references from 5.2.0 archetype
  • TAP5-1087 – Upgrade TestNG dependencies to version 5.12.1
  • TAP5-1134 – Upgrade Hibernate dependencies to 3.5.2
  • TAP5-1195 – Rename annotations @QueryParameter and @QueryParameterMapped (both introduced in 5.2.0) to more mnemonic names