You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2023/02/08 19:14:50 UTC

[wicket] branch remove-queuing updated (070cb953b9 -> 5a73dd1f7e)

This is an automated email from the ASF dual-hosted git repository.

svenmeier pushed a change to branch remove-queuing
in repository https://gitbox.apache.org/repos/asf/wicket.git


 discard 070cb953b9 removed queuing
     add 6513de5bd7 INFRA-22136 Replace bintray.io with apache.jfrog.io
     add 76866ab2c0 INFRA-22136 Set the Docker image label to LATEST-10
     add d6c1659f59 minor changes
     add f5d1354880 WICKET-6909 Link to Javadoc for 9.x is broken on the website
     add 90bbe8f00f Fix javadoc errors
     add 494657d2b7 WICKET-6908 wrap exceptions for log data
     add 7c0009c8df WICKET-6908 detach all handlers
     add 270a5a4397 Fix some more javadoc issues.
     add c66b54ad42 Fix spelling in javadocs
     add 7ccaf3ba37 Fix a typo in javadoc
     add 8f8cceaa55 Bump SLF4J to 2.0.0-alpha3
     add d22d154ff4 WICKET-6914  Visibility change of "File Upload" via ajax causes "missing" form-data
     add e1930d22df Simplify JUnit assertions
     add 47cf4ff8a4 WICKET-6914 Visibility change of "File Upload" via ajax causes "missing" form-data
     add 866fefc7f8 Explicitly install OpenJDK 11 and Maven
     add ba2169640c Bump SLF4J to 2.0.0-alpha4
     add 8cfffea644 WICKET-6913 Replace CGLib with ByteBuddy (#476)
     add ac49a29b70 Bump JUnit to 5.8.0-RC1
     add 395778f679 WICKET-6913 Interceptor must be public
     add 1255320863 Update Mockito to 3.12.1
     add 8d030d2929 WICKET-6916 replace proxies with StandardMBean
     add 6238623cc0 Small logging improvements to JMX Initializer
     add d9275ce6f7 WICKET-6913 move package private
     add 7fb9fa5bcd WICKET-6913 use pipe
     add 8939f130ff WICKET-6911 refacture into factories
     add d48d4a9ac9 Update Mockito to 3.12.4
     add e7aeb829dd WICKET-6913 Add generic type to IProxyFactory#createProxy()
     add d1b17b53b3 INFRA-22281 Test build on ci2.a.o (Buildbot 3.x)
     add 32c8b9e247 INFRA-22281 Test build on ci2.a.o (Buildbot 3.x)
     add 5373dc6dc2 INFRA-22046 Test deploying to https://nightlies.apache.org with rsync from GitHub Actions
     add 39f04b7767 Revert "INFRA-22046 Test deploying to https://nightlies.apache.org with rsync from GitHub Actions"
     add d09cc01517 Bump SLF4J to 2.0.0-alpha5
     add 7ae1c652f6 INFRA-22281 Test build on ci2.a.o (Buildbot 3.x)
     add f45b97f516 WICKET-6918 Update the version to 10.0.0
     add ecafdee1d6 WICKET-6919 Improve EnclosureContainer's javadoc to explain that it should not be used with <wicket:enclosure>
     add f9539f654e WICKET-6920 Improve the examples to use the browser's light/dark mode
     add 4942df6cda WICKET-6920 Improve the examples to use the browser's light/dark mode
     add 8366eb38f6 Bump JUnit to 5.8.0
     add e8066ac044 Use the ROOT locale when parsing the date in WicketFilterTest
     add cd297625ad Optimize imports
     add 9bfb7794d1 WICKET-6921 Avoid updating hidden forms (#478)
     add 6a7e4c3d77 Update JUnit, maven-javadoc-plugin and maven-war-plugin
     add c4905848b7 Remove useless javadoc
     add b6e313ccf9 Bump japicmp to 0.15.4
     add 1176afb860 Bump Mockito to 4.0.0
     add 7d60d974ee WICKET-6924 Allow image/avif in SecurePackageResourceGuard
     add 475f5e852e WICKET-6925 Deprecate AbstractWrapModel
     add cf3715a7ad WICKET-6925 Remove AbstractWrapModel
     add 740237be90 Bump Jetty to 11.0.7 and Spring to 5.3.11
     add 9d74a88d83 WICKET-6927 Get rid of java.security.AccessController
     add 7c68a150ed JDK 17 is stable since a month
     add 2e4ddf5621 INFRA-22281 Trigger build
     add 7f9e289ac4 INFRA-22281 Trigger build
     add fcec670558 Change wrong 'to determinate' into correct 'to determine' (#480)
     add f707376088 WICKET-6930: This commit adds: 1) allow to skip sending empty WS messages 2) pass page class as a kind of context that can be used to send a web socket to different pages + example of updating a component in a given page (not dependent on page ID)
     add d95a3c5262 WICKET-6933 use separate key for the default instance
     add 191de985e2 Remove 'final' modifier from a static field
     add 128125f25c Simplify the test for Strings#stripJSessionId()
     add 210cbe5222 [WICKET-6935] several minor datatable improvements
     add 858bb2a46d WICKET-6936 allow alternative read and write
     add 79f74d574b Fix spelling in user guide
     add 517a546f2d Update ASM, Assertj, ByteBuddy, Logback, Metrics, Mockito and Spring
     add 17fa392a8c WICKET-6937 Update the keystore used by the quickstart application
     add 920aa6cb29 WICKET-6937 maven-resources-plugin should not filter the keystore file
     add e10bc82d00 WICKET-6937 Few more updates of keystore file name
     add 15e4c015dd WICKET-6937 Fix a comment
     add 3ea6ff9c7f WICKET-6937 Use JKS keystore
     add 232ef2170d Update Maven plugins if there are non-Milestone releases
     add 51cf3c7c56 Specify version for Maven plugins where it was missing
     add 33ae089732 Update Node.js to 16 and NPM to 8
     add 2fb3386f0c Update some dependencies
     add 316753f9e4 Update Asciidoctor dependencies used for generating the user guide
     add 3200a7c0cf WICKET-6904 Make Apache Wicket fully supporting Java9+ module system
     add 53e0518504 Fix typos in javadoc
     add 9e0e4249f6 Update JUnit to 5.8.2
     add 0ad7549b5d Bump maven-bundle-plugin to 5.1.3
     add 65ea4ceeab Fix the setup of WebSocket support in StartExamples
     add 40e4e255bf Do not resolve the WebSocket IKey twice
     add 0fdb24b17c Minor non-functional improvements/cleanups
     add 3ba2a7836f Upgrade Mockito to 4.2.0
     add f5646f7b63 Drop Maven profiles for JDK 12, 13, 14, 15 and 16
     add eaca512a12 Fixed doceumntation for JavaScriptHeaderItem
     add afb77c0fbb Fixed documentation typos
     add 41689ce8ec WICKET-6915 Upgrade to commons-fileupload2 (#486)
     add e0889c7df1 WICKET-6940 Update Spring to 6.0.0-M1 (#487)
     add a971051cff Use Java 17 for the archetype
     add d365e04af2 WICKET-6942 Replace usage of log4j 1.x in tests and wicket-examples with slf4j-simple
     add 9806e8b1b5 WICKET-6944 Memory leak in WicketEndpoint
     add 0b399da2a8 Javadoc wording improvement
     add bede789c2d [WICKET-6943] Save info about Locale direction LTR/RTL to Session metadata (#488)
     add 831dbc1c2e [WICKET-6943] Session.isRtlLanguage made public
     add 63c5fe205d Upgrade Spring to 6.0.0-M2
     add 54a9c8a216 WICKET-6945 Allow onConfigure to hide forms (#492)
     add b543a1eef4 WICKET-6946 Document limitations of overriding isVisible/isEnabled
     add 37e171fd85 WICKET-6947 IndicatingAjaxButton does not work with Bootstrap 4
     add ae3dd808ee WICKET-6947 IndicatingAjaxButton does not work with Bootstrap 4
     add 1c56912177 WICKET-6947 IndicatingAjaxButton does not work with Bootstrap 4
     add 027d2d5dc3 WICKET-6947 IndicatingAjaxButton does not work with Bootstrap 4
     add 4d42420806 Update frontend-maven-plugin, Node.js and NPM.js
     add 4ad5354a2a Update Grunt.js and its plugins used for JS testing
     add f23136bd6c [WICKET-6949] add initiate method that receive parameters: this allows to initiate "dynamic" downloads
     add 44c509b00e Some minor corrections and updates of the README file (#494)
     add 233b65a503 Update japicmp-maven-plugin to 0.15.5
     add 516b81e5fd Update Guice to 5.1.0 and Mockito to 4.3.1
     add f95cbf4b07 WICKET-6952 Performance improvements for `Strings.isEmpty()` (#497)
     add 9828cf8e78 [WICKET-6950] allow configuring web-sockets sessions when connection is opened
     add c6fde82ce9 WICKET-6953 defer non-ajax only
     add 3ff40212e9 Update module-info.java (#500)
     add 3a1a614c1b Allowing build-changelog.sh to use a specific full release version
     add 3fe4864125 Fix to the ajax request attributes table
     add d902cdbdd8 WICKET-6960 Avoid unnecessary allocations when decoding and encoding `ComponentInfo` (#501)
     add 85b509f94b Update Maven to 3.8.5
     add 8bfd774396 Update Maven to 3.8.5
     add 28cda68f6e WICKET-6964 Do not allocate when escaping empty string (#502)
     add a54277aa6b Temporarily disable TravisCI caches of M2_REPO
     add 78196efbb4 Revert "Temporarily disable TravisCI caches of M2_REPO"
     add 7c322028f5 Update grunt-contrib-jshint, npm and Node.js
     add 07775d3c05 Enable WebSocket support in StartExamples.java
     add 8beff007ab Remove Framebuffer support ('services: xvfb') in TravisCI
     add e4739dc81e Remove useless (?!) env var
     add e63ed88ef6 WICKET-6965 Memory leak in WicketEndpoint (#505)
     add 2e3e95f919 WICKET-6963 Use singletons for PanelMarkupSourcingStrategy (#503)
     add 4d43eb5637 Guarantee order of listener notifications
     add 85fab8969a Revert "WICKET-6963 Use singletons for PanelMarkupSourcingStrategy (#503)"
     add 4764ac8010 WICKET-6966 do not record session size by default
     add e438df935e [WICKET-6967] allow sending asynchronous messages via IWebSocketConnection
     add b5099ce33b [WICKET-6967] fix compile error
     add eb8ea969af [CLEAN_UP] get rid of unused imports
     add 243f6ffd01 WICKET-6965 Store application name to avoid accessing the session during `onClose` and `onError` (#507)
     add 02bc4d0529 Removed pgp signs from announce email
     add 2a6ae40b02 WICKET-6970: do not build error message for every render for every panel
     add d0c5782efa {WICKET-6969} allow asynchronous pushing of messages.
     add eba732f9fa [WICKET-6969] fix compile error
     add 541615be7d [WICKET-6971] NullPointerException in ModificationWatcher (#510)
     add b32846ae27 - Add Resource key to be logged on Warning in Localizer.java (#508)
     add df75224480 [WICKET-6969] javadoc
     add 5d26ac7c98 [WICKET-6969] make code the same as in 9.x
     add 3f73be1e82 [WICKET-6969] mimor clean up
     add c6d18e697b [WICKET-6974] return correct context path
     add 558e14736e WICKET-6975 Ensure `behavior.renderHead` is called only once per component/behavior (#515)
     add 2b537265fd Do not try to run the JavaScript tests on TravisCI
     add 75c811af2a Bump grunt from 1.4.1 to 1.5.2 in /testing/wicket-js-tests (#518)
     add b82fee7d31 WICKET-6976 Avoid allocations when writing synthetic close tag (#516)
     add 76685914cd WICKET-6963 Singleton markup sourcing strategy (Take 2) (#517)
     add 80726e2dae WICKET-6977 More efficient hashcode computations (#513)
     add 69b2b0188a WICKET-6979 Cut back slightly on some String instance creation in PageInfo (#522)
     add d248853305 WICKET-6982 Rely on conditional logic in `Page.isPageStateless()` instead of forcing initialization for all pages (#526)
     add 765189c9e0 Bump grunt from 1.5.2 to 1.5.3 in /testing/wicket-js-tests (#527)
     add 414d3f733e WICKET-6985 Insufficient information logged by CheckingObjectOutputStream when delegation to Externalizable
     add 197a08f102 WICKET-6981 session attributes have to be reset
     add a695e4be3e [WICKET-6988] String.format is replaced with concatenation of strings
     add 8a9b4173b7 Add a Maven profile for JDK 20 EA
     add dc26be582c Update Maven to 3.8.6
     add 86920872c6 WICKET-6990 check whether value is rebound
     add 655f0da413 WICKET-6991 ResourceAggregator is resizing the StringBuilder several times.
     add 3e211ad8e9 WICKET-6991 using a separate StringBuilder for OnLoadHeaderItemS
     add 3d80ada9a8 WICKET-6990 too many PageStore named "test" led to unit test error "Store with key 'test:' already exists".
     add 04df0167e6 WICKET-6992 Reduce object creation and wasted memory in Url toString() methods
     add e7ab67bcf7 WICKET-6994 Make the servlet API a runtime provided dependency when using JPMS.
     add 114a958040 Bump jetty-server from 11.0.7 to 11.0.10 (#530)
     add c0623d5a2f WICKET-6996: NotSerializableException near KeyInSessionSunJceCryptFactory
     add 39b334542e WICKET-6998: Bump slf4j-api to 2.0.0
     add 6665833af9 Bump minimist from 1.2.5 to 1.2.6 in /testing/wicket-js-tests (#531)
     add 990a6e412e WICKET-7000 ParseException ("Malformed tag") if <script> attribute 'type' is 'module'
     add 92303dfb69 The http RequestLogger is very expensive.   In our system, we see almost 4kb of memory allocation in this code to create a logging String that is ~700 bytes long, per logging message being created.
     add afc21338c2 We can do a little better by removing two more StringBuilders. This is another ~100 bytes and several Objects which do not need to be allocated to log a request.
     add bccfb820a1 The build failed on Github.  So restore the original API. Also cache the TZ lookup.
     add 5ebdb5d5ff One more try to get past the build tests...
     add b3d02eadd1 Sometimes you can look right at the problem and not see it...
     add b5094c14d0 Using the newer LocalDateTime formatting tools allows for an additional improvement.   Running the two version using JMH:
     add 980a0f5099 Change method name to appendRequestHandlerString in response to comments.
     add 27d9b7c88a Merge pull request #524 from astange1/requestLogger
     add 8c770c4337 WICKET-7002 Remove blocking code from Application#get/setMetaData
     add 87f7e1ca2e Merge pull request #532 from apache/WICKET-7002
     add fe45d36a5d WICKET-7002 added final modifier to metaData fields
     add 44e7a4aa69 Upgrade archetype pom plugins
     add cb95a2db4a Fix apache/wicket#WICKET-7004 (#538)
     add df55446654 WICKET-6998: Bump slf4j-api to 2.0.1
     add 7a87b09e6f Fix apache/wicket#WICKET-7007 (#539)
     add 860ce7578f WICKET-6998: Bump slf4j-api to 2.0.3
     add 53a36b437e toString() reflect the actual variable name
     add 5d969fa988 WICKET-7008 fix for test case
     add 41baae797a WICKET-6999 Update bundle plugin to support slf4j [1.7,3)
     add 3a29e91665 Bump async from 2.6.3 to 3.2.3 in /testing/wicket-js-tests (#542)
     add 4cad8a786c Bump jackson-databind from 2.10.5 to 2.13.4.1 (#544)
     add acc979b3ba Cleanup junit 5 assertions (#545)
     add 3e0d16ccbc WICKET-7014: use CDI 1.1 API to create InjectionTarget
     add 49d4e95e17 WICKET-7011 Swap assertion arguments to conform to expected vs actual
     add e403284b23 Also swap order in assertNotEquals
     add 6a367d0f19 Fixing asciidoc formatting issues
     add 1bda09aef7 WICKET-6940: Update Spring to 6.0.0
     add fa1dd0ce95 Bump minimatch from 3.0.4 to 3.0.8 in /testing/wicket-js-tests (#548)
     add 210525f0ec WICKET-7016: Add support for AES-GCM-SIV as cipher for page store encryption
     add 0c4b88e16a ListenerRequestHandler no longer hides IndexOutOfBoundsException in behavior
     add fee7cd32b5 TravisCI is no more supported by Apache Infra team
     add cf37800b10 Bump Maven to 3.8.7 for Github Actions CI
     add 6e6e145537 [WICKET-7021] Update OSGi imports for needed packages
     add bc70f127ff Do not run JS tests on Github Actions
     add 9233f0a722 Code clean-up javax.inject.Inject -> jakarta.inject.Inject
     add 4affb7b184 [WICKET-7025] package private methods are intercepted by ByteBuddy (#552)
     new 5a73dd1f7e removed queuing

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (070cb953b9)
            \
             N -- N -- N   refs/heads/remove-queuing (5a73dd1f7e)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .github/workflows/maven.yml                        |    18 +-
 .travis.yml                                        |    41 -
 NOTICE                                             |     8 +-
 README.md                                          |    90 +-
 archetypes/quickstart/pom.xml                      |     1 +
 .../src/main/resources/archetype-resources/pom.xml |    30 +-
 .../archetype-resources/src/test/java/Start.java   |     4 +-
 .../src/test/jetty/jetty-ssl.xml                   |    21 +
 .../archetype-resources/src/test/jetty/jetty.xml   |     2 +-
 .../src/test/resources/keystore                    |   Bin 1481 -> 3954 bytes
 build-changelog.sh                                 |     4 +-
 pom.xml                                            |   251 +-
 release.sh                                         |    16 -
 testing/wicket-arquillian/pom.xml                  |     9 +-
 .../arquillian/testing/pages/InsertContact.java    |    10 +-
 .../arquillian/testing/pages/ListContacts.java     |     4 +-
 .../testing/pages/InsertContactTest.java           |     8 +-
 testing/wicket-common-tests/pom.xml                |    57 +-
 testing/wicket-js-tests/package-lock.json          | 12834 +++++++++++++++----
 testing/wicket-js-tests/package.json               |    10 +-
 testing/wicket-js-tests/pom.xml                    |     8 +-
 testing/wicket-threadtest/.tomcatplugin            |     1 -
 testing/wicket-threadtest/pom.xml                  |    58 +-
 .../apache/wicket/threadtest/apps/app1/Home.java   |     3 +-
 .../wicket/threadtest/apps/app1/TestApp1.java      |    29 +-
 .../wicket/threadtest/apps/app2/TestApp2.java      |    29 +-
 .../{log4j.properties => simplelogger.properties}  |    15 +-
 .../apache/wicket/threadtest/tester/Tester.java    |     4 +-
 wicket-auth-roles/pom.xml                          |     5 +-
 .../AuthenticatedWebApplication.java               |     9 -
 .../authentication/AuthenticatedWebSession.java    |     2 +-
 .../authentication/panel/SignInPanel.java          |     5 +-
 wicket-auth-roles/src/test/java/log4j.properties   |    19 -
 .../src/test/java/simplelogger.properties          |    15 +-
 wicket-bean-validation/pom.xml                     |    18 +-
 .../src/test/java/log4j.properties                 |    18 -
 .../validation/DefaultPropertyResolverTest.java    |     3 +-
 .../src/test/java/simplelogger.properties          |    15 +-
 wicket-cdi/pom.xml                                 |     5 +-
 .../java/org/apache/wicket/cdi/NonContextual.java  |     3 +-
 wicket-core/pom.xml                                |   118 +-
 wicket-core/src/main/java/module-info.java         |     7 +-
 .../main/java/org/apache/wicket/Application.java   |    12 +-
 .../src/main/java/org/apache/wicket/Component.java |    13 +-
 .../apache/wicket/DefaultPageManagerProvider.java  |    25 +-
 .../java/org/apache/wicket/IGenericComponent.java  |     2 +-
 .../src/main/java/org/apache/wicket/Localizer.java |     2 +-
 .../java/org/apache/wicket/MarkupContainer.java    |    16 +-
 .../src/main/java/org/apache/wicket/Page.java      |     3 +-
 .../src/main/java/org/apache/wicket/Session.java   |    93 +-
 .../wicket/ajax/AbstractAjaxTimerBehavior.java     |     3 +-
 .../ajax/AjaxNewWindowNotifyingBehavior.java       |     4 +-
 .../wicket/ajax/attributes/AjaxAttributeName.java  |    10 +-
 .../org/apache/wicket/ajax/json/JSONFunction.java  |     2 +-
 .../wicket/ajax/res/js/wicket-ajax-jquery.js       |     2 +
 .../authentication/IAuthenticationStrategy.java    |     2 +-
 .../core/request/handler/IPageRequestHandler.java  |     2 +-
 .../request/handler/ListenerRequestHandler.java    |    12 +-
 .../request/handler/logger/ListenerLogData.java    |    79 +-
 .../core/request/handler/logger/PageLogData.java   |    27 +-
 .../wicket/core/request/mapper/CryptoMapper.java   |     3 +-
 .../wicket/core/request/mapper/ResourceMapper.java |     7 +-
 .../wicket/core/util/crypt/AbstractJceCrypt.java   |     1 -
 .../crypt/AbstractKeyInSessionCryptFactory.java    |     8 +-
 .../checker/CheckingObjectOutputStream.java        |     2 +-
 .../apache/wicket/csp/CSPRequestCycleListener.java |     2 +-
 .../wicket/csp/ContentSecurityPolicySettings.java  |     5 +-
 .../org/apache/wicket/feedback/FeedbackDelay.java  |     2 +-
 .../wicket/feedback/FeedbackMessagesModel.java     |     1 -
 .../org/apache/wicket/markup/ComponentTag.java     |    21 +-
 .../java/org/apache/wicket/markup/MarkupCache.java |     4 +-
 .../wicket/markup/head/AbstractCspHeaderItem.java  |     2 +-
 .../head/AbstractCssReferenceHeaderItem.java       |     9 +-
 .../AbstractJavaScriptReferenceHeaderItem.java     |    17 +-
 .../wicket/markup/head/CssReferenceHeaderItem.java |     8 +-
 .../markup/head/CssUrlReferenceHeaderItem.java     |     7 +-
 .../markup/head/JavaScriptContentHeaderItem.java   |     5 +-
 .../markup/head/JavaScriptReferenceHeaderItem.java |     6 +-
 .../head/JavaScriptUrlReferenceHeaderItem.java     |     5 +-
 .../wicket/markup/head/MetaDataHeaderItem.java     |     6 +-
 .../wicket/markup/head/OnEventHeaderItem.java      |     6 +-
 .../wicket/markup/head/ResourceAggregator.java     |    33 +-
 .../head/filter/JavaScriptDeferHeaderResponse.java |    33 +-
 .../head/filter/SubresourceHeaderResponse.java     |     2 +-
 .../wicket/markup/head/http2/PushHeaderItem.java   |     3 +-
 .../apache/wicket/markup/head/http2/PushItem.java  |     6 +-
 .../org/apache/wicket/markup/html/CrossOrigin.java |     8 +-
 .../wicket/markup/html/PackageResourceGuard.java   |     2 +-
 .../markup/html/SecurePackageResourceGuard.java    |     2 +
 .../markup/html/basic/EnclosureContainer.java      |    12 +-
 .../wicket/markup/html/border/BorderPanel.java     |     2 +-
 .../markup/html/form/AbstractTextComponent.java    |     8 +-
 .../org/apache/wicket/markup/html/form/Form.java   |    17 +-
 .../wicket/markup/html/form/FormComponent.java     |    17 +-
 .../markup/html/form/FormComponentPanel.java       |     2 +-
 .../wicket/markup/html/form/PasswordTextField.java |     6 +-
 .../wicket/markup/html/form/upload/FileUpload.java |     3 +-
 .../markup/html/form/upload/FileUploadField.java   |     2 +-
 .../html/form/upload/MultiFileUploadField.java     |     2 +-
 .../wicket/markup/html/image/ExternalImage.java    |     4 +-
 .../org/apache/wicket/markup/html/image/Image.java |     2 +-
 .../org/apache/wicket/markup/html/link/Link.java   |     4 +-
 .../wicket/markup/html/media/MediaComponent.java   |    16 +-
 .../apache/wicket/markup/html/media/Source.java    |     4 +-
 .../org/apache/wicket/markup/html/media/Track.java |     2 +-
 .../panel/AssociatedMarkupSourcingStrategy.java    |    52 +-
 .../html/panel/DefaultMarkupSourcingStrategy.java  |     2 +-
 .../org/apache/wicket/markup/html/panel/Panel.java |     2 +-
 .../html/panel/PanelMarkupSourcingStrategy.java    |    19 +
 .../apache/wicket/markup/parser/XmlPullParser.java |    24 +-
 .../org/apache/wicket/mock/MockPageContext.java    |    12 +-
 .../org/apache/wicket/model/AbstractWrapModel.java |    56 -
 .../java/org/apache/wicket/model/IWrapModel.java   |    25 +-
 .../wicket/model/LoadableDetachableModel.java      |     4 +-
 .../java/org/apache/wicket/page/IPageManager.java  |     2 +-
 .../org/apache/wicket/page/PartialPageUpdate.java  |     8 +
 .../pageStore/AbstractPersistentPageStore.java     |    39 +-
 .../apache/wicket/pageStore/CryptingPageStore.java |     4 +-
 .../wicket/pageStore/DefaultPageContext.java       |    25 +-
 .../org/apache/wicket/pageStore/FilePageStore.java |   114 +-
 .../apache/wicket/pageStore/GroupingPageStore.java |    13 +-
 .../org/apache/wicket/pageStore/IPageContext.java  |     8 +-
 .../wicket/pageStore/InSessionPageStore.java       |    18 +-
 .../wicket/pageStore/crypt/GCMSIVCrypter.java      |   107 +
 .../protocol/http/AbstractRequestLogger.java       |    39 +-
 .../wicket/protocol/http/ClientProperties.java     |     2 +-
 .../wicket/protocol/http/IMultipartWebRequest.java |     2 +-
 .../http/MultipartFormComponentListener.java       |    54 +
 .../protocol/http/ReloadingWicketFilter.java       |    12 +-
 .../apache/wicket/protocol/http/RequestLogger.java |    11 +-
 .../wicket/protocol/http/WebApplication.java       |    13 +-
 .../apache/wicket/protocol/http/WicketServlet.java |     6 +-
 .../protocol/http/mock/MockHttpServletRequest.java |     2 +-
 .../http/servlet/MultipartServletWebRequest.java   |     4 +-
 .../servlet/MultipartServletWebRequestImpl.java    |    55 +-
 .../SecuredRemoteAddressRequestWrapperFactory.java |     1 +
 .../protocol/http/servlet/ServletPartFileItem.java |     6 +-
 .../protocol/http/servlet/ServletWebRequest.java   |     8 +-
 .../protocol/http/servlet/WicketSessionFilter.java |     2 -
 .../servlet/XForwardedRequestWrapperFactory.java   |     5 +
 .../wicket/request/component/IRequestablePage.java |     4 +-
 .../request/cycle/IRequestCycleListener.java       |     5 +-
 .../cycle/RequestCycleListenerCollection.java      |     8 +-
 .../wicket/request/resource/ResourceReference.java |    31 +-
 .../resource/caching/IStaticCacheableResource.java |     2 +-
 .../caching/version/CachingResourceVersion.java    |     2 +-
 .../version/MessageDigestResourceVersion.java      |     1 -
 .../resource/TextTemplateResourceReference.java    |     2 +-
 .../wicket/settings/RequestLoggerSettings.java     |     5 +-
 .../apache/wicket/settings/ResourceSettings.java   |    14 +-
 .../org/apache/wicket/settings/StoreSettings.java  |    29 +
 .../apache/wicket/util/tester/WicketTester.java    |     3 +-
 wicket-core/src/main/resources/META-INF/wicket.xsd |     2 +-
 wicket-core/src/test/java/log4j.properties         |    18 -
 .../org/apache/wicket/AttributeModifierTest.java   |     4 +-
 .../apache/wicket/ajax/AjaxTimerBehaviorTest.java  |    59 +-
 .../apache/wicket/behavior/SharedBehaviorTest.java |    18 +-
 .../handler/logger/ListenerLogDataTest.java        |    92 +
 .../apache/wicket/core/util/Log4jEventHistory.java |    74 -
 .../wicket/markup/head/filter/DeferredPage.html    |     1 +
 .../wicket/markup/head/filter/DeferredPage.java    |     9 +-
 .../markup/head/filter/DeferredPageExpected.html   |     9 +-
 .../head/filter/DeferredPage_AjaxExpected.html     |    18 +
 .../head/filter/FilteringHeaderResponseTest.java   |     6 +-
 .../wicket/markup/html/form/FormMultiPartTest.java |    20 +-
 .../wicket/markup/html/form/MultiPartFormPage.java |     4 +-
 .../markup/html/form/ValidatorPropertiesTest.java  |     6 +-
 .../markup/html/form/upload/FileUploadTest.java    |     9 +-
 .../wicket/markup/parser/XmlPullParserTest.java    |    49 +-
 .../markup/parser/filter/HeaderSectionTest.java    |    29 +-
 .../org/apache/wicket/model/ModelToStringTest.java |    10 +-
 .../wicket/pageStore/AbstractPageStoreTest.java    |     8 +-
 .../pageStore/AbstractPersistentPageStoreTest.java |    93 +
 .../wicket/pageStore/CryptingPageStoreTest.java    |    49 +-
 .../wicket/pageStore/DefaultPageContextTest.java   |   146 +
 .../apache/wicket/pageStore/FilePageStoreTest.java |     1 -
 .../http/MultipartFormComponentListenerBean.java}  |    57 +-
 .../http/MultipartFormComponentListenerPage.html   |    18 +
 .../http/MultipartFormComponentListenerPage.java   |    96 +
 .../http/MultipartFormComponentListenerTest.java   |    59 +
 .../wicket/protocol/http/WebSessionTest.java       |    55 +-
 .../wicket/protocol/http/WicketFilterTest.java     |    13 +-
 .../aggregator/ResourceAggregatorTest.java         |    34 +
 .../src/test/java/simplelogger.properties          |    15 +-
 wicket-core/src/test/js/dom.js                     |    18 +-
 wicket-devutils/pom.xml                            |     5 +-
 .../devutils/inspector/SessionSizeModelTest.java   |     4 +-
 wicket-examples/.tomcatplugin                      |     2 -
 wicket-examples/pom.xml                            |    15 +-
 wicket-examples/src/main/java/log4j.properties     |    20 -
 .../examples/ajax/builtin/AjaxApplication.java     |     2 +
 .../examples/ajax/builtin/AjaxDownloadPage.html    |    14 +
 .../examples/ajax/builtin/AjaxDownloadPage.java    |   129 +-
 .../examples/ajax/builtin/AutoCompletePage.java    |     3 +-
 .../examples/ajax/builtin/FileUploadPage.java      |     2 +-
 .../wicket/examples/cdi/AutoConversationPage1.java |     2 +-
 .../wicket/examples/cdi/AutoConversationPage2.java |     2 +-
 .../wicket/examples/cdi/ConversationPage1.java     |     2 +-
 .../wicket/examples/cdi/ConversationPage2.java     |     2 +-
 .../wicket/examples/cdi/ConversationPage3.java     |     2 +-
 .../apache/wicket/examples/cdi/InjectionPage.java  |     2 +-
 .../apache/wicket/examples/websocket/HomePage.html |     1 +
 .../examples/websocket/JSR356Application.java      |    31 +-
 .../wicket/examples/websocket/JSR356Session.java   |    66 +
 .../websocket/WebSocketBehaviorDemoPage.java       |     2 -
 .../WebSocketMultiTabResourceDemoPage.java         |     2 -
 .../WebSocketPushUpdateProgressDemoPage.html       |     8 +
 .../WebSocketPushUpdateProgressDemoPage.java}      |    62 +-
 .../websocket/WebSocketResourceDemoPage.java       |     2 -
 .../examples/websocket/charts/ChartUpdater.java    |     3 +-
 .../ProgressBarTogglePanel.html}                   |    30 +-
 .../websocket/progress/ProgressBarTogglePanel.java |   111 +
 .../websocket/progress/ProgressUpdater.java        |   172 +
 .../src/main/java/simplelogger.properties          |    17 +-
 wicket-examples/src/main/resources/META-INF/NOTICE |    10 +-
 .../resources/org/apache/wicket/examples/style.css |     7 +-
 .../org/apache/wicket/examples/StartExamples.java  |    11 +-
 .../util/license/ApacheLicenceHeaderTest.java      |     2 +-
 .../wicket-metrics/src/main/java/module-info.java  |     2 +-
 wicket-extensions/pom.xml                          |     5 +-
 wicket-extensions/src/main/java/module-info.java   |     4 +-
 .../extensions/ajax/AjaxDownloadBehavior.java      |    15 +
 .../extensions/ajax/AjaxFileDropBehavior.java      |     4 +-
 .../ajax/markup/html/AjaxEditableChoiceLabel.java  |     5 +-
 .../ajax/markup/html/AjaxIndicatorAppender.java    |    12 +-
 .../ajax/markup/html/IndicatingAjaxLink.java       |     3 -
 .../autocomplete/AbstractAutoCompleteRenderer.java |     4 +-
 .../html/autocomplete/AutoCompleteSettings.java    |     1 +
 .../html/autocomplete/AutoCompleteTextField.java   |     2 +-
 .../autocomplete/StringAutoCompleteRenderer.java   |     2 +-
 .../html/form/upload/UploadStatusResource.java     |     2 +-
 .../ajax/markup/html/modal/ModalDialog.java        |     2 +-
 .../data/table/AjaxFallbackDefaultDataTable.java   |    11 +-
 .../markup/html/form/select/SelectOptions.java     |     4 +-
 .../repeater/data/table/NavigationToolbar.java     |    17 +-
 .../html/repeater/data/table/NavigatorLabel.java   |     8 +-
 wicket-extensions/src/test/java/.gitignore         |     1 -
 .../html/repeater/data/table/DataTableTest.java    |    13 +-
 .../html/repeater/util/TreeModelProviderTest.java  |     7 +-
 wicket-guice/pom.xml                               |     5 +-
 wicket-guice/src/main/java/module-info.java        |     2 +-
 .../apache/wicket/guice/AbstractInjectorTest.java  |     3 +-
 wicket-ioc/pom.xml                                 |    13 +-
 wicket-ioc/src/main/java/module-info.java          |     3 +-
 .../org/apache/wicket/proxy/IProxyFactory.java     |    22 +-
 .../apache/wicket/proxy/IProxyTargetLocator.java   |     2 +-
 .../apache/wicket/proxy/LazyInitProxyFactory.java  |   411 +-
 .../proxy/bytebuddy/ByteBuddyInterceptor.java      |   112 +
 .../proxy/bytebuddy/ByteBuddyProxyFactory.java     |   213 +
 .../apache/wicket/proxy/jdk/JdkProxyFactory.java   |   198 +
 ...sisCGLibInterceptor.java => IInstantiator.java} |    45 +-
 .../proxy/objenesis/ObjenesisInstantiator.java     |    68 +-
 .../proxy/objenesis/ObjenesisProxyFactory.java     |    53 -
 .../proxy/objenesis/ObjenesisProxyReplacement.java |    55 -
 .../wicket/injection/util/MockDependency.java      |     2 +-
 .../wicket/proxy/LazyInitProxyFactoryTest.java     |   132 +-
 .../PackagePrivateConcreteObject.java              |    13 +-
 .../proxy/packageprivate/PackagePrivateTest.java   |   112 +
 .../apache/wicket/proxy/util/ConcreteObject.java   |     8 +-
 .../wicket/proxy/util/NoDefaultConstructor.java    |    16 +-
 wicket-jmx/pom.xml                                 |    13 +-
 wicket-jmx/src/main/java/module-info.java          |     1 -
 .../java/org/apache/wicket/jmx/Initializer.java    |    98 +-
 .../org/apache/wicket/jmx/wrapper/Application.java |    21 -
 .../wicket/jmx/wrapper/ApplicationSettings.java    |     9 -
 .../wicket-native-websocket-core/pom.xml           |     9 +-
 .../src/main/java/module-info.java                 |     2 +-
 .../wicket/protocol/ws/WebSocketSettings.java      |    91 +-
 .../ws/api/AbstractWebSocketConnection.java        |    16 +-
 .../ws/api/AbstractWebSocketProcessor.java         |    41 +-
 .../protocol/ws/api/BaseWebSocketBehavior.java     |    14 +-
 .../protocol/ws/api/IWebSocketConnection.java      |    75 +
 .../protocol/ws/api/IWebSocketProcessor.java       |    20 +
 .../protocol/ws/api/IWebSocketRequestHandler.java  |    54 +
 .../wicket/protocol/ws/api/IWebSocketSession.java  |   119 +
 .../IKey.java => IWebSocketSessionConfigurer.java} |    20 +-
 .../protocol/ws/api/WebSocketPushBroadcaster.java  |    77 +-
 .../protocol/ws/api/WebSocketRequestHandler.java   |    59 +-
 .../wicket/protocol/ws/api/WebSocketResponse.java  |    29 +-
 .../api/registry/{IKey.java => AbstractKey.java}   |    21 +-
 .../wicket/protocol/ws/api/registry/IKey.java      |     8 +-
 .../api/registry/IWebSocketConnectionRegistry.java |    26 +-
 .../wicket/protocol/ws/api/registry/PageIdKey.java |    13 +-
 .../protocol/ws/api/registry/ResourceNameKey.java  |     8 +-
 .../ws/api/registry/ResourceNameTokenKey.java      |     9 +-
 .../SimpleWebSocketConnectionRegistry.java         |    32 +-
 .../ws/api/res/js/wicket-websocket-jquery.js       |     4 +
 .../ws/api/res/js/wicket-websocket-setup.js.tmpl   |     2 +-
 .../ws/util/tester/TestWebSocketConnection.java    |    32 +-
 .../ws/util/tester/TestWebSocketProcessor.java     |    29 +-
 .../src/test/java/log4j.properties                 |    16 -
 .../util/tester/WebSocketTesterBehaviorTest.java   |     2 +-
 .../src/test/java/simplelogger.properties          |    15 +-
 .../wicket-native-websocket-javax/pom.xml          |    19 +-
 .../src/main/java/module-info.java                 |     2 +-
 .../protocol/ws/javax/JavaxUpgradeHttpRequest.java |     4 +-
 .../ws/javax/JavaxWebSocketConnection.java         |    47 +-
 .../protocol/ws/javax/JavaxWebSocketProcessor.java |     3 +-
 .../protocol/ws/javax/JavaxWebSocketSession.java   |   142 +
 .../wicket/protocol/ws/javax/WicketEndpoint.java   |    42 +-
 .../ws/javax/WicketServerEndpointConfig.java       |     2 +-
 wicket-objectsizeof-agent/pom.xml                  |     5 +-
 wicket-request/pom.xml                             |    10 +-
 wicket-request/src/main/java/module-info.java      |     2 +-
 .../wicket/request/RequestHandlerExecutor.java     |    16 +-
 .../main/java/org/apache/wicket/request/Url.java   |    96 +-
 .../apache/wicket/request/http/WebResponse.java    |     1 -
 .../wicket/request/mapper/info/ComponentInfo.java  |    21 +-
 .../request/mapper/info/PageComponentInfo.java     |    16 +-
 .../wicket/request/mapper/info/PageInfo.java       |    13 +-
 wicket-request/src/test/java/log4j.properties      |    18 -
 .../src/test/java/simplelogger.properties          |    15 +-
 wicket-spring/pom.xml                              |     5 +-
 wicket-spring/src/main/java/module-info.java       |     2 +-
 ...nnotationConfigSpringWebApplicationFactory.java |     2 +-
 .../wicket/spring/SpringWebApplicationFactory.java |     4 +-
 .../annot/AnnotProxyFieldValueFactory.java         |     2 +-
 .../injection/annot/SpringComponentInjector.java   |     4 +-
 .../wicket/spring/FieldBeansCollectorTest.java     |     6 +-
 .../annot/AnnotProxyFieldValueFactoryTest.java     |     4 +-
 ...kartaInjectAnnotProxyFieldValueFactoryTest.java |     2 +-
 .../annot/SpringBeanWithGenericsTest.java          |     2 +-
 wicket-user-guide/pom.xml                          |    23 +-
 .../src/main/asciidoc/ajax/ajax_5.adoc             |     3 +-
 .../asciidoc/bestpractices/bestpractices_1.adoc    |     2 +-
 .../asciidoc/bestpractices/bestpractices_4.adoc    |     6 +-
 .../asciidoc/bestpractices/bestpractices_5.adoc    |    31 +-
 .../asciidoc/bestpractices/bestpractices_6.adoc    |     2 +-
 .../src/main/asciidoc/forms2/forms2_9.adoc         |     2 +-
 .../src/main/asciidoc/i18n/i18n_5.adoc             |     2 +-
 wicket-user-guide/src/main/asciidoc/jee/jee_4.adoc |     7 +
 .../src/main/asciidoc/{maven.adoc => karaf.adoc}   |     0
 .../src/main/asciidoc/karaf/karaf_1.adoc           |    75 +
 .../main/asciidoc/keepControl/keepControl_1.adoc   |    10 +-
 .../src/main/asciidoc/maven/maven_2.adoc           |     1 -
 .../main/asciidoc/modelsforms/modelsforms_7.adoc   |     2 +-
 .../src/main/asciidoc/resources/resources_4.adoc   |     2 +-
 .../src/main/asciidoc/security/security_5.adoc     |     6 +-
 wicket-user-guide/src/main/asciidoc/single.adoc    |     9 +
 .../src/main/asciidoc/testing/testing_1.adoc       |     4 +-
 wicket-util/pom.xml                                |    13 +-
 .../main/java/javax/servlet/ServletContext.java    |     2 -
 wicket-util/src/main/java/module-info.java         |     6 +-
 .../java/org/apache/wicket/util/diff/AddDelta.java |    15 -
 .../org/apache/wicket/util/diff/ChangeDelta.java   |    15 -
 .../org/apache/wicket/util/diff/DeleteDelta.java   |    15 -
 .../java/org/apache/wicket/util/diff/Delta.java    |     2 -
 .../apache/wicket/util/diff/myers/MyersDiff.java   |     2 -
 .../apache/wicket/util/encoding/UrlEncoder.java    |     2 +-
 .../org/apache/wicket/util/io/BOMInputStream.java  |     9 +-
 .../org/apache/wicket/util/io/Connections.java     |     8 +-
 .../java/org/apache/wicket/util/lang/Args.java     |    22 +
 .../wicket/util/listener/ListenerCollection.java   |     3 +-
 .../org/apache/wicket/util/string/Strings.java     |    52 +-
 wicket-util/src/test/java/log4j.properties         |    18 -
 .../convert/converter/LocalDateConverterTest.java  |     2 +-
 .../converter/LocalDateTimeConverterTest.java      |     2 +-
 .../convert/converter/LocalTimeConverterTest.java  |     2 +-
 .../converter/ZonedDateTimeConverterTest.java      |     2 +-
 .../org/apache/wicket/util/io/ConnectionsTest.java |     2 +-
 .../wicket/util/resource/ResourceUtilsTest.java    |    18 +-
 .../org/apache/wicket/util/size/BytesTest.java     |    32 +-
 .../util/string/AppendingStringBufferTest.java     |     5 +-
 .../util/string/PrependingStringBufferTest.java    |     5 +-
 .../apache/wicket/util/string/StringValueTest.java |    10 +-
 .../org/apache/wicket/util/string/StringsTest.java |    51 +-
 .../apache/wicket/util/value/AttributeMapTest.java |     4 +-
 .../org/apache/wicket/util/value/ValueMapTest.java |    14 +-
 .../src/test/java/simplelogger.properties          |    15 +-
 wicket-velocity/pom.xml                            |     5 +-
 wicket-velocity/src/main/java/module-info.java     |     2 +-
 wicket/pom.xml                                     |    43 +
 wicket/src/main/filtered-resources/features.xml    |    25 +
 373 files changed, 15405 insertions(+), 5450 deletions(-)
 delete mode 100644 .travis.yml
 copy testing/wicket-threadtest/src/main/java/{log4j.properties => simplelogger.properties} (65%)
 delete mode 100644 wicket-auth-roles/src/test/java/log4j.properties
 copy testing/wicket-threadtest/src/main/java/log4j.properties => wicket-auth-roles/src/test/java/simplelogger.properties (65%)
 delete mode 100644 wicket-bean-validation/src/test/java/log4j.properties
 copy testing/wicket-threadtest/src/main/java/log4j.properties => wicket-bean-validation/src/test/java/simplelogger.properties (65%)
 delete mode 100644 wicket-core/src/main/java/org/apache/wicket/model/AbstractWrapModel.java
 create mode 100644 wicket-core/src/main/java/org/apache/wicket/pageStore/crypt/GCMSIVCrypter.java
 create mode 100644 wicket-core/src/main/java/org/apache/wicket/protocol/http/MultipartFormComponentListener.java
 delete mode 100644 wicket-core/src/test/java/log4j.properties
 create mode 100644 wicket-core/src/test/java/org/apache/wicket/core/request/handler/logger/ListenerLogDataTest.java
 delete mode 100644 wicket-core/src/test/java/org/apache/wicket/core/util/Log4jEventHistory.java
 create mode 100644 wicket-core/src/test/java/org/apache/wicket/markup/head/filter/DeferredPage_AjaxExpected.html
 create mode 100644 wicket-core/src/test/java/org/apache/wicket/pageStore/AbstractPersistentPageStoreTest.java
 create mode 100644 wicket-core/src/test/java/org/apache/wicket/pageStore/DefaultPageContextTest.java
 copy wicket-core/src/{main/java/org/apache/wicket/protocol/http/IMultipartWebRequest.java => test/java/org/apache/wicket/protocol/http/MultipartFormComponentListenerBean.java} (51%)
 create mode 100644 wicket-core/src/test/java/org/apache/wicket/protocol/http/MultipartFormComponentListenerPage.html
 create mode 100644 wicket-core/src/test/java/org/apache/wicket/protocol/http/MultipartFormComponentListenerPage.java
 create mode 100644 wicket-core/src/test/java/org/apache/wicket/protocol/http/MultipartFormComponentListenerTest.java
 copy testing/wicket-threadtest/src/main/java/log4j.properties => wicket-core/src/test/java/simplelogger.properties (65%)
 delete mode 100644 wicket-examples/src/main/java/log4j.properties
 create mode 100644 wicket-examples/src/main/java/org/apache/wicket/examples/websocket/JSR356Session.java
 create mode 100644 wicket-examples/src/main/java/org/apache/wicket/examples/websocket/WebSocketPushUpdateProgressDemoPage.html
 copy wicket-examples/src/main/java/org/apache/wicket/examples/{cdi/ConversationPage3.java => websocket/WebSocketPushUpdateProgressDemoPage.java} (63%)
 copy wicket-examples/src/main/java/org/apache/wicket/examples/websocket/{HomePage.html => progress/ProgressBarTogglePanel.html} (56%)
 create mode 100644 wicket-examples/src/main/java/org/apache/wicket/examples/websocket/progress/ProgressBarTogglePanel.java
 create mode 100644 wicket-examples/src/main/java/org/apache/wicket/examples/websocket/progress/ProgressUpdater.java
 copy testing/wicket-threadtest/src/main/java/log4j.properties => wicket-examples/src/main/java/simplelogger.properties (56%)
 delete mode 100644 wicket-extensions/src/test/java/.gitignore
 copy wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/registry/IKey.java => wicket-ioc/src/main/java/org/apache/wicket/proxy/IProxyFactory.java (71%)
 create mode 100644 wicket-ioc/src/main/java/org/apache/wicket/proxy/bytebuddy/ByteBuddyInterceptor.java
 create mode 100644 wicket-ioc/src/main/java/org/apache/wicket/proxy/bytebuddy/ByteBuddyProxyFactory.java
 create mode 100644 wicket-ioc/src/main/java/org/apache/wicket/proxy/jdk/JdkProxyFactory.java
 rename wicket-ioc/src/main/java/org/apache/wicket/proxy/objenesis/{ObjenesisCGLibInterceptor.java => IInstantiator.java} (51%)
 copy wicket-examples/src/main/java/org/apache/wicket/examples/cdi/ConversationPage3.java => wicket-ioc/src/main/java/org/apache/wicket/proxy/objenesis/ObjenesisInstantiator.java (63%)
 delete mode 100644 wicket-ioc/src/main/java/org/apache/wicket/proxy/objenesis/ObjenesisProxyFactory.java
 delete mode 100644 wicket-ioc/src/main/java/org/apache/wicket/proxy/objenesis/ObjenesisProxyReplacement.java
 rename wicket-ioc/src/test/java/org/apache/wicket/proxy/{ => packageprivate}/PackagePrivateConcreteObject.java (81%)
 create mode 100644 wicket-ioc/src/test/java/org/apache/wicket/proxy/packageprivate/PackagePrivateTest.java
 copy wicket-velocity/src/main/java/module-info.java => wicket-ioc/src/test/java/org/apache/wicket/proxy/util/NoDefaultConstructor.java (77%)
 create mode 100644 wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/IWebSocketSession.java
 copy wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/{registry/IKey.java => IWebSocketSessionConfigurer.java} (63%)
 copy wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/registry/{IKey.java => AbstractKey.java} (78%)
 delete mode 100644 wicket-native-websocket/wicket-native-websocket-core/src/test/java/log4j.properties
 copy testing/wicket-threadtest/src/main/java/log4j.properties => wicket-native-websocket/wicket-native-websocket-core/src/test/java/simplelogger.properties (65%)
 create mode 100644 wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/JavaxWebSocketSession.java
 delete mode 100644 wicket-request/src/test/java/log4j.properties
 copy testing/wicket-threadtest/src/main/java/log4j.properties => wicket-request/src/test/java/simplelogger.properties (65%)
 copy wicket-user-guide/src/main/asciidoc/{maven.adoc => karaf.adoc} (100%)
 create mode 100644 wicket-user-guide/src/main/asciidoc/karaf/karaf_1.adoc
 delete mode 100644 wicket-util/src/test/java/log4j.properties
 rename testing/wicket-threadtest/src/main/java/log4j.properties => wicket-util/src/test/java/simplelogger.properties (65%)
 create mode 100644 wicket/src/main/filtered-resources/features.xml


[wicket] 01/01: removed queuing

Posted by sv...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

svenmeier pushed a commit to branch remove-queuing
in repository https://gitbox.apache.org/repos/asf/wicket.git

commit 5a73dd1f7e309824a7b12994f4add41ba68b20ae
Author: Sven Meier <sv...@apache.org>
AuthorDate: Wed Jun 2 23:06:39 2021 +0200

    removed queuing
---
 .../java/org/apache/wicket/ChildToDequeueType.java |   49 -
 .../java/org/apache/wicket/DequeueContext.java     |  301 ------
 .../java/org/apache/wicket/DequeueTagAction.java   |   27 -
 .../main/java/org/apache/wicket/IQueueRegion.java  |   61 --
 .../java/org/apache/wicket/MarkupContainer.java    |  348 ------
 .../src/main/java/org/apache/wicket/Page.java      |    3 +-
 .../apache/wicket/markup/html/border/Border.java   |  147 +--
 .../markup/html/form/FormComponentPanel.java       |    3 +-
 .../apache/wicket/markup/html/panel/Fragment.java  |   17 +-
 .../org/apache/wicket/markup/html/panel/Panel.java |   26 +-
 .../wicket/markup/repeater/AbstractRepeater.java   |   32 +-
 .../apache/wicket/BehavioursDetachTestPage.java    |    2 +-
 .../apache/wicket/OnComponentTagListenerTest.java  |    5 +-
 .../markup/html/border/BorderWithFormPage.java     |   40 -
 .../markup/html/border/ComponentBorderTest.java    |   24 -
 .../markup/html/internal/AjaxEnclosurePage_4.java  |    8 +-
 .../html/internal/ListViewInContainerPage.java     |    4 +-
 .../wicket/markupFragments/MarkupFragmentTest.java |    3 -
 .../queueing/ComponentQueueingPerformanceTest.java |  400 -------
 .../wicket/queueing/ComponentQueueingTest.java     | 1135 --------------------
 .../queueing/transparentresolvers/SubPage.java     |    2 +-
 .../TransparentContainerQueuePage.java             |    2 +-
 .../ajax/builtin/modal/ModalDialogPage.java        |   39 +-
 23 files changed, 42 insertions(+), 2636 deletions(-)

diff --git a/wicket-core/src/main/java/org/apache/wicket/ChildToDequeueType.java b/wicket-core/src/main/java/org/apache/wicket/ChildToDequeueType.java
deleted file mode 100644
index 29cfdfefcf..0000000000
--- a/wicket-core/src/main/java/org/apache/wicket/ChildToDequeueType.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket;
-
-import org.apache.wicket.markup.html.border.Border;
-
-public enum ChildToDequeueType
-{
-	NULL, GENERIC_COMPONENT, MARKUP_CONTAINER, BORDER, QUEUE_REGION;
-	
-	public static ChildToDequeueType fromChild(Component child) 
-	{
-		if (child == null)
-		{
-			return NULL;
-		}
-		
-		if (child instanceof Border)
-		{
-			return BORDER;
-		}
-		
-		if (child instanceof IQueueRegion)
-		{
-			return QUEUE_REGION;
-		}
-		
-		if (child instanceof MarkupContainer)
-		{
-			return MARKUP_CONTAINER;
-		}
-		
-		return GENERIC_COMPONENT;
-	}
-}
diff --git a/wicket-core/src/main/java/org/apache/wicket/DequeueContext.java b/wicket-core/src/main/java/org/apache/wicket/DequeueContext.java
deleted file mode 100644
index 9c431e9310..0000000000
--- a/wicket-core/src/main/java/org/apache/wicket/DequeueContext.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket;
-
-import java.util.ArrayDeque;
-
-import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.IMarkupFragment;
-import org.apache.wicket.markup.MarkupElement;
-
-/**
- * Context for component dequeueing. Keeps track of markup position and container stack.
- * 
- * @author igor
- *
- */
-public final class DequeueContext
-{
-	private final IMarkupFragment markup;
-	private int index;
-	private ComponentTag next;
-	private ArrayDeque<ComponentTag> tags = new ArrayDeque<>();
-	private final boolean skipFirst;
-	private ComponentTag first;
-
-	private ArrayDeque<MarkupContainer> containers = new ArrayDeque<>();
-
-	/** A bookmark for the DequeueContext stack */
-	public static final class Bookmark
-	{
-		private final int index;
-		private final ComponentTag next;
-		private final ArrayDeque<ComponentTag> tags;
-		private final ArrayDeque<MarkupContainer> containers;
-
-		private Bookmark(DequeueContext parser)
-		{
-			this.index = parser.index;
-			this.next = parser.next;
-			this.tags = new ArrayDeque<>(parser.tags);
-			this.containers = new ArrayDeque<>(parser.containers);
-		}
-
-		private void restore(DequeueContext parser)
-		{
-			parser.index = index;
-			parser.next = next;
-			parser.tags = new ArrayDeque<>(tags);
-			parser.containers = new ArrayDeque<>(containers);
-		}
-	}
-
-	public DequeueContext(IMarkupFragment markup, MarkupContainer root, boolean skipFirst)
-	{
-		this.markup = markup;
-		this.skipFirst = skipFirst;
-		this.containers.push(root);
-		this.next = nextTag();
-	}
-
-	/**
-	 * Saves the state of the context into a bookmark which can later be used to restore it.
-	 */
-	public Bookmark save()
-	{
-		return new Bookmark(this);
-	}
-
-	/**
-	 * Restores the state of the context from the bookmark
-	 * 
-	 * @param bookmark
-	 */
-	public void restore(Bookmark bookmark)
-	{
-		bookmark.restore(this);
-	}
-
-	/**
-	 * Peeks markup tag that would be retrieved by call to {@link #takeTag()}
-	 * 
-	 * @return
-	 */
-	public ComponentTag peekTag()
-	{
-		return next;
-	}
-
-	/**
-	 * Retrieves the next markup tag
-	 * 
-	 * @return
-	 */
-	public ComponentTag takeTag()
-	{
-		ComponentTag taken = next;
-
-		if (taken == null)
-		{
-			return null;
-		}
-
-		if (taken.isOpen() && !taken.hasNoCloseTag())
-		{
-			tags.push(taken);
-		}
-		else if (tags.size() > 0 && taken.closes(tags.peek()))
-		{
-			tags.pop();
-		}
-		next = nextTag();
-		return taken;
-	}
-
-	/**
-	 * Skips to the closing tag of the tag retrieved from last call to {@link #takeTag()}
-	 */
-	public void skipToCloseTag()
-	{
-		while (!next.closes(tags.peek()))
-		{
-			next = nextTag();
-		}
-	}
-
-	private ComponentTag nextTag()
-	{
-		if (skipFirst && first == null)
-		{
-			for (; index < markup.size(); index++)
-			{
-				MarkupElement element = markup.get(index);
-				if (element instanceof ComponentTag)
-				{
-					first = (ComponentTag)element;
-					index++;
-					break;
-				}
-			}
-		}
-
-		for (; index < markup.size(); index++)
-		{
-			MarkupElement element = markup.get(index);
-			if (element instanceof ComponentTag)
-			{
-				ComponentTag tag = (ComponentTag)element;
-
-				if (tag.isOpen() || tag.isOpenClose())
-				{
-					DequeueTagAction action = canDequeueTag(tag);
-					switch (action)
-					{
-						case IGNORE :
-							continue;
-						case DEQUEUE :
-							index++;
-							return tag;
-						case SKIP : // skip to close tag
-							boolean found = false;
-							for (; index < markup.size(); index++)
-							{
-								if ((markup.get(index) instanceof ComponentTag)
-									&& markup.get(index).closes(tag))
-								{
-									found = true;
-									break;
-								}
-							}
-							if (!found)
-							{
-								throw new IllegalStateException(String.format(
-									"Could not find close tag for tag '%s' in markup: %s ", tag,
-									markup));
-							}
-
-					}
-				}
-				else
-				{
-					// closed tag
-					ComponentTag open = tag.isClose() ? tag.getOpenTag() : tag;
-
-					if (skipFirst && first != null && open == first)
-					{
-						continue;
-					}
-
-					switch (canDequeueTag(open))
-					{
-						case DEQUEUE :
-							index++;
-							return tag;
-						case IGNORE :
-							continue;
-						case SKIP :
-							throw new IllegalStateException(String.format(
-								"Should not see closed tag of skipped open tag '%s' in markup:%s",
-								tag, markup));
-					}
-				}
-			}
-		}
-		return null;
-	}
-
-	private DequeueTagAction canDequeueTag(ComponentTag open)
-	{
-		if (containers.size() < 1)
-		{
-			// TODO queueing message: called too early
-			throw new IllegalStateException();
-		}
-
-		DequeueTagAction action;
-		for (MarkupContainer container : containers)
-		{
-			action = container.canDequeueTag(open);
-			if (action != null)
-			{
-				return action;
-			}
-		}
-		return DequeueTagAction.IGNORE;
-	}
-
-	/**
-	 * Checks if the tag returned by {@link #peekTag()} is either open or open-close.
-	 * 
-	 * @return
-	 */
-	public boolean isAtOpenOrOpenCloseTag()
-	{
-		ComponentTag tag = peekTag();
-		return tag != null && (tag.isOpen() || tag.isOpenClose());
-	}
-
-	/**
-	 * Retrieves the container on the top of the containers stack
-	 * 
-	 * @return
-	 */
-	public MarkupContainer peekContainer()
-	{
-		return containers.peek();
-	}
-
-	/**
-	 * Pushes a container onto the container stack
-	 * 
-	 * @param container
-	 */
-	public void pushContainer(MarkupContainer container)
-	{
-		containers.push(container);
-	}
-
-	/**
-	 * Pops a container from the container stack
-	 * 
-	 * @return
-	 */
-	public MarkupContainer popContainer()
-	{
-		return containers.pop();
-	}
-
-	/**
-	 * Searches the container stack for a component that can be dequeude
-	 * 
-	 * @param tag
-	 * @return
-	 */
-	public Component findComponentToDequeue(ComponentTag tag)
-	{
-		for (MarkupContainer container : containers)
-		{
-			Component child = container.findComponentToDequeue(tag);
-			if (child != null)
-			{
-				return child;
-			}
-		}
-		return null;
-	}
-
-}
diff --git a/wicket-core/src/main/java/org/apache/wicket/DequeueTagAction.java b/wicket-core/src/main/java/org/apache/wicket/DequeueTagAction.java
deleted file mode 100644
index 461cac4776..0000000000
--- a/wicket-core/src/main/java/org/apache/wicket/DequeueTagAction.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket;
-
-public enum DequeueTagAction
-{
-	/** dequeue the tag */
-	DEQUEUE,
-	/** skip this tag and all its children */
-	SKIP,
-	/** ignore this tag, skip it but do not skip its children */
-	IGNORE;
-}
diff --git a/wicket-core/src/main/java/org/apache/wicket/IQueueRegion.java b/wicket-core/src/main/java/org/apache/wicket/IQueueRegion.java
deleted file mode 100644
index b6ef154bd6..0000000000
--- a/wicket-core/src/main/java/org/apache/wicket/IQueueRegion.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket;
-
-import org.apache.wicket.markup.IMarkupFragment;
-
-
-/**
- * Demarcates components that act as a root can dequeue children. These are usually components with
- * associated markup since the markup is needed to dequeue.
- * 
- * It is also important to note that components queued outside of a region cannot be dequeued into
- * it since regions act as roots for the dequeue process because they contain the markup. As such,
- * for example, a component queued in a page cannot be dequeued into a page child that is a panel
- * because a panel is an {@link IQueueRegion}.
- * 
- * @author igor
- * 
- */
-public interface IQueueRegion
-{
-	/**
-	 * Creates a new {@link DequeueContext} that will be used to dequeue children of this region.
-	 * 
-	 * Usually containers will create a context with their associated markup by getting it via
-	 * {@link MarkupContainer#getAssociatedMarkup()}, but components that do not render markup in a
-	 * standard way (such as repeaters and borders) may choose to override this method to implement
-	 * custom behavior for the dequeueing process.
-	 */
-	DequeueContext newDequeueContext();
-
-	/**
-	 * Starts component dequeueing on this {@link IQueueRegion}. This is the entry point into the
-	 * dequeuing process, it creates the {@link DequeueContext} and delegates the operation to the
-	 * {@link org.apache.wicket.MarkupContainer#dequeue(DequeueContext)} method which performs the
-	 * actual dequeueing. The context's markup is retrieved using the {@link MarkupContainer#getAssociatedMarkup()}.
-	 */
-	void dequeue();
-	
-	/**
-	 * Returns the markup to use for queuing. Normally, this is the markup of the component 
-	 * implementing this interface.
-	 * 
-	 * @return the markup to use for queuing
-	 */
-	IMarkupFragment getRegionMarkup();
-}
diff --git a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
index 8703c61635..cfb0809e9e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
@@ -35,7 +35,6 @@ import org.apache.commons.collections4.map.LinkedMap;
 import org.apache.wicket.behavior.OutputMarkupContainerClassNameBehavior;
 import org.apache.wicket.core.util.string.ComponentStrings;
 import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.ComponentTag.IAutoComponentFactory;
 import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.Markup;
 import org.apache.wicket.markup.MarkupElement;
@@ -46,7 +45,6 @@ import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.markup.MarkupType;
 import org.apache.wicket.markup.WicketTag;
 import org.apache.wicket.markup.html.border.Border;
-import org.apache.wicket.markup.html.form.AutoLabelResolver;
 import org.apache.wicket.markup.resolver.ComponentResolvers;
 import org.apache.wicket.model.IComponentInheritedModel;
 import org.apache.wicket.model.IModel;
@@ -1780,186 +1778,6 @@ public abstract class MarkupContainer extends Component implements Iterable<Comp
 
 		modCounter++;
 		removals_clear();
-
-		if (queue != null && !queue.isEmpty() && hasBeenRendered())
-		{
-			throw new WicketRuntimeException(
-					String.format("Detach called on component with id '%s' while it had a non-empty queue: %s",
-							getId(), queue));
-		}
-	}
-
-	private transient ComponentQueue queue;
-
-	/**
-	 * Queues one or more components to be dequeued later. The advantage of this method over the
-	 * {@link #add(Component...)} method is that the component does not have to be added to its
-	 * direct parent, only to a parent upstream; it will be dequeued into the correct parent using
-	 * the hierarchy defined in the markup. This allows the component hierarchy to be maintained only
-	 * in markup instead of in markup and in java code; affording designers and developers more
-	 * freedom when moving components in markup.
-	 * 
-	 * @param components
-	 *             the components to queue
-	 * @return {@code this} for method chaining             
-	 */
-	public MarkupContainer queue(Component... components)
-	{
-		if (queue == null)
-		{
-			queue = new ComponentQueue();
-		}
-		queue.add(components);
-		
-		Page page = findPage();
-
-		if (page != null)
-		{
-			dequeue();			
-		}
-
-		return this;
-	}
-
-	/**
-	 * @see IQueueRegion#dequeue()
-	 */
-	public void dequeue()
-	{
-		if (this instanceof IQueueRegion)
-		{
-			DequeueContext dequeue = newDequeueContext();
-			dequeuePreamble(dequeue);
-		}
-		else
-		{
-			MarkupContainer queueRegion = (MarkupContainer)findParent(IQueueRegion.class);
-
-			if (queueRegion == null)
-			{
-				return;
-			}
-			
-			MarkupContainer anchestor = this;
-			boolean hasQueuedChildren = !isQueueEmpty();
-			
-			while (!hasQueuedChildren && anchestor != queueRegion)
-			{
-				anchestor = anchestor.getParent();
-				hasQueuedChildren = !anchestor.isQueueEmpty();
-			}
-			
-			if (hasQueuedChildren && !queueRegion.getRequestFlag(RFLAG_CONTAINER_DEQUEING))
-			{
-				queueRegion.dequeue();
-			}
-		}
-	}
-
-	@Override
-	protected void onInitialize()
-	{
-		super.onInitialize();
-		dequeue();
-	}
-	/**
-	 * @return {@code true} when one or more components are queued
-	 */
-	private boolean isQueueEmpty()
-	{
-		return queue == null || queue.isEmpty();
-	}
-
-	/**
-	 * @return {@code true} when this markup container is a queue region
-	 */
-	private boolean isQueueRegion() 
-	{
-		return IQueueRegion.class.isInstance(this);
-	}
-
-	/**
-	 * Run preliminary operations before running {@link #dequeue(DequeueContext)}. More in detail it
-	 * throws an exception if the container is already dequeuing, and it also takes care of setting
-	 * flag {@code RFLAG_CONTAINER_DEQUEING} to true before running {@link #dequeue(DequeueContext)}
-	 * and setting it back to false after dequeuing is completed.
-	 * 
-	 * @param dequeue
-	 *            the dequeue context to use
-	 */
-	protected void dequeuePreamble(DequeueContext dequeue)
-	{
-		if (getRequestFlag(RFLAG_CONTAINER_DEQUEING))
-		{
-			throw new IllegalStateException("This container is already dequeing: " + this);
-		}
-
-		setRequestFlag(RFLAG_CONTAINER_DEQUEING, true);
-		try
-		{
-			if (dequeue == null)
-			{
-				return;
-			}
-
-			if (dequeue.peekTag() != null)
-			{
-				dequeue(dequeue);
-			}
-		}
-		finally
-		{
-			setRequestFlag(RFLAG_CONTAINER_DEQUEING, false);
-		}
-	}
-
-	/**
-	 * Dequeues components. The default implementation iterates direct children of this container
-	 * found in its markup and tries to find matching
-	 * components in queues filled by a call to {@link #queue(Component...)}. It then delegates the
-	 * dequeueing to these children.
-	 * 
-	 * 
-	 * Certain components that implement custom markup behaviors (such as repeaters and borders)
-	 * override this method to bring dequeueing in line with their custom markup handling.
-	 * 
-	 * @param dequeue
-	 *             the dequeue context to use     
-	 */
-	public void dequeue(DequeueContext dequeue)
-	{
-		while (dequeue.isAtOpenOrOpenCloseTag())
-		{
-			ComponentTag tag = dequeue.takeTag();
-	
-			// see if child is already added to parent
-			Component child = findChildComponent(tag);
-
-			if (child == null)
-			{
-				// the container does not yet have a child with this id, see if we can
-				// dequeue
-				child = dequeue.findComponentToDequeue(tag);
-				
-				//if tag has an autocomponent factory let's use it
-				if (child == null && tag.getAutoComponentFactory() != null)
-				{
-					IAutoComponentFactory autoComponentFactory = tag.getAutoComponentFactory();
-					child = autoComponentFactory.newComponent(this, tag);
-				}
-				
-				if (child != null)
-				{
-					addDequeuedComponent(child, tag);
-				}
-			}
-			
-			if (tag.isOpen() && !tag.hasNoCloseTag())
-            {
-			    dequeueChild(child, tag, dequeue);
-            }
-		}
-
 	}
 
 	/**
@@ -1974,172 +1792,6 @@ public abstract class MarkupContainer extends Component implements Iterable<Comp
 		return get(tag.getId());
 	}
 	
-	/**
-	 * Propagates dequeuing to child component.
-	 * 
-	 * @param child
-	 *             the child component
-	 * @param tag
-	 *             the child tag
-	 * @param dequeue
-	 *             the dequeue context to use
-	 */
-	private void dequeueChild(Component child, ComponentTag tag, DequeueContext dequeue)
-	{
-		ChildToDequeueType childType = ChildToDequeueType.fromChild(child);
-		
-		if (childType == ChildToDequeueType.QUEUE_REGION ||
-			childType == ChildToDequeueType.BORDER)
-		{
-			((IQueueRegion)child).dequeue();			
-		}
-		
-		if (childType == ChildToDequeueType.BORDER) 
-		{
-            Border childContainer = (Border)child;
-            // propagate dequeuing to border's body
-            MarkupContainer body = childContainer.getBodyContainer();
-
-            dequeueChildrenContainer(dequeue, body);
-		}
-		
-		if (childType == ChildToDequeueType.MARKUP_CONTAINER)
-		{
-            // propagate dequeuing to containers
-            MarkupContainer childContainer = (MarkupContainer)child;
-
-            dequeueChildrenContainer(dequeue, childContainer);			
-		}
-		
-		if (childType == ChildToDequeueType.NULL || 
-			childType == ChildToDequeueType.QUEUE_REGION)
-		{
-			dequeue.skipToCloseTag();
-		}
-
-		// pull the close tag off
-		ComponentTag close = dequeue.takeTag();
-		do
-		{
-			if (close != null && close.closes(tag))
-			{
-				return;
-			}
-		} while ((close = dequeue.takeTag()) != null);
-
-		throw new IllegalStateException(String.format("Could not find the closing tag for '%s'", tag));
-	}
-
-    private void dequeueChildrenContainer(DequeueContext dequeue, MarkupContainer child)
-    {
-        dequeue.pushContainer(child);
-        child.dequeue(dequeue);
-        dequeue.popContainer();
-    }
-
-    /** @see IQueueRegion#newDequeueContext() */
-	public DequeueContext newDequeueContext()
-	{
-		IMarkupFragment markup = getRegionMarkup();
-		if (markup == null)
-		{
-			return null;
-		}
-
-		return new DequeueContext(markup, this, false);
-	}
-
-	/** @see IQueueRegion#getRegionMarkup() */
-	public IMarkupFragment getRegionMarkup()
-	{
-		return getAssociatedMarkup();
-	}
-
-	/**
-	 * Checks if this container can dequeue a child represented by the specified tag. This method
-	 * should be overridden when containers can dequeue components represented by non-standard tags.
-	 * For example, borders override this method and dequeue their body container when processing
-	 * the body tag.
-	 * 
-	 * By default all {@link ComponentTag}s are supported as well as {@link WicketTag}s that return
-	 * a non-null value from {@link WicketTag#getAutoComponentFactory()} method.
-	 * 
-	 * @param tag
-	 */
-	protected DequeueTagAction canDequeueTag(ComponentTag tag)
-	{
-		if (tag instanceof WicketTag)
-		{
-			WicketTag wicketTag = (WicketTag)tag;
-			if (wicketTag.isContainerTag())
-			{
-				return DequeueTagAction.DEQUEUE;
-			}
-			else if (wicketTag.getAutoComponentFactory() != null)
-			{
-				return DequeueTagAction.DEQUEUE;
-			}
-			else if (wicketTag.isFragmentTag())
-			{
-				return DequeueTagAction.SKIP;
-			}
-			else if (wicketTag.isChildTag())
-			{
-				return DequeueTagAction.IGNORE;
-			}
-			else if (wicketTag.isHeadTag())
-			{
-				return DequeueTagAction.SKIP;
-			}
-			else if (wicketTag.isLinkTag())
-			{
-				return DequeueTagAction.DEQUEUE;
-			}
-			else
-			{
-				return null; // don't know
-			}
-		}
-		
-		//if is a label tag, ignore it
-		if (tag.isAutoComponentTag() 
-			&& tag.getId().startsWith(AutoLabelResolver.LABEL_ATTR))
-		{
-			return DequeueTagAction.IGNORE;
-		}
-		
-		return DequeueTagAction.DEQUEUE;
-	}
-
-	/**
-	 * Queries this container to find a child that can be dequeued that matches the specified tag.
-	 * The default implementation will check if there is a component in the queue that has the same
-	 * id as a tag, but sometimes custom tags can be dequeued and in those situations this method
-	 * should be overridden.
-	 * 
-	 * @param tag
-	 * @return
-	 */
-	public Component findComponentToDequeue(ComponentTag tag)
-	{
-		return queue == null ? null : queue.remove(tag.getId());
-	}
-
-	/**
-	 * Adds a dequeued component to this container. This method should rarely be overridden because
-	 * the common case of simply forwarding the component to
-	 * {@link MarkupContainer#add(Component...)} method should cover most cases. Components that
-	 * implement a custom hierarchy, such as borders, may wish to override it to support edge-case
-	 * non-standard behavior.
-	 * 
-	 * @param component
-	 * @param tag
-	 */
-	protected void addDequeuedComponent(Component component, ComponentTag tag)
-	{
-		add(component);
-	}
-
 	/**
 	 * Returns a sequential {@code Stream} with the direct children of this markup container as its
 	 * source. This stream doesn't traverse the component tree.
diff --git a/wicket-core/src/main/java/org/apache/wicket/Page.java b/wicket-core/src/main/java/org/apache/wicket/Page.java
index 956b9b59af..391200f35a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Page.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Page.java
@@ -84,8 +84,7 @@ import org.slf4j.LoggerFactory;
  */
 public abstract class Page extends MarkupContainer
 	implements
-		IRequestablePage,
-		IQueueRegion
+		IRequestablePage
 {
 	/** True if the page hierarchy has been modified in the current request. */
 	private static final int FLAG_IS_DIRTY = FLAG_RESERVED3;
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java
index 1feea65b2d..b36f3e5f62 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/border/Border.java
@@ -17,9 +17,6 @@
 package org.apache.wicket.markup.html.border;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.DequeueContext;
-import org.apache.wicket.DequeueTagAction;
-import org.apache.wicket.IQueueRegion;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.IMarkupFragment;
@@ -28,8 +25,6 @@ import org.apache.wicket.markup.MarkupException;
 import org.apache.wicket.markup.MarkupFragment;
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.markup.TagUtils;
-import org.apache.wicket.markup.WicketTag;
-import org.apache.wicket.markup.html.MarkupUtil;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.panel.BorderMarkupSourcingStrategy;
 import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
@@ -137,7 +132,7 @@ import org.apache.wicket.util.lang.Args;
  * @author Jonathan Locke
  * @author Juergen Donnerstag
  */
-public abstract class Border extends WebMarkupContainer implements IComponentResolver, IQueueRegion
+public abstract class Border extends WebMarkupContainer implements IComponentResolver
 {
 	private static final long serialVersionUID = 1L;
 
@@ -166,7 +161,7 @@ public abstract class Border extends WebMarkupContainer implements IComponentRes
 		super(id, model);
 
 		body = new BorderBodyContainer(id + "_" + BODY);
-		queueToBorder(body);
+		addToBorder(body);
 	}
 	
 	/**
@@ -313,33 +308,6 @@ public abstract class Border extends WebMarkupContainer implements IComponentRes
 		return this;
 	}
 
-	@Override
-	public Border queue(Component... components)
-	{
-		getBodyContainer().queue(components);
-		return this;
-	}
-	
-	@Override
-	protected void onConfigure() 
-	{
-		super.onConfigure();
-		dequeue();
-	}
-	
-	/**
-	 * Queues children components to the Border itself
-	 *
-	 * @param children
-	 *            the children components to queue
-	 * @return this
-	 */
-	public Border queueToBorder(final Component... children)
-	{
-		super.queue(children);
-		return this;
-	}
-
 	/**
 	 * Removes child from the Border itself
 	 * 
@@ -455,7 +423,7 @@ public abstract class Border extends WebMarkupContainer implements IComponentRes
 	/**
 	 * The container to be associated with the &lt;wicket:body&gt; tag
 	 */
-	public class BorderBodyContainer extends WebMarkupContainer implements IQueueRegion
+	public class BorderBodyContainer extends WebMarkupContainer
 	{
 		private static final long serialVersionUID = 1L;
 
@@ -592,112 +560,5 @@ public abstract class Border extends WebMarkupContainer implements IComponentRes
 
 			return markup.find(child.getId());
 		}
-
-		@Override
-		public DequeueContext newDequeueContext()
-		{
-			Border border = findParent(Border.class);
-			IMarkupFragment fragment = border.getMarkup();
-
-			if (fragment == null)
-			{
-				return null;
-			}
-
-			return new DequeueContext(fragment, this, true);
-		}
-
-		@Override
-		public Component findComponentToDequeue(ComponentTag tag)
-		{
-			/*
-			 * the body container is allowed to search for queued components all
-			 * the way to the page even though it is an IQueueRegion so it can
-			 * find components queued below the border
-			 */
-
-			Component component = super.findComponentToDequeue(tag);
-			if (component != null)
-			{
-				return component;
-			}
-
-			MarkupContainer cursor = getParent();
-			while (cursor != null)
-			{
-				component = cursor.findComponentToDequeue(tag);
-				if (component != null)
-				{
-					return component;
-				}
-				if (cursor instanceof BorderBodyContainer)
-				{
-					// optimization - find call above would've already recursed
-					// to page
-					break;
-				}
-				cursor = cursor.getParent();
-			}
-			return null;
-		}
-	}
-
-	@Override
-	protected DequeueTagAction canDequeueTag(ComponentTag tag)
-	{
-		if (canDequeueBody(tag))
-		{
-			return DequeueTagAction.DEQUEUE;
-		}
-
-		return super.canDequeueTag(tag);
-	}
-
-	@Override
-	public Component findComponentToDequeue(ComponentTag tag)
-	{
-		if (canDequeueBody(tag))
-		{
-			//synch the tag id with the one of the body component
-			tag.setId(body.getId());
-		}
-		
-		return super.findComponentToDequeue(tag);
-	}
-
-	private boolean canDequeueBody(ComponentTag tag)
-	{
-		boolean isBodyTag = (tag instanceof WicketTag) && ((WicketTag)tag).isBodyTag();
-		
-		return isBodyTag;
-	}
-
-	@Override
-	protected void addDequeuedComponent(Component component, ComponentTag tag)
-	{
-		// components queued in border get dequeued into the border not into the body container
-		super.add(component);
-	}
-	
-	/**
-	 * Returns the markup inside &lt;wicket:border&gt; tag.
-	 * If such tag is not found, all the markup is returned.
-	 * 
-	 * @see IQueueRegion#getRegionMarkup() 
-	 */
-	@Override
-	public IMarkupFragment getRegionMarkup()
-	{
-		IMarkupFragment markup = super.getRegionMarkup();
-		
-		if (markup == null)
-		{
-			return markup;
-		}
-		
-		IMarkupFragment borderMarkup = MarkupUtil.findStartTag(markup, BORDER);
-		
-		return borderMarkup != null ? borderMarkup : markup;
 	}
-	
-}
+}
\ No newline at end of file
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java
index 50c4846376..1f2e14c59d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java
@@ -16,7 +16,6 @@
  */
 package org.apache.wicket.markup.html.form;
 
-import org.apache.wicket.IQueueRegion;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
 import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy;
@@ -109,7 +108,7 @@ import org.apache.wicket.util.visit.IVisitor;
  * @param <T>
  *            The model object type
  */
-public abstract class FormComponentPanel<T> extends FormComponent<T> implements IQueueRegion
+public abstract class FormComponentPanel<T> extends FormComponent<T>
 {
 	private static final long serialVersionUID = 1L;
 
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java
index 25e9b10d9f..3b3ae58b6b 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java
@@ -17,8 +17,6 @@
 package org.apache.wicket.markup.html.panel;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.DequeueContext;
-import org.apache.wicket.IQueueRegion;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -48,7 +46,7 @@ import org.apache.wicket.util.lang.Args;
  * 
  * @author Juergen Donnerstag
  */
-public class Fragment extends WebMarkupContainer implements IQueueRegion
+public class Fragment extends WebMarkupContainer
 {
 	private static final long serialVersionUID = 1L;
 
@@ -131,17 +129,4 @@ public class Fragment extends WebMarkupContainer implements IQueueRegion
 	{
 		return associatedMarkupId;
 	}
-
-
-	@Override
-	public DequeueContext newDequeueContext()
-	{
-		IMarkupFragment markup = getMarkupSourcingStrategy().getMarkup(this, null);
-		if (markup == null)
-		{
-			return null;
-		}
-
-		return new DequeueContext(markup, this, true);
-	}
 }
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Panel.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Panel.java
index ba3d9d9945..d8f51b6328 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Panel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Panel.java
@@ -16,7 +16,6 @@
  */
 package org.apache.wicket.markup.html.panel;
 
-import org.apache.wicket.IQueueRegion;
 import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.html.MarkupUtil;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -52,7 +51,7 @@ import org.apache.wicket.model.IModel;
  * @author Jonathan Locke
  * @author Juergen Donnerstag
  */
-public abstract class Panel extends WebMarkupContainer implements IQueueRegion
+public abstract class Panel extends WebMarkupContainer
 {
 	private static final long serialVersionUID = 1L;
 
@@ -83,25 +82,4 @@ public abstract class Panel extends WebMarkupContainer implements IQueueRegion
 	{
 		return PanelMarkupSourcingStrategy.get(false);
 	}
-	
-	/**
-	 * Returns the markup inside &lt;wicket:panel&gt; tag.
-	 * If such tag is not found, all the markup is returned.
-	 * 
-	 * @see IQueueRegion#getRegionMarkup() 
-	 */
-	@Override
-	public IMarkupFragment getRegionMarkup()
-	{
-		IMarkupFragment markup = super.getRegionMarkup();
-		
-		if (markup == null)
-		{
-			return markup;
-		}
-		
-		IMarkupFragment panelMarkup = MarkupUtil.findStartTag(markup, PANEL);
-		
-		return panelMarkup != null ? panelMarkup : markup;
-	}
-}
+}
\ No newline at end of file
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java b/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
index 25e320a642..3ea03ea475 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
@@ -21,9 +21,6 @@ import java.util.Iterator;
 import java.util.Set;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.DequeueContext;
-import org.apache.wicket.DequeueContext.Bookmark;
-import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.model.IModel;
@@ -158,31 +155,4 @@ public abstract class AbstractRepeater extends WebMarkupContainer
 	 */
 	protected abstract void onPopulate();
 
-	@Override
-	public void dequeue(DequeueContext dequeue)
-	{
-		if (size() > 0)
-		{
-			// essentially what we do is for every child replace the repeater with the child in
-			// dequeue container stack and run the dequeue on the child. we also take care to reset
-			// the state of the dequeue context after we process every child.
-
-			Bookmark bookmark = dequeue.save();
-
-			for (Component child : this)
-			{
-				if (child instanceof MarkupContainer)
-				{
-					dequeue.popContainer(); // pop the repeater
-					MarkupContainer container = (MarkupContainer) child;
-					dequeue.pushContainer(container);
-					container.dequeue(dequeue);
-					dequeue.restore(bookmark);
-				}
-			}
-		}
-
-		dequeue.skipToCloseTag();
-
-	}
-}
+}
\ No newline at end of file
diff --git a/wicket-core/src/test/java/org/apache/wicket/BehavioursDetachTestPage.java b/wicket-core/src/test/java/org/apache/wicket/BehavioursDetachTestPage.java
index 82b8f7334b..75b29238f6 100644
--- a/wicket-core/src/test/java/org/apache/wicket/BehavioursDetachTestPage.java
+++ b/wicket-core/src/test/java/org/apache/wicket/BehavioursDetachTestPage.java
@@ -39,7 +39,7 @@ public class BehavioursDetachTestPage extends WebPage {
             @Override
             public void onClick() {/*NoOp*/}
         };
-        queue(link);
+        add(link);
 
         // A behavior that causes the problem
         link.add(new VisibilityBehavior());
diff --git a/wicket-core/src/test/java/org/apache/wicket/OnComponentTagListenerTest.java b/wicket-core/src/test/java/org/apache/wicket/OnComponentTagListenerTest.java
index 0a588a0684..1c5757104d 100644
--- a/wicket-core/src/test/java/org/apache/wicket/OnComponentTagListenerTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/OnComponentTagListenerTest.java
@@ -102,13 +102,14 @@ class OnComponentTagListenerTest extends WicketTestCase {
 	static class TestPage extends WebPage implements IMarkupResourceStreamProvider {
 		private static final long serialVersionUID = 1L;
 
-		private Component c1, c2, c3;
+		private WebMarkupContainer c1, c2, c3;
 
 		TestPage() {
 			c1 = new WebMarkupContainer("c1");
 			c2 = new WebMarkupContainer("c2");
 			c3 = new WebMarkupContainer("c3");
-			queue(c1, c2, c3);
+			add(c1, c3);
+			c1.add(c2);
 		}
 
 		@Override
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/border/BorderWithFormPage.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/border/BorderWithFormPage.java
deleted file mode 100644
index e48567c339..0000000000
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/border/BorderWithFormPage.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.markup.html.border;
-
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.model.IModel;
-
-public class BorderWithFormPage extends WebPage {
-	private static final long serialVersionUID = 1L;
-	private TextField<String> field;
-
-	public BorderWithFormPage(IModel<String> model) {
-		super();
-		
-		WebMarkupContainer container = new WebMarkupContainer("borderContainer");
-		
-		BorderWithForm border = new BorderWithForm("formBorder");
-		
-		border.add(field = new TextField<>("text", model));
-		
-		container.add(border);
-		add(container);
-    }
-}
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/border/ComponentBorderTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/border/ComponentBorderTest.java
index 51c1f637ab..b80576265b 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/border/ComponentBorderTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/border/ComponentBorderTest.java
@@ -88,30 +88,6 @@ class ComponentBorderTest extends WicketTestCase
 		tester.assertComponentOnAjaxResponse(wrapper);
 	}
 
-	@Test
-	void borderWithForm() throws Exception
-	{
-		/*
-		 * Suppose we have a border like this:
-		 * 
-		 * <div wicket:id="border"> <form> <body/> </form> </div>
-		 * 
-		 * Any form components inside its body must be correctly submitted with the outer form.
-		 */
-		Model<String> model = Model.of("");
-		BorderWithFormPage page = new BorderWithFormPage(model);
-
-		tester.startPage(page);
-
-		FormTester formTester = tester
-			.newFormTester("borderContainer:formBorder:borderContainer:form");
-
-		formTester.setValue("formBorder_body:text", TEST_TEXT);
-		formTester.submit();
-
-		assertEquals(TEST_TEXT, model.getObject());
-	}
-
 	@Test
 	void borderWithEnclosurePage() throws Exception
 	{
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/AjaxEnclosurePage_4.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/AjaxEnclosurePage_4.java
index bdeb27d007..51fec72fea 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/AjaxEnclosurePage_4.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/AjaxEnclosurePage_4.java
@@ -17,10 +17,8 @@
 package org.apache.wicket.markup.html.internal;
 
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
 import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.model.PropertyModel;
@@ -49,14 +47,14 @@ public class AjaxEnclosurePage_4 extends WebPage
 	{
 
 		Form<?> form=new Form<Void>("form");
-		queue(form);
+		add(form);
 		
 		//nameLabel=new Label("nameLabel", "Name");
 		//queue(nameLabel);
 		
 		nameField=new TextField<String>("nameField", new PropertyModel<String>(this, "name"));
 		nameField.setOutputMarkupId(true);
-		queue(nameField);
+		form.add(nameField);
 
 		submit=new AjaxSubmitLink("submit") {
 			@Override
@@ -66,7 +64,7 @@ public class AjaxEnclosurePage_4 extends WebPage
 				target.add(nameField);
 			}
 		};
-		queue(submit);
+		form.add(submit);
 		
 	}
 
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/ListViewInContainerPage.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/ListViewInContainerPage.java
index cb9787f52d..ee38514bf0 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/ListViewInContainerPage.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/ListViewInContainerPage.java
@@ -50,10 +50,10 @@ public class ListViewInContainerPage extends BasePage
 			protected void populateItem(final ListItem<Integer> item)
 			{
 				final Label testenc = new Label("testenc", Model.of("enclosure " + item.getModelObject()));
-				item.queue(testenc);
+				item.add(testenc);
 
 				final Label testlib = new Label("testlib", Model.of("no enclosure " + item.getModelObject()));
-				item.queue(testlib);
+				item.add(testlib);
 			}
 		});
     }
diff --git a/wicket-core/src/test/java/org/apache/wicket/markupFragments/MarkupFragmentTest.java b/wicket-core/src/test/java/org/apache/wicket/markupFragments/MarkupFragmentTest.java
index 1a2a86f76e..78c54d402e 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markupFragments/MarkupFragmentTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markupFragments/MarkupFragmentTest.java
@@ -180,7 +180,6 @@ class MarkupFragmentTest extends WicketTestCase
 
 		assertNull(border.getBodyContainer().getAssociatedMarkup());
 
-		border.dequeue();
 		markup = border.getBodyContainer().getMarkup();
 		compareMarkupWithString(markup, "<wicket:body/>");
 
@@ -220,8 +219,6 @@ class MarkupFragmentTest extends WicketTestCase
 
 		assertNull(border.getBodyContainer().getAssociatedMarkup());
 
-		// See explanation in BaseBorder.BorderBodyContainer.getMarkup()
-		border.dequeue();
 		markup = border.getBodyContainer().getParent().getMarkup(border.getBodyContainer());
 		compareMarkupWithString(markup, "<wicket:body>333</wicket:body>");
 
diff --git a/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingPerformanceTest.java b/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingPerformanceTest.java
deleted file mode 100644
index 722478e122..0000000000
--- a/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingPerformanceTest.java
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.queueing;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.UUID;
-
-import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.Page;
-import org.apache.wicket.markup.IMarkupResourceStreamProvider;
-import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.markup.repeater.RefreshingView;
-import org.apache.wicket.markup.repeater.util.ModelIteratorAdapter;
-import org.apache.wicket.mock.MockApplication;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.LoadableDetachableModel;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.util.WicketTestTag;
-import org.apache.wicket.util.resource.IResourceStream;
-import org.apache.wicket.util.resource.StringResourceStream;
-import org.apache.wicket.util.tester.WicketTestCase;
-import org.apache.wicket.util.tester.WicketTester;
-import org.junit.jupiter.api.Tag;
-import org.junit.jupiter.api.Test;
-
-@Tag(WicketTestTag.SLOW)
-public class ComponentQueueingPerformanceTest extends WicketTestCase
-{
-	private void run(Class<? extends Page> pageClass)
-	{
-		WicketTester tester = new WicketTester(new MockApplication());
-		try
-		{
-			tester.startPage(pageClass);
-		}
-		finally
-		{
-			tester.destroy();
-		}
-	}
-
-	@Test
-	void performance()
-	{
-		final int warmup = 30;
-		final int performance = 60;
-
-		tester.startPage(AddContactsPage.class);
-
-		for (int i = 0; i < warmup; i++)
-		{
-			run(AddContactsPage.class);
-		}
-		long start = System.currentTimeMillis();
-		for (int i = 0; i < performance; i++)
-		{
-			run(AddContactsPage.class);
-		}
-		long end = System.currentTimeMillis();
-		long addDuration = end - start;
-
-		for (int i = 0; i < warmup; i++)
-		{
-			run(QueueContactsPage.class);
-		}
-		start = System.currentTimeMillis();
-		for (int i = 0; i < performance; i++)
-		{
-			run(QueueContactsPage.class);
-		}
-		end = System.currentTimeMillis();
-		long queueDuration = end - start;
-
-
-		System.out.println("add duration: " + addDuration + " queue duration: " + queueDuration);
-
-	}
-
-
-	@Test
-	void consistency()
-	{
-		tester.startPage(new QueueContactsPage());
-		String queue = tester.getLastResponseAsString();
-		tester.startPage(new AddContactsPage());
-		String add = tester.getLastResponseAsString();
-		assertEquals(queue, add);
-	}
-
-	private static class PhoneNumber
-	{
-		String id = UUID.randomUUID().toString();
-		String areacode = "234";
-		String prefix = "342";
-		String suffix = "3423";
-	}
-
-	private static class Address
-	{
-		String id = UUID.randomUUID().toString();
-		String street = "2343 Jsdfjsf St.";
-		String city = "Ksdfjsfs";
-		String state = "AS";
-		String zipcode = "32434";
-	}
-
-	private static class Contact
-	{
-		String id = UUID.randomUUID().toString();
-		String first = "Jlkjsf";
-		String last = "Kjwieojkjf";
-		Address address = new Address();
-		PhoneNumber work = new PhoneNumber();
-		PhoneNumber cell = new PhoneNumber();
-
-	}
-
-	private static Store store = new Store();
-
-	private static class Store
-	{
-		Map<String, PhoneNumber> phones = new HashMap<String, PhoneNumber>();
-		Map<String, Address> addresses = new HashMap<String, Address>();
-		Map<String, Contact> contacts = new HashMap<String, Contact>();
-
-		public <T> T get(Class<T> clazz, String id)
-		{
-			if (PhoneNumber.class.equals(clazz))
-			{
-				return (T)phones.get(id);
-			}
-			else if (Address.class.equals(clazz))
-			{
-				return (T)addresses.get(id);
-			}
-			else if (Contact.class.equals(clazz))
-			{
-				return (T)contacts.get(id);
-			}
-			throw new RuntimeException();
-		}
-
-		Store()
-		{
-			for (int i = 0; i < 250; i++)
-			{
-				Contact contact = new Contact();
-				contacts.put(contact.id, contact);
-			}
-		}
-
-	}
-
-	private static class ContactModel extends LoadableDetachableModel<Contact>
-	{
-		private String id;
-
-		ContactModel(Contact contact)
-		{
-			super(contact);
-			this.id = contact.id;
-		}
-
-		@Override
-		protected Contact load()
-		{
-			return store.contacts.get(id);
-		}
-
-	}
-
-	private static abstract class AbstractPhonePanel extends TestPanel
-	{
-		AbstractPhonePanel(String id, IModel<PhoneNumber> phone)
-		{
-			super(id);
-			setPanelMarkup("<wicket:panel><span wicket:id='areacode'></span> <span wicket:id='prefix'></span>-<span wicket:id='suffix'></span></wicket:panel>");
-		}
-	}
-
-	private static class AddPhonePanel extends AbstractPhonePanel
-	{
-		AddPhonePanel(String id, IModel<PhoneNumber> phone)
-		{
-			super(id, phone);
-			add(new Label("areacode", new PropertyModel(phone, "areacode")));
-			add(new Label("prefix", new PropertyModel(phone, "prefix")));
-			add(new Label("suffix", new PropertyModel(phone, "suffix")));
-		}
-	}
-	private static class QueuePhonePanel extends AbstractPhonePanel
-	{
-		public QueuePhonePanel(String id, IModel<PhoneNumber> phone)
-		{
-			super(id, phone);
-			queue(new Label("areacode", new PropertyModel(phone, "areacode")));
-			queue(new Label("prefix", new PropertyModel(phone, "prefix")));
-			queue(new Label("suffix", new PropertyModel(phone, "suffix")));
-		}
-	}
-
-	private static abstract class AbstractAddressPanel extends TestPanel
-	{
-		AbstractAddressPanel(String id, IModel<Address> addr)
-		{
-			super(id);
-			setPanelMarkup("<wicket:panel><span wicket:id='street'></span><br/><span wicket:id='city'></span>, <span wicket:id='state'></span> <span wicket:id='zipcode'></span></wicket:panel>");
-		}
-	}
-
-	private static class AddAddressPanel extends AbstractAddressPanel
-	{
-		AddAddressPanel(String id, IModel<Address> addr)
-		{
-			super(id, addr);
-			add(new Label("street", new PropertyModel(addr, "street")));
-			add(new Label("city", new PropertyModel(addr, "city")));
-			add(new Label("state", new PropertyModel(addr, "state")));
-			add(new Label("zipcode", new PropertyModel(addr, "zipcode")));
-		}
-	}
-	private class QueueAddressPanel extends AbstractAddressPanel
-	{
-		public QueueAddressPanel(String id, IModel<Address> addr)
-		{
-			super(id, addr);
-			queue(new Label("street", new PropertyModel(addr, "street")));
-			queue(new Label("city", new PropertyModel(addr, "city")));
-			queue(new Label("sate", new PropertyModel(addr, "state")));
-			queue(new Label("zipcode", new PropertyModel(addr, "zipcode")));
-		}
-	}
-
-	static class AbstractContactsPage extends TestPage
-	{
-		AbstractContactsPage()
-		{
-			// @formatter:off
-			setPageMarkup(
-				"  <div wicket:id='contacts'>"
-				+ "  <span wicket:id='first'></span>"
-				+ "  <span wicket:id='last'></span>"
-				+ "  <div wicket:id='addr'></div>"
-				+ "  <div wicket:id='work'></div>"
-				+ "  <div wicket:id='cell'></div>"
-				+ "</div>");
-			// @formatter:on
-
-		}
-	}
-
-	public static class AddContactsPage extends AbstractContactsPage
-	{
-		public AddContactsPage()
-		{
-			add(new RefreshingView<Contact>("contacts")
-			{
-				@Override
-				protected Iterator<IModel<Contact>> getItemModels()
-				{
-					return new ModelIteratorAdapter<Contact>(store.contacts.values())
-					{
-						@Override
-						protected IModel<Contact> model(Contact object)
-						{
-							return new ContactModel(object);
-						}
-					};
-				}
-
-				@Override
-				protected void populateItem(Item<Contact> item)
-				{
-					IModel<Contact> model = item.getModel();
-					item.add(new Label("first", new PropertyModel(model, "first")));
-					item.add(new Label("last", new PropertyModel(model, "first")));
-					item.add(new AddAddressPanel("addr", new PropertyModel<Address>(model, "address")));
-					item.add(new AddPhonePanel("work", new PropertyModel<PhoneNumber>(model, "work")));
-					item.add(new AddPhonePanel("cell", new PropertyModel<PhoneNumber>(model, "cell")));
-				}
-			});
-
-		}
-	}
-
-	public static class QueueContactsPage extends AbstractContactsPage
-	{
-		public QueueContactsPage()
-		{
-			queue(new RefreshingView<Contact>("contacts")
-			{
-				@Override
-				protected Iterator<IModel<Contact>> getItemModels()
-				{
-					return new ModelIteratorAdapter<Contact>(store.contacts.values())
-					{
-						@Override
-						protected IModel<Contact> model(Contact object)
-						{
-							return new ContactModel(object);
-						}
-					};
-				}
-
-				@Override
-				protected void populateItem(Item<Contact> item)
-				{
-					IModel<Contact> model = item.getModel();
-					item.queue(new Label("first", new PropertyModel(model, "first")));
-					item.queue(new Label("last", new PropertyModel(model, "first")));
-					item.queue(new AddAddressPanel("addr", new PropertyModel<Address>(model, "address")));
-					item.queue(new AddPhonePanel("work", new PropertyModel<PhoneNumber>(model, "work")));
-					item.queue(new AddPhonePanel("cell", new PropertyModel<PhoneNumber>(model, "cell")));
-				}
-			});
-
-		}
-	}
-
-	private static class TestPage extends WebPage implements IMarkupResourceStreamProvider
-	{
-		private String markup;
-
-		TestPage()
-		{
-		}
-
-		public TestPage(String markup)
-		{
-			this.markup = markup;
-		}
-
-		String getPageMarkup()
-		{
-			return markup;
-		}
-
-		void setPageMarkup(String markup)
-		{
-			this.markup = markup;
-		}
-
-		@Override
-		public IResourceStream getMarkupResourceStream(MarkupContainer container,
-			Class<?> containerClass)
-		{
-			return new StringResourceStream(getPageMarkup());
-		}
-
-	}
-
-	private static class TestPanel extends Panel implements IMarkupResourceStreamProvider
-	{
-
-		private String markup;
-
-		TestPanel(String id)
-		{
-			super(id);
-		}
-
-		void setPanelMarkup(String markup)
-		{
-			this.markup = markup;
-		}
-
-		String getPanelMarkup()
-		{
-			return markup;
-		}
-
-		@Override
-		public IResourceStream getMarkupResourceStream(MarkupContainer container,
-			Class<?> containerClass)
-		{
-			return new StringResourceStream(getPanelMarkup());
-		}
-	}
-}
diff --git a/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java b/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java
deleted file mode 100644
index e3f90b4277..0000000000
--- a/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java
+++ /dev/null
@@ -1,1135 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.queueing;
-
-import static org.apache.wicket.queueing.WicketMatchers.hasPath;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-
-import java.util.ArrayList;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.markup.IMarkupResourceStreamProvider;
-import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.border.Border;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.markup.html.internal.Enclosure;
-import org.apache.wicket.markup.html.link.Link;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
-import org.apache.wicket.markup.html.panel.Fragment;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.queueing.bodyisachild.BodyIsAChildPage;
-import org.apache.wicket.queueing.bodyisachild.LoginPanel;
-import org.apache.wicket.queueing.nestedborders.InnerBorder;
-import org.apache.wicket.queueing.nestedborders.OuterBorder;
-import org.apache.wicket.queueing.nestedpanels.InnerPanel;
-import org.apache.wicket.queueing.nestedpanels.OuterPanel;
-import org.apache.wicket.util.resource.IResourceStream;
-import org.apache.wicket.util.resource.StringResourceStream;
-import org.apache.wicket.util.tester.FormTester;
-import org.apache.wicket.util.tester.WicketTestCase;
-import org.junit.jupiter.api.Test;
-
-class ComponentQueueingTest extends WicketTestCase
-{
-	/** {@code [a,b,c] -> [a[b[c]]] } */
-	@Test
-	void dequeue1()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<p wicket:id='a'><p wicket:id='b'><p wicket:id='c'></p></p></p>");
-		MarkupContainer a = new A(), b = new B(), c = new C();
-
-		p.queue(b, c, a);
-		assertThat(p, hasPath(a, b, c));
-		tester.startPage(p);
-	}
-
-	/**
-	 * https://issues.apache.org/jira/browse/WICKET-6361
-	 */
-	@Test
-	void dequeueComponentsOnInitialization()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<p wicket:id='a'><p wicket:id='b'><p wicket:id='c'></p></p></p>");
-		MarkupContainer a = new A(), b = new B(), c = new C();
-		
-		//components are queued before their nested container is added to the page.
-		//this caused a "Detach called on component...while it had a non-empty queue" before WICKET-6361 was fixed
-		b.queue(c);
-		a.add(b);
-		
-		p.add(a);
-
-		tester.startPage(p);
-	}
-	
-	/** {@code [a[b,c]] -> [a[b[c]]] } */
-	@Test
-	void dequeue2()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<p wicket:id='a'><p wicket:id='b'><p wicket:id='c'></p></p></p>");
-		MarkupContainer a = new A(), b = new B(), c = new C();
-
-		p.queue(a);
-		a.queue(b, c);
-
-		tester.startPage(p);
-
-		assertThat(p, hasPath(a, b, c));
-	}
-
-	/** {@code [a[b[c]] -> [a[b[c]]] } */
-	@Test
-	void dequeue3()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<p wicket:id='a'><p wicket:id='b'><p wicket:id='c'></p></p></p>");
-		MarkupContainer a = new A(), b = new B(), c = new C();
-
-		p.queue(a);
-		a.queue(b);
-		b.queue(c);
-
-		tester.startPage(p);
-
-		assertThat(p, hasPath(a, b, c));
-	}
-
-	/** {@code [a[b],c] -> [a[b[c]]] } */
-	@Test
-	void dequeue4()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<p wicket:id='a'><p wicket:id='b'><p wicket:id='c'></p></p></p>");
-		MarkupContainer a = new A(), b = new B(), c = new C();
-
-		p.queue(a, c);
-		a.queue(b);
-
-		tester.startPage(p);
-
-		assertThat(p, hasPath(a, b, c));
-	}
-
-	/** {@code [a(b)],c] -> [a[b[c]]] } */
-	@Test
-	void dequeue5()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<p wicket:id='a'><p wicket:id='b'><p wicket:id='c'></p></p></p>");
-		MarkupContainer a = new A(), b = new B(), c = new C();
-		p.queue(a, c);
-		a.add(b);
-
-		tester.startPage(p);
-
-		assertThat(p, hasPath(a, b, c));
-	}
-
-	/** {@code [a,b,c] -> [a[b,c]] } */
-	@Test
-	void dequeue6()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<p wicket:id='a'><p wicket:id='b'></p><p wicket:id='c'></p></p>");
-		MarkupContainer a = new A(), b = new B(), c = new C();
-
-		p.queue(a, b, c);
-
-		tester.startPage(p);
-
-		assertThat(p, hasPath(new Path(a, b)));
-		assertThat(p, hasPath(new Path(a, c)));
-	}
-
-	/**
-	 * {a[b{e}[d,f{g}]],c} -> [a[b[c,d[e],f[g]]]]
-	 */
-	@Test
-	void dequeue7()
-	{
-		TestPage p = new TestPage();
-
-		// @formatter:off
-		p.setPageMarkup(
-			"  <p wicket:id='a'>"
-			+ "  <p wicket:id='b'>"
-			+ "    <p wicket:id='c'></p>"
-			+ "    <p wicket:id='d'>"
-			+ "      <p wicket:id='e'></p>"
-			+ "    </p>"
-			+ "    <p wicket:id='f'>"
-			+ "      <p wicket:id='g'></p>"
-			+ "    </p>"
-			+ "  </p>"
-			+ "</p>");
-		// @formatter:on
-
-		MarkupContainer a = new A(), b = new B(), c = new C(), d = new D(), e = new E(), f = new F(), g = new G();
-
-		a.add(b);
-		b.queue(e);
-		p.queue(a, c);
-		b.add(d);
-		f.queue(g);
-		b.add(f);
-
-		tester.startPage(p);
-
-		assertThat(p, hasPath(new Path(a, b, c)));
-		assertThat(p, hasPath(new Path(a, b, d, e)));
-		assertThat(p, hasPath(new Path(a, b, f, g)));
-	}
-
-
-	/** {@code [a,c[b]] ->| [a[b[c]]] } */
-	@Test
-	void dequeueError1()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<p wicket:id='a'><p wicket:id='b'><p wicket:id='c'></p></p></p>");
-		MarkupContainer a = new A(), b = new B(), c = new C();
-
-		p.queue(b, c);
-		c.queue(a);
-
-		try
-		{
-			tester.startPage(p);
-			fail();
-		}
-		catch (WicketRuntimeException e)
-		{
-			// expected
-		}
-	}
-
-	/** {@code [a,q[r,s]] - > [a[q[r[s]]]] } */
-	@Test
-	void panel1()
-	{
-		MarkupContainer a = new A(), r = new R(), s = new S();
-
-		TestPanel q = new TestPanel("q");
-		q.setPanelMarkup("<wicket:panel><p wicket:id='r'><p wicket:id='s'></p></p></wicket:panel>");
-		q.queue(r, s);
-
-		TestPage p = new TestPage();
-		p.setPageMarkup("<p wicket:id='a'><p wicket:id='q'></p></p>");
-
-		p.queue(a, q);
-
-		tester.startPage(p);
-
-		assertThat(p, hasPath(new Path(a, q, r, s)));
-	}
-
-	/** panel has leading markup */
-	@Test
-	void panel2()
-	{
-		MarkupContainer r = new R();
-
-		TestPanel q = new TestPanel("q");
-		q.setPanelMarkup("<html><body><wicket:panel><p wicket:id='r'></p></wicket:panel></body></html>");
-		q.queue(r);
-
-		TestPage p = new TestPage();
-		p.setPageMarkup("<p wicket:id='q'></p>");
-		p.queue(q);
-
-		tester.startPage(p);
-
-		assertThat(p, hasPath(new Path(q, r)));
-	}
-
-	/** panel with a static header section */
-	@Test
-	void panel3()
-	{
-		MarkupContainer r = new R();
-
-		TestPanel q = new TestPanel("q");
-		q.setPanelMarkup("<html><head><wicket:head><meta/></wicket:head></head>"
-			+ "<body><wicket:panel><p wicket:id='r'></p></wicket:panel></body></html>");
-		q.queue(r);
-
-		TestPage p = new TestPage();
-		p.setPageMarkup("<html><head></head><body><p wicket:id='q'></p></body></html>");
-		p.queue(q);
-
-		tester.startPage(p);
-
-		assertThat(p, hasPath(new Path(q, r)));
-		tester.assertContains("<meta/>"); // contributed by <wicket:head>
-	}
-
-	/**
-	 * test with inner panels
-	 */
-	@Test
-	void nestedPanels()
-	{
-		MarkupContainer r = new R(), s = new S();
-
-		Panel innerPanel = new InnerPanel("inner");
-		innerPanel.queue(s);
-
-		Panel outerPanel = new OuterPanel("outer");
-
-		outerPanel.queue(r, innerPanel);
-
-		TestPage p = new TestPage();
-		p.setPageMarkup("<html><head></head><body><p wicket:id='outer'></p></body></html>");
-		p.queue(outerPanel);
-
-		tester.startPage(p);
-
-		assertThat(p, hasPath(new Path(outerPanel, r)));
-		assertThat(p, hasPath(new Path(outerPanel, innerPanel, s)));
-		tester.assertContains("<meta/>"); // contributed by <wicket:head> in outer
-		tester.assertContains("<meta2/>"); // contributed by <wicket:head> in inner
-	}
-
-	@Test
-	void repeater1()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<p wicket:id='lv'><p wicket:id='b'><p wicket:id='c'></p></p></p>");
-
-		LV l = new LV(3)
-		{
-			@Override
-			protected void populateItem(ListItem<Integer> item)
-			{
-				item.queue(new B(), new C());
-			}
-		};
-
-		p.queue(l);
-
-		tester.startPage(p);
-
-		assertEquals(3, l.size());
-		for (Component item : l)
-		{
-			assertThat(p, hasPath(new Path(l, item, new B(), new C())));
-		}
-	}
-
-	/** repeater */
-	@Test
-	void repeater2()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<p wicket:id='a'><p wicket:id='lv'><p wicket:id='b'><p wicket:id='c'></p></p></p></p>");
-
-		MarkupContainer a = new A();
-		LV l = new LV(3)
-		{
-			@Override
-			protected void populateItem(ListItem<Integer> item)
-			{
-				item.queue(new B(), new C());
-			}
-		};
-
-		p.queue(a, l);
-
-		tester.startPage(p);
-
-		assertEquals(3, l.size());
-		for (Component item : l)
-		{
-			assertThat(p, hasPath(new Path(a, l, item, new B(), new C())));
-		}
-	}
-
-	/** repeater with a panel inside */
-	@Test
-	void repeater3()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<p wicket:id='a'><p wicket:id='lv'><p wicket:id='b'><p wicket:id='q'></p></p></p></p>");
-
-		MarkupContainer a = new A();
-		LV l = new LV(3)
-		{
-			@Override
-			protected void populateItem(ListItem<Integer> item)
-			{
-				TestPanel q = new TestPanel("q");
-				q.setPanelMarkup("<wicket:panel><p wicket:id='r'><p wicket:id='s'></p></p></wicket:panel>");
-				q.queue(new R(), new S());
-
-				item.queue(q, new B());
-			}
-		};
-
-		p.queue(a, l);
-
-		tester.startPage(p);
-
-		assertEquals(3, l.size());
-		for (Component item : l)
-		{
-			assertThat(p, hasPath(new Path(a, l, item, new B()).add("q").add(new R(), new S())));
-		}
-	}
-
-	/** dequeue, then rerender the page instance after a callback is executed */
-	@Test
-	void callback()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<p wicket:id='a'><a wicket:id='l'><p wicket:id='b'></p></a></p>");
-		MarkupContainer a = new A(), b = new B();
-		L l = new L();
-		p.queue(a, b, l);
-
-		tester.startPage(p);
-
-		assertThat(p, hasPath(new Path(a, l, b)));
-		assertEquals(false, l.isClicked());
-
-		tester.clickLink(l);
-
-		assertEquals(true, l.isClicked());
-	}
-
-
-	/** queuing two components with the same id */
-	@Test
-	void queueIdCollission()
-	{
-		try
-		{
-			new A().queue(new B(), new B());
-			fail("Should not be able to queue two components with the same id under the same parent");
-		}
-		catch (WicketRuntimeException e)
-		{
-			// expected
-		}
-	}
-
-
-	@Test
-	void autos1()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<wicket:enclosure child='a'><div wicket:id='a'></div><div wicket:id='b'></div></wicket:enclosure>");
-		A a = new A();
-		B b = new B();
-		p.queue(a, b);
-		tester.startPage(p);
-
-		assertTrue(a.getParent() instanceof Enclosure);
-		assertTrue(b.getParent() instanceof Enclosure);
-
-		// A is visible, enclosure renders
-
-		assertEquals(
-			"<wicket:enclosure child=\"a\"><div wicket:id=\"a\"></div><div wicket:id=\"b\"></div></wicket:enclosure>",
-			tester.getLastResponseAsString());
-
-		// A is not visible, enclosure does not render
-
-		a.setVisible(false);
-		tester.startPage(p);
-		assertEquals("", tester.getLastResponseAsString());
-	}
-
-	@Test
-	void autos2()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<wicket:enclosure child='a'><div wicket:id='a'></div><div wicket:id='b'></div></wicket:enclosure>");
-		A a = new A();
-		B b = new B();
-		p.add(a, b);
-		tester.startPage(p);
-
-		assertTrue(a.getParent() instanceof TestPage);
-		assertTrue(b.getParent() instanceof TestPage);
-
-		// A is visible, enclosure renders
-
-		assertEquals(
-			"<wicket:enclosure child=\"a\"><div wicket:id=\"a\"></div><div wicket:id=\"b\"></div></wicket:enclosure>",
-			tester.getLastResponseAsString());
-
-		// A is not visible, enclosure does not render
-
-		a.setVisible(false);
-		tester.startPage(p);
-		assertEquals("", tester.getLastResponseAsString());
-	}
-
-	@Test
-	void autos3()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<wicket:enclosure child='a'><div wicket:id='a'></div><div wicket:id='b'></div></wicket:enclosure>");
-		A a = new A();
-		B b = new B();
-		p.queue(b);
-		p.add(a);
-		tester.startPage(p);
-
-		assertTrue(a.getParent() instanceof TestPage);
-		assertTrue(b.getParent() instanceof Enclosure);
-
-		// A is visible, enclosure renders
-
-		assertEquals(
-			"<wicket:enclosure child=\"a\"><div wicket:id=\"a\"></div><div wicket:id=\"b\"></div></wicket:enclosure>",
-			tester.getLastResponseAsString());
-
-		// A is not visible, enclosure does not render
-
-		a.setVisible(false);
-		tester.startPage(p);
-		assertEquals("", tester.getLastResponseAsString());
-	}
-
-	@Test
-	void autos4()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<wicket:enclosure child='a'><div wicket:id='a'></div><div wicket:id='b'></div></wicket:enclosure>");
-		A a = new A();
-		B b = new B();
-		p.add(b);
-		p.queue(a);
-		tester.startPage(p);
-
-		assertTrue(a.getParent() instanceof Enclosure);
-		assertTrue(b.getParent() instanceof TestPage);
-
-		// A is visible, enclosure renders
-
-		assertEquals(
-			"<wicket:enclosure child=\"a\"><div wicket:id=\"a\"></div><div wicket:id=\"b\"></div></wicket:enclosure>",
-			tester.getLastResponseAsString());
-
-		// A is not visible, enclosure does not render
-
-		a.setVisible(false);
-		tester.startPage(p);
-		assertEquals("", tester.getLastResponseAsString());
-	}
-
-	@Test
-	void autos5()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<wicket:enclosure child='a'><div wicket:id='a'></div><div wicket:id='b'></div></wicket:enclosure>");
-		A a = new A();
-		B b = new B();
-		p.queue(a);
-		p.add(b);
-		tester.startPage(p);
-
-		assertTrue(a.getParent() instanceof Enclosure);
-		assertTrue(b.getParent() instanceof TestPage);
-
-
-		// A is visible, enclosure renders
-
-		assertEquals(
-			"<wicket:enclosure child=\"a\"><div wicket:id=\"a\"></div><div wicket:id=\"b\"></div></wicket:enclosure>",
-			tester.getLastResponseAsString());
-
-		// A is not visible, enclosure does not render
-
-		a.setVisible(false);
-		tester.startPage(p);
-		assertEquals("", tester.getLastResponseAsString());
-	}
-
-	/**
-	 * Test InlineEnclosure
-	 */
-	@Test
-	void autos6()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<div wicket:enclosure='a'><div wicket:id='a'></div><div wicket:id='b'></div></div>");
-		A a = new A();
-		B b = new B();
-		p.queue(a, b);
-		tester.startPage(p);
-
-		assertTrue(a.getParent() instanceof Enclosure);
-		assertTrue(b.getParent() instanceof Enclosure);
-
-		// A is visible, enclosure renders
-
-		assertEquals(
-				"<div wicket:enclosure=\"a\" id=\"wicket__InlineEnclosure_20793898271\"><div wicket:id=\"a\"></div><div wicket:id=\"b\"></div></div>",
-				tester.getLastResponseAsString());
-
-		// A is not visible, inline enclosure render only itself (the placeholder tag)
-
-		a.setVisible(false);
-		tester.startPage(p);
-		assertEquals("<div id=\"wicket__InlineEnclosure_20793898271\" hidden=\"\" data-wicket-placeholder=\"\"></div>", tester.getLastResponseAsString());
-	}
-	
-	/**
-	 * Test empty child attribute
-	 */
-	@Test
-	void autos7()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<wicket:enclosure child=''><div wicket:id='a'></div></wicket:enclosure>");
-		A a = new A();
-		
-		p.queue(a);
-		tester.startPage(p);
-
-		assertTrue(a.getParent() instanceof Enclosure);
-		
-
-		// A is visible, enclosure renders
-
-		assertEquals(
-			"<wicket:enclosure child=\"a\"><div wicket:id=\"a\"></div></wicket:enclosure>",
-			tester.getLastResponseAsString());
-
-		// A is not visible, enclosure does not render
-
-		a.setVisible(false);
-		tester.startPage(p);
-		assertEquals("", tester.getLastResponseAsString());
-	}
-	
-	/**
-	 * Test autocomponent inside not-queue region
-	 */
-	@Test
-	void autosInsideNotQueueRegion()
-	{
-		TestPage p = new TestPage();
-		p.setPageMarkup("<div wicket:id='outerContainer'><wicket:enclosure><div wicket:id='a'></div></wicket:enclosure></div>");
-		Label a = new Label("a", "a");
-		WebMarkupContainer outer;
-		p.add(outer = new WebMarkupContainer("outerContainer"));
-		outer.queue(a);
-		
-		tester.startPage(p);
-
-		assertTrue(a.getParent() instanceof Enclosure);
-	}
-	
-	@Test
-	void border1()
-	{
-		MarkupContainer a = new A(), b = new B(), r = new R(), s = new S();
-
-		TestBorder border = new TestBorder("border");
-		border.setBorderMarkup("<wicket:border><b1 wicket:id='r'><b2 wicket:id='s'>" +
-				"<wicket:body/></b2></b1></wicket:border>");
-		border.queueToBorder(r, s);
-
-		TestPage p = new TestPage();
-		p.setPageMarkup("<out1 wicket:id='a'><p wicket:id='border'><in1 wicket:id='b'></in1></p></out1>");
-
-		p.queue(a, border, b);
-
-		tester.startPage(p);
-
-		assertThat(p, hasPath(new Path(a, border, r, s, border.getBodyContainer(), b)));
-	}
-	
-	@Test
-	void queueBorderBody() throws Exception
-	{
-
-		TestBorder border = new TestBorder("border");
-		border.setBorderMarkup("<wicket:border><wicket:body/></wicket:border>");
-
-		TestPage p = new TestPage();
-		p.setPageMarkup("<div wicket:id=\"border\"><span wicket:id=\"label\"></span></div>");
-		
-		p.add(border);
-		border.queue(new Label("label", "test"));
-		
-		tester.startPage(p);
-	}
-
-	@Test
-	void border_nested()
-	{
-		MarkupContainer a = new A(), b = new B(), c= new C(), d = new D(), r = new R(), s = new S();
-
-		Border outerBorder = new OuterBorder("outerBorder");
-
-		Border innerBorder = new InnerBorder("innerBorder");
-
-		outerBorder.queueToBorder(r, innerBorder);
-
-		innerBorder.queueToBorder(c, d);
-
-		outerBorder.queueToBorder(s);
-
-
-		TestPage p = new TestPage();
-		p.setPageMarkup("<p wicket:id='a'><p wicket:id='outerBorder'><p wicket:id='b'></p></p></p>");
-		
-		p.queue(b, outerBorder, a);
-
-		tester.startPage(p);
-		
-		assertThat(p, hasPath(new Path(a, outerBorder,  r, innerBorder, c, d, innerBorder.getBodyContainer(), s)));
-		assertThat(p, hasPath(new Path(a, outerBorder, r, outerBorder.getBodyContainer(), b)));
-	}
-
-	@Test
-	void fragment1() {
-		MarkupContainer a = new A(), b = new B(), r = new R(), s = new S();
-		
-		TestPage page = new TestPage();
-		page.setPageMarkup("<a wicket:id='a'></a><f wicket:id='fragment'></f><b wicket:id='b'></b>"
-			+ "<wicket:fragment wicket:id='f'><r wicket:id='r'></r><s wicket:id='s'></s></wicket:fragment>");
-		
-		Fragment fragment = new Fragment("fragment", "f", page);
-
-		fragment.queue(r, s);
-		page.queue(a, b, fragment);
-		
-		assertThat(page, hasPath(new Path(a)));
-		assertThat(page, hasPath(new Path(b)));
-		assertThat(page, hasPath(new Path(fragment, r)));
-		assertThat(page, hasPath(new Path(fragment, s)));
-	}
-
-	@Test
-	void fragment_doesNotDequeueAcrossRegion()
-	{
-		MarkupContainer a = new A();
-
-		TestPage page = new TestPage();
-		page.setPageMarkup("<f wicket:id='fragment'></f><wicket:fragment wicket:id='f'><a wicket:id='a'></a></wicket:fragment>");
-
-		Fragment fragment = new Fragment("fragment", "f", page);
-
-		page.queue(a, fragment);
-
-		assertThat(page, hasPath(new Path(fragment)));
-		assertNull(a.getParent());
-	}
-
-	
-	@Test
-	void containerTag1()
-	{
-		MarkupContainer a = new A(), b = new B();
-
-		TestPage page = new TestPage();
-		page.setPageMarkup("<wicket:container wicket:id='a'><b wicket:id='b'></b></wicket:container>");
-
-		page.queue(a, b);
-
-		assertThat(page, hasPath(new Path(a, b)));
-	}
-	
-	@Test
-	void queueInsideHeader()
-	{
-		TestPage page = new TestPage();
-		page.setPageMarkup("<html>"
-			+"<head><title wicket:id='title'></title></head>"
-			+ "<body><div>"
-			+ "Hello!"
-			+ "</div></body>"
-			+ "</html>");
-		
-		page.queue(new Label("title"));
-		
-		tester.startPage(page);	
-		
-		tester.assertContains("title");
-	}
-	
-	@Test
-	void queueInsideAutoLink()
-	{
-		TestPage page = new TestPage();
-		page.setPageMarkup("<wicket:link>"
-			+ "<a href='test.html'>"
-			+ "<wicket:container wicket:id='test'>test</wicket:container>"
-			+ "</a></wicket:link>");
-		
-		page.queue(new WebMarkupContainer("test"));
-		
-		tester.startPage(page);	
-	}
-	
-	@Test
-	void queueInsideLabelComponent()
-	{
-		TestPage page = new TestPage();
-		page.setPageMarkup("<label wicket:for='input'>"
-				+ "label:"
-				+ "<input wicket:id='input'/>"
-				+ "</label>");
-		
-		page.queue(new TextField<>("input", Model.of("test")));
-		
-		tester.startPage(page);	
-	}
-	
-	@Test
-	void queueInsideTransparentContainer() throws Exception
-	{
-		TestPage page = new TestPage();
-		page.setPageMarkup("<div wicket:id='transparentContainer'>"
-			+ "	<div wicket:id='container'>"
-			+ "		<div wicket:id='child'>"
-			+ " 	</div>"
-			+ " </div>"
-			+ "</div>");
-		
-		page.add(new TransparentWebMarkupContainer("transparentContainer"));
-		page.add(new WebMarkupContainer("container"));
-		page.queue(new WebMarkupContainer("child"));
-		
-		tester.startPage(page);	
-	}
-
-	@Test
-	void queueNestedEnclosure()
-	{
-		TestPage page = new TestPage();
-		page.setPageMarkup( "<div wicket:enclosure='outer'>" +
-			"<div wicket:id='outer'>" +
-			"	<div wicket:enclosure='middle'>" +
-			"		<div wicket:enclosure='inner'>" +
-			"			<div wicket:id='inner'>inner</div>" +
-			"		</div>" +
-			"		<div wicket:id='middle'>middle</div>" +
-			"	</div>" +
-			"	outer" +
-			"</div>" +
-			"</div>");
-		
-		WebMarkupContainer container = new WebMarkupContainer("outer");
-		container.add(new WebMarkupContainer("middle"));
-		container.add(new WebMarkupContainer("inner"));
-		
-		page.add(container);
-		
-		tester.startPage(page);	
-	}
-	
-	/**
-	 * https://issues.apache.org/jira/browse/WICKET-6088
-	 */
-	@Test
-	void queueComponentInsideWcAndEnclosure()
-	{
-		TestPage page = new TestPage();
-		page.setPageMarkup(" <div wicket:id=\"container\">\n" +
-			"    <div wicket:enclosure=\"child\">\n" +
-			"      <p wicket:id=\"child\">1</p>\n" +
-			"      <a wicket:id=\"child2\">2</a>\n" +
-			"    </div>\n" +
-			"  </div>");
-		
-		WebMarkupContainer container = new WebMarkupContainer("container");
-
-		container.queue(new Label("child")
-		{
-			@Override
-			protected void onInitialize()
-			{
-				super.onInitialize();
-
-				setDefaultModel(Model.of("test"));
-			}
-		});
-		
-	    container.queue(new WebMarkupContainer("child2").setVisible(false));
-
-	    page.queue(container);
-		
-		tester.startPage(page);	
-	}
-	@Test
-	void queueComponentInsideBorderAndEnclosure()
-	{
-		TestPage page = new TestPage();
-		page.setPageMarkup(" <div wicket:id=\"panel\"></div>");
-		
-		TestPanel panel = new TestPanel("panel");
-		panel.setPanelMarkup("<wicket:panel>\n"
-			+ "<div wicket:id=\"border\">\n" +
-			"    <div wicket:enclosure=\"child\">\n" +
-			"      <p wicket:id=\"child\">1</p>\n" +			
-			"    </div>\n" +
-			"  </div>\n" +
-			"</wicket:panel>");
-		
-		TestBorder border = new TestBorder("border");
-		border.setBorderMarkup("<wicket:border><wicket:body/></wicket:border>");
-		
-		panel.add(border);
-		page.add(panel);
-		border.add(new Label("child"));
-				
-		tester.startPage(page);	
-	}
-
-	/**
-	 * https://issues.apache.org/jira/browse/WICKET-6036
-	 */
-	@Test
-	void nestedTags()
-	{
-		IncorrectCloseTagPanel p = new IncorrectCloseTagPanel("test");
-		tester.startComponentInPage(p);
-	}
-
-	/**
-	 * https://issues.apache.org/jira/browse/WICKET-6077
-	 */
-	@Test
-	void bodyIsAChild() {
-		tester.startPage(BodyIsAChildPage.class);
-
-		tester.assertRenderedPage(BodyIsAChildPage.class);
-
-		String username = "USER";
-		String password = "PASSWD";
-
-		FormTester formTester = tester.newFormTester("wmc:login:loginForm");
-		formTester.setValue("usernameFormGroup:usernameFormGroup_body:username", username);
-		formTester.setValue("passwordFormGroup:passwordFormGroup_body:password", password);
-		formTester.submit();
-
-		LoginPanel loginPanel = (LoginPanel) tester.getComponentFromLastRenderedPage("wmc:login");
-		assertEquals(username, loginPanel.pojo.username);
-		assertEquals(password, loginPanel.pojo.password);
-	}
-
-	private static class A extends WebMarkupContainer
-	{
-		A()
-		{
-			super("a");
-		}
-	}
-
-	private static class B extends WebMarkupContainer
-	{
-		B()
-		{
-			super("b");
-		}
-	}
-
-	private static class C extends WebMarkupContainer
-	{
-		C()
-		{
-			super("c");
-		}
-	}
-
-	private static class D extends WebMarkupContainer
-	{
-		D()
-		{
-			super("d");
-		}
-	}
-
-	private static class E extends WebMarkupContainer
-	{
-		E()
-		{
-			super("e");
-		}
-	}
-
-	private static class F extends WebMarkupContainer
-	{
-		F()
-		{
-			super("f");
-		}
-	}
-	private static class G extends WebMarkupContainer
-	{
-		G()
-		{
-			super("g");
-		}
-	}
-
-	private static class R extends WebMarkupContainer
-	{
-		R()
-		{
-			super("r");
-		}
-	}
-
-	private static class S extends WebMarkupContainer
-	{
-		S()
-		{
-			super("s");
-		}
-	}
-
-	private static abstract class LV extends ListView<Integer>
-	{
-		LV(int size)
-		{
-			super("lv");
-			ArrayList<Integer> values = new ArrayList<>();
-			for (int i = 0; i < size; i++)
-				values.add(i);
-			setModel(new Model<>(values));
-		}
-	}
-
-	private static class L extends Link<Void>
-	{
-		private boolean clicked = false;
-
-		L()
-		{
-			super("l");
-		}
-
-		@Override
-		public void onClick()
-		{
-			clicked = true;
-		}
-
-		boolean isClicked()
-		{
-			return clicked;
-		}
-	}
-
-
-	private static class TestPage extends WebPage implements IMarkupResourceStreamProvider
-	{
-		private String markup;
-
-		TestPage()
-		{
-		}
-
-		public TestPage(String markup)
-		{
-			this.markup = markup;
-		}
-
-		String getPageMarkup()
-		{
-			return markup;
-		}
-
-		void setPageMarkup(String markup)
-		{
-			this.markup = markup;
-		}
-
-		@Override
-		public IResourceStream getMarkupResourceStream(MarkupContainer container,
-			Class<?> containerClass)
-		{
-			return new StringResourceStream(getPageMarkup());
-		}
-
-	}
-
-	private static class TestPanel extends Panel implements IMarkupResourceStreamProvider
-	{
-		private String markup;
-
-		TestPanel(String id)
-		{
-			super(id);
-		}
-
-		void setPanelMarkup(String markup)
-		{
-			this.markup = markup;
-		}
-
-		String getPanelMarkup()
-		{
-			return markup;
-		}
-
-		@Override
-		public IResourceStream getMarkupResourceStream(MarkupContainer container,
-			Class<?> containerClass)
-		{
-			return new StringResourceStream(getPanelMarkup());
-		}
-	}
-
-	private static class TestBorder extends Border implements IMarkupResourceStreamProvider
-	{
-		private String markup;
-
-		TestBorder(String id)
-		{
-			super(id);
-		}
-
-		void setBorderMarkup(String markup)
-		{
-			this.markup = markup;
-		}
-
-		String getBorderMarkup()
-		{
-			return markup;
-		}
-
-		@Override
-		public IResourceStream getMarkupResourceStream(MarkupContainer container,
-		                                               Class<?> containerClass)
-		{
-			return new StringResourceStream(getBorderMarkup());
-		}
-	}
-}
diff --git a/wicket-core/src/test/java/org/apache/wicket/queueing/transparentresolvers/SubPage.java b/wicket-core/src/test/java/org/apache/wicket/queueing/transparentresolvers/SubPage.java
index 6580fb5c7e..ac48e19a76 100644
--- a/wicket-core/src/test/java/org/apache/wicket/queueing/transparentresolvers/SubPage.java
+++ b/wicket-core/src/test/java/org/apache/wicket/queueing/transparentresolvers/SubPage.java
@@ -28,6 +28,6 @@ public class SubPage extends BasePage
 	{
 		super(parameters);
 
-		queue(new Label("version", getApplication().getFrameworkSettings().getVersion()));
+		add(new Label("version", getApplication().getFrameworkSettings().getVersion()));
 	}
 }
diff --git a/wicket-core/src/test/java/org/apache/wicket/queueing/transparentresolvers/TransparentContainerQueuePage.java b/wicket-core/src/test/java/org/apache/wicket/queueing/transparentresolvers/TransparentContainerQueuePage.java
index ba2c2d8df5..2f8d6174e7 100644
--- a/wicket-core/src/test/java/org/apache/wicket/queueing/transparentresolvers/TransparentContainerQueuePage.java
+++ b/wicket-core/src/test/java/org/apache/wicket/queueing/transparentresolvers/TransparentContainerQueuePage.java
@@ -26,7 +26,7 @@ public class TransparentContainerQueuePage extends WebPage
 	public TransparentContainerQueuePage(PageParameters parameters)
 	{
 		super(parameters);
-		queue(new Label("queuedComponent", "Queued label."));
+		add(new Label("queuedComponent", "Queued label."));
 	}
 	
 }
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/modal/ModalDialogPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/modal/ModalDialogPage.java
index 665b100496..7df2ae0c33 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/modal/ModalDialogPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/modal/ModalDialogPage.java
@@ -57,22 +57,24 @@ public class ModalDialogPage extends BasePage
 	public ModalDialogPage()
 	{
 
-		queue(new RadioGroup("stacked", new PropertyModel<>(this, "stacked"))
-			.setRenderBodyOnly(false).add(new AjaxFormChoiceComponentUpdatingBehavior()
-			{
+		RadioGroup radioGroup = new RadioGroup("stacked", new PropertyModel<>(this, "stacked"));
+		radioGroup
+			.setRenderBodyOnly(false)
+			.add(new AjaxFormChoiceComponentUpdatingBehavior() {
 				@Override
 				protected void onUpdate(AjaxRequestTarget target)
 				{
 				}
-			}));
+			});
+		add(radioGroup);
 
-		queue(new Radio<Boolean>("yes", Model.of(true)));
-		queue(new Radio<Boolean>("no", Model.of(false)));
+		radioGroup.add(new Radio<Boolean>("yes", Model.of(true)));
+		radioGroup.add(new Radio<Boolean>("no", Model.of(false)));
 
-		queue(new ModalFragment("start"));
+		add(new ModalFragment("start"));
 
 		stackedDialogs = new AjaxListPanel("stackedDialogs");
-		queue(stackedDialogs);
+		add(stackedDialogs);
 	}
 
 	@Override
@@ -94,15 +96,15 @@ public class ModalDialogPage extends BasePage
 			super(id, "fragment", ModalDialogPage.this);
 
 			Form<Void> form = new Form<Void>("form");
-			queue(form);
+			add(form);
 			
 			nestedDialog = new ModalDialog("nestedDialog");
 			nestedDialog.add(new DefaultTheme());
 			nestedDialog.trapFocus();
 			nestedDialog.closeOnEscape();
-			queue(nestedDialog);
+			form.add(nestedDialog);
 
-			queue(new AjaxLink<Void>("ajaxOpenDialog")
+			form.add(new AjaxLink<Void>("ajaxOpenDialog")
 			{
 				@Override
 				public void onClick(AjaxRequestTarget target)
@@ -111,7 +113,7 @@ public class ModalDialogPage extends BasePage
 				}
 			});
 
-			queue(new Link<Void>("openDialog")
+			form.add(new Link<Void>("openDialog")
 			{
 				@Override
 				public void onClick()
@@ -120,7 +122,7 @@ public class ModalDialogPage extends BasePage
 				}
 			});
 
-			queue(new TextField("text").add(new AjaxEventBehavior("keydown")
+			form.add(new TextField("text").add(new AjaxEventBehavior("keydown")
 			{
 				@Override
 				protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
@@ -144,7 +146,7 @@ public class ModalDialogPage extends BasePage
 				}
 			}));
 
-			queue(new WebMarkupContainer("closing")
+			WebMarkupContainer closing = new WebMarkupContainer("closing")
 			{
 				@Override
 				protected void onConfigure()
@@ -153,9 +155,10 @@ public class ModalDialogPage extends BasePage
 
 					setVisible(findParent(ModalDialog.class) != null);
 				}
-			});
+			};
+			form.add(closing);
 
-			queue(new Link<Void>("close")
+			closing.add(new Link<Void>("close")
 			{
 				@Override
 				public void onClick()
@@ -166,9 +169,9 @@ public class ModalDialogPage extends BasePage
 			
 			final MultiLineLabel lorem = new MultiLineLabel("lorem", "");
 			lorem.setOutputMarkupId(true);
-			queue(lorem);
+			form.add(lorem);
 			
-			queue(new AjaxLink<Void>("ipsum") {
+			form.add(new AjaxLink<Void>("ipsum") {
 				@Override
 				public void onClick(AjaxRequestTarget target)
 				{