diff --git a/.classpath b/.classpath deleted file mode 100644 index f18e8bb6e8..0000000000 --- a/.classpath +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..d2b9e34faa --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +out/ +bin/ +.DS_Store +.classpath +.project +.settings/ +*.ipr +*.iml +*.iws +target +test-output +temp-testng*.xml +build/ +.gradle +*~ +\#* \ No newline at end of file diff --git a/.project b/.project deleted file mode 100644 index f58498f325..0000000000 --- a/.project +++ /dev/null @@ -1,23 +0,0 @@ - - - tapestry5 - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.maven.ide.eclipse.maven2Builder - - - - - - org.eclipse.jdt.core.javanature - org.maven.ide.eclipse.maven2Nature - - diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index b3e22868ec..0000000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,58 +0,0 @@ -#Sat Sep 15 07:54:57 PDT 2007 -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 -org.eclipse.jdt.core.compiler.compliance=1.5 -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=error -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=warning -org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore -org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore -org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=error -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore -org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=error -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=error -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore -org.eclipse.jdt.core.compiler.problem.nullReference=ignore -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=error -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore -org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error -org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled -org.eclipse.jdt.core.compiler.problem.unusedImport=error -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=error -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.source=1.5 diff --git a/54_RELEASE_NOTES.txt b/54_RELEASE_NOTES.txt new file mode 100644 index 0000000000..fe4298c79d --- /dev/null +++ b/54_RELEASE_NOTES.txt @@ -0,0 +1,291 @@ +Scratch pad for changes destined for the 5.4 release notes page. + +# Non-Breaking Changes: + +A new DeprecationWarning service exists to write runtime warnings about deprecated component parameters. + +There have been sweeping changes to the client-side support in JavaScript, including the long-awaited abstraction layer. +Tapestry is moving to the use of asynchronously-loaded modules, using the RequireJS library. Virtually all of Tapestry's +existing JavaScript libraries are being recoded as JavaScript modules; in 5.5, the remaining JavaScript libraries will +be removed. + +The abstraction layer, the `t5/core/dom` module, is a set of wrappers that encapsulate most of the differences between +Prototype and jQuery. By coding to the abstraction layer, it will be possible to swap +out Prototype support for jQuery. Prototype will no longer be bundled with Tapestry starting in Tapestry 5.5. Ultimately +it will be possible to efficiently support other foundation frameworks, such as MooTools or ExtJS, by providing your +own implementation of the abstraction layer. + +Prior releases of Tapestry would require several separate constructs to initialize client-side behavior: + +* A unique id, generated on the server, on a client-side element +* A JavaScript library that extended T5.initializers with an initialization function +* Creating a _spec_ to describe behavior, including URLs and the unique client element id +* Many similar client-side event handlers on specific elements (created by the initialization function) + +Although this was well-structured, it had numerous pain points for developers, as well as some client-side performance issues. +For example, it means that components that occur many times on the page will include many similar event handler +functions. + +Tapestry 5.4 represents a shift to a more modern, lighter approach. Behavior of components is encoded into +`data-` attributes on the element, and logic shifts to a module that provides top-level event handlers on the +document object. This is an overall win: it reduces the number of event handlers, solves some timing issues related +to running initialization functions, deals with DOM updates better, and is overall more performant. + +Tapestry is moving away from "magic class names" to a more uniform approach based on the use of HTML 5 compliant `data-` +attributes. + +## Asset Improvements + +Prior versions of Tapestry created cacheable URLs for Assets that incorporated the application version number. The +Assets were served with a far-future expires header: the client browser would not even need to check to see +if the asset had changed. + +Unfortunately, when any asset changed in a new deployment of the application, the version number needed to +change, resulting in all assets being downloaded (because the application version number in their URLs changed). + +In this release, individual assets are given a URL containing a checksum based on the asset's content. When the underlying +file is changed, the asset will be served with the new URL, but unchanged assets will not be affected. This means +that when redeploying your application, you'll see far less asset traffic, as most client web browsers will already +have most assets (whose contents have not changed) in their local cache. + +In prior releases of Tapestry, the response to an asset URL could be compressed (with GZip) if the client supported +it, and the file was itself compressable. Compressable assets include CSS files and JavaScript, but not image +format files (those have built in compression). The fact that two different versions of the file were available +with the same URL could confuse some Content Delivery Networks. In Tapestry 5.4, compressed and uncompressed +asset URLs are distinct. + +Tapestry 5.4 now re-writes CSS files, expanding any `url()` references in them into fully qualify URLs; this +is to allow for the checksum embedded into each URL, which breaks relative references. + +Tapestry 5.4 introduces a new module, tapestry-wro4j, that provides support for compiling CoffeeScript into JavaScript, +Less into CSS, and for minimizing CSS and JavaScript. All processing takes place at runtime. + +## ControlGroup Mixin + +This new mixin for Field components adds the outer
and