You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ad...@apache.org on 2015/03/12 22:18:13 UTC

[06/34] wicket git commit: WICKET-5819 Support for HTML 5 media tags (audio / video)

WICKET-5819 Support for HTML 5 media tags (audio / video)


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/ac7cf808
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/ac7cf808
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/ac7cf808

Branch: refs/heads/master
Commit: ac7cf808d07440a039d9b0c70d5903109ee16303
Parents: 154b5d1
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sun Feb 15 19:28:44 2015 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Sun Feb 15 19:28:44 2015 +0200

----------------------------------------------------------------------
 .../markup/html/media/MediaComponent.java       | 165 ++++++++++---------
 .../media/MediaStreamingResourceReference.java  |  52 +++---
 .../wicket/markup/html/media/MediaUtils.java    |  49 ------
 .../markup/html/media/PartWriterCallback.java   |  55 +++----
 .../apache/wicket/markup/html/media/Source.java |  66 +++-----
 .../apache/wicket/markup/html/media/Track.java  |  74 ++++-----
 .../wicket/markup/html/media/audio/Audio.java   |  12 --
 .../wicket/markup/html/media/video/Video.java   |  26 +--
 .../wicket/markup/html/media/Application.java   |  37 -----
 .../html/media/MediaTagsExtendedTestPage.java   |   2 -
 .../wicket/markup/html/media/MediaTagsTest.java |  75 ++++-----
 .../markup/html/media/MediaTagsTestPage.java    |   3 +-
 12 files changed, 235 insertions(+), 381 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/ac7cf808/wicket-core/src/main/java/org/apache/wicket/markup/html/media/MediaComponent.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/media/MediaComponent.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/media/MediaComponent.java
index 4131439..20f39ec 100755
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/media/MediaComponent.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/media/MediaComponent.java
@@ -23,7 +23,7 @@ import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 
 /**
- * The media component is used to provide basic functionality to the video and audo component. The
+ * The media component is used to provide basic functionality to the video and audio component. The
  * given media streaming resource reference supports Content-Ranges and other stuff to make the
  * audio and video playback smooth.
  * 
@@ -32,11 +32,10 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
  */
 public abstract class MediaComponent extends WebMarkupContainer
 {
-
 	private static final long serialVersionUID = 1L;
 
 	/**
-	 * To be used for the crossorigin attribute
+	 * To be used for the <em>crossorigin</em> attribute
 	 * 
 	 * @see {@link #setCrossOrigin(Cors)}
 	 */
@@ -44,7 +43,7 @@ public abstract class MediaComponent extends WebMarkupContainer
 	{
 		ANONYMOUS("anonymous"), USER_CREDENTIALS("user-credentials"), NO_CORS("");
 
-		private String realName;
+		private final String realName;
 
 		private Cors(String realName)
 		{
@@ -58,7 +57,7 @@ public abstract class MediaComponent extends WebMarkupContainer
 	}
 
 	/**
-	 * To be used for the preload attribute
+	 * To be used for the <em>preload</em> attribute
 	 * 
 	 * @see {@link #setPreload(Preload)}
 	 */
@@ -66,7 +65,7 @@ public abstract class MediaComponent extends WebMarkupContainer
 	{
 		NONE("none"), METADATA("metadata"), AUTO("auto");
 
-		public String realName;
+		public final String realName;
 
 		private Preload(String realname)
 		{
@@ -79,14 +78,13 @@ public abstract class MediaComponent extends WebMarkupContainer
 		}
 	}
 
-	// use Boolean instead of elementary data types to get a lightweight component
-	private Boolean autoplay;
+	private boolean autoplay;
 
-	private Boolean loop;
+	private boolean loop;
 
-	private Boolean muted;
+	private boolean muted;
 
-	private Boolean controls;
+	private boolean controls = true;
 
 	private Preload preload;
 
@@ -98,138 +96,147 @@ public abstract class MediaComponent extends WebMarkupContainer
 
 	private Cors crossOrigin;
 
-	private PageParameters pageParameters;
+	private final PageParameters pageParameters;
 
-	private MediaStreamingResourceReference mediaStreamingResourceReference;
+	private final MediaStreamingResourceReference mediaStreamingResourceReference;
 
-	private String url;
+	private final String url;
 
+	/**
+	 * Constructor.
+	 *
+	 * @param id
+	 *          The component id
+	 */
 	public MediaComponent(String id)
 	{
-		super(id);
+		this(id, null, null, null, null);
 	}
 
+	/**
+	 * Constructor.
+	 *
+	 * @param id
+	 *          The component id
+	 * @param model
+	 *          The component model
+	 */
 	public MediaComponent(String id, IModel<?> model)
 	{
-		super(id, model);
+		this(id, model, null, null, null);
 	}
 
+	/**
+	 * Constructor.
+	 *
+	 * @param id
+	 *          The component id
+	 * @param mediaStreamingResourceReference
+	 */
 	public MediaComponent(String id, MediaStreamingResourceReference mediaStreamingResourceReference)
 	{
-		this(id);
-		this.mediaStreamingResourceReference = mediaStreamingResourceReference;
+		this(id, null, null, null,mediaStreamingResourceReference);
 	}
 
 	public MediaComponent(String id, IModel<?> model,
 		MediaStreamingResourceReference mediaStreamingResourceReference)
 	{
-		this(id, model);
-		this.mediaStreamingResourceReference = mediaStreamingResourceReference;
+		this(id, model, null, null, mediaStreamingResourceReference);
 	}
 
 	public MediaComponent(String id,
 		MediaStreamingResourceReference mediaStreamingResourceReference,
 		PageParameters pageParameters)
 	{
-		this(id);
-		this.mediaStreamingResourceReference = mediaStreamingResourceReference;
-		this.pageParameters = pageParameters;
+		this(id, null, null, pageParameters, mediaStreamingResourceReference);
 	}
 
 	public MediaComponent(String id, IModel<?> model,
 		MediaStreamingResourceReference mediaStreamingResourceReference,
 		PageParameters pageParameters)
 	{
-		this(id, model);
-		this.mediaStreamingResourceReference = mediaStreamingResourceReference;
-		this.pageParameters = pageParameters;
+		this(id, model, null, pageParameters, mediaStreamingResourceReference);
 	}
 
 	public MediaComponent(String id, String url)
 	{
-		this(id);
-		this.url = url;
+		this(id, null, url, null, null);
 	}
 
 	public MediaComponent(String id, IModel<?> model, String url)
 	{
-		this(id, model);
-		this.url = url;
-	}
-
-	public MediaComponent(String id, String url, PageParameters pageParameters)
-	{
-		this(id);
-		this.url = url;
-		this.pageParameters = pageParameters;
+		this(id, model, url, null, null);
 	}
 
-	public MediaComponent(String id, IModel<?> model, String url, PageParameters pageParameters)
+	private MediaComponent(String id, IModel<?> model, String url, PageParameters pageParameters,
+	                       MediaStreamingResourceReference mediaStreamingResourceReference)
 	{
-		this(id, model);
+		super(id, model);
 		this.url = url;
 		this.pageParameters = pageParameters;
+		this.mediaStreamingResourceReference = mediaStreamingResourceReference;
 	}
 
 	@Override
 	protected void onComponentTag(ComponentTag tag)
 	{
 		super.onComponentTag(tag);
+
 		// The time management is used to set the start / stop
 		// time in seconds of the movie to be played back
 		String timeManagement = "";
 		if (startTime != null)
 		{
-			timeManagement = timeManagement += "#t=" + startTime +
+			timeManagement += "#t=" + startTime +
 				(endTime != null ? "," + endTime : "");
 		}
 
 		if (mediaStreamingResourceReference != null)
 		{
-			tag.put("src",
-				RequestCycle.get().urlFor(mediaStreamingResourceReference, pageParameters) +
-					timeManagement);
+			CharSequence urlToMediaReference = RequestCycle.get().urlFor(mediaStreamingResourceReference, pageParameters);
+			tag.put("src", urlToMediaReference + timeManagement);
 		}
-
-		if (url != null)
+		else if (url != null)
 		{
 			tag.put("src", url + timeManagement);
 		}
 
-		if (mediaGroup != null)
+		String mg = getMediaGroup();
+		if (mg != null)
 		{
-			tag.put("mediagroup", mediaGroup);
+			tag.put("mediagroup", mg);
 		}
 
-		if (autoplay != null && autoplay)
+		if (isAutoplay())
 		{
 			tag.put("autoplay", "autoplay");
 		}
 
-		if (loop != null && loop)
+		if (isLooping())
 		{
 			tag.put("loop", "loop");
 		}
 
-		if (muted != null && muted)
+		if (isMuted())
 		{
 			tag.put("muted", "muted");
 		}
 
-		// Use getter here because controls should be visible by default
-		if (getControls())
+		if (hasControls())
 		{
 			tag.put("controls", "controls");
 		}
 
-		if (preload != null)
+		Preload _preload = getPreload();
+		if (_preload != null)
 		{
-			tag.put("preload", preload.getRealName());
+			tag.put("preload", _preload.getRealName());
 		}
 
-		if (crossOrigin != null)
+		Cors cors = getCrossOrigin();
+		if (cors != null)
 		{
-			tag.put("crossorigin", crossOrigin.getRealName());
+			tag.put("crossorigin", cors.getRealName());
 		}
 	}
 
@@ -238,9 +245,9 @@ public abstract class MediaComponent extends WebMarkupContainer
 	 * 
 	 * @return If the playback is autoplayed on load
 	 */
-	public Boolean getAutoplay()
+	public boolean isAutoplay()
 	{
-		return autoplay != null ? autoplay : false;
+		return autoplay;
 	}
 
 	/**
@@ -249,7 +256,7 @@ public abstract class MediaComponent extends WebMarkupContainer
 	 * @param autoplay
 	 *            If the playback is autoplayed on load
 	 */
-	public void setAutoplay(Boolean autoplay)
+	public void setAutoplay(boolean autoplay)
 	{
 		this.autoplay = autoplay;
 	}
@@ -259,9 +266,9 @@ public abstract class MediaComponent extends WebMarkupContainer
 	 * 
 	 * @return If the playback is looped
 	 */
-	public Boolean getLoop()
+	public boolean isLooping()
 	{
-		return loop != null ? loop : false;
+		return loop;
 	}
 
 	/**
@@ -270,7 +277,7 @@ public abstract class MediaComponent extends WebMarkupContainer
 	 * @param loop
 	 *            If the playback is looped
 	 */
-	public void setLoop(Boolean loop)
+	public void setLooping(boolean loop)
 	{
 		this.loop = loop;
 	}
@@ -280,9 +287,9 @@ public abstract class MediaComponent extends WebMarkupContainer
 	 * 
 	 * @return If the playback is muted initially
 	 */
-	public Boolean getMuted()
+	public boolean isMuted()
 	{
-		return muted != null ? muted : false;
+		return muted;
 	}
 
 	/**
@@ -291,7 +298,7 @@ public abstract class MediaComponent extends WebMarkupContainer
 	 * @param muted
 	 *            If the playback is muted initially
 	 */
-	public void setMuted(Boolean muted)
+	public void setMuted(boolean muted)
 	{
 		this.muted = muted;
 	}
@@ -301,9 +308,9 @@ public abstract class MediaComponent extends WebMarkupContainer
 	 * 
 	 * @return if the controls are going to displayed
 	 */
-	public Boolean getControls()
+	public boolean hasControls()
 	{
-		return controls != null ? controls : true;
+		return controls;
 	}
 
 	/**
@@ -330,21 +337,23 @@ public abstract class MediaComponent extends WebMarkupContainer
 	}
 
 	/**
-	 * Sets the type of preload <br>
-	 * <br>
-	 * <b>none</b>: Hints to the user agent that either the author does not expect the user to need
-	 * the media resource, or that the server wants to minimise unnecessary traffic.<br>
-	 * <br>
-	 * <b>metadata</b>: Hints to the user agent that the author does not expect the user to need the
+	 * Sets the type of preload.
+	 * <ul>
+	 * <li><b>none</b>: Hints to the user agent that either the author does not expect the user to need
+	 * the media resource, or that the server wants to minimise unnecessary traffic.</li>
+	 *
+	 * <li><b>metadata</b>: Hints to the user agent that the author does not expect the user to need the
 	 * media resource, but that fetching the resource metadata (dimensions, first frame, track list,
-	 * duration, etc) is reasonable.<br>
-	 * <br>
-	 * <b>auto</b>: Hints to the user agent that the user agent can put the user's needs first
+	 * duration, etc) is reasonable.</li>
+	 *
+	 * <li><b>auto</b>: Hints to the user agent that the user agent can put the user's needs first
 	 * without risk to the server, up to and including optimistically downloading the entire
-	 * resource.
+	 * resource.</li>
+	 * </ul>
+	 * </p>
 	 * 
 	 * @param preload
-	 *            the preload
+	 *            the type of the preload
 	 */
 	public void setPreload(Preload preload)
 	{

http://git-wip-us.apache.org/repos/asf/wicket/blob/ac7cf808/wicket-core/src/main/java/org/apache/wicket/markup/html/media/MediaStreamingResourceReference.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/media/MediaStreamingResourceReference.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/media/MediaStreamingResourceReference.java
index 54d9442..6231eed 100755
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/media/MediaStreamingResourceReference.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/media/MediaStreamingResourceReference.java
@@ -21,16 +21,15 @@ import java.util.Locale;
 
 import org.apache.wicket.Application;
 import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.core.util.resource.PackageResourceStream;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Response;
-import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.http.WebRequest;
 import org.apache.wicket.request.http.WebResponse;
-import org.apache.wicket.request.resource.AbstractResource;
 import org.apache.wicket.request.resource.ContentDisposition;
-import org.apache.wicket.request.resource.IResource;
-import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.request.resource.PackageResource;
+import org.apache.wicket.request.resource.PackageResourceReference;
+import org.apache.wicket.util.resource.IResourceStream;
+import org.apache.wicket.util.string.Strings;
 
 /**
  * The media streaming resource reference is used to provided streamed data based on bytes requested
@@ -38,9 +37,8 @@ import org.apache.wicket.request.resource.ResourceReference;
  * 
  * @author Tobias Soloschenko
  */
-public class MediaStreamingResourceReference extends ResourceReference
+public class MediaStreamingResourceReference extends PackageResourceReference
 {
-
 	private static final long serialVersionUID = 1L;
 
 	public MediaStreamingResourceReference(Class<?> scope, String name, Locale locale,
@@ -51,7 +49,7 @@ public class MediaStreamingResourceReference extends ResourceReference
 
 	public MediaStreamingResourceReference(Class<?> scope, String name)
 	{
-		super(scope, name, RequestCycle.get().getRequest().getLocale(), null, null);
+		this(scope, name, null, null, null);
 	}
 
 	public MediaStreamingResourceReference(Key key)
@@ -65,16 +63,16 @@ public class MediaStreamingResourceReference extends ResourceReference
 	}
 
 	@Override
-	public IResource getResource()
+	public PackageResource getResource()
 	{
-		AbstractResource mediaStreamingResource = new AbstractResource()
+		return new PackageResource(getScope(), getName(), getLocale(), getStyle(), getVariation())
 		{
 			private static final long serialVersionUID = 1L;
 
 			@Override
 			protected ResourceResponse newResourceResponse(Attributes attributes)
 			{
-				PackageResourceStream packageResourceStream = null;
+				IResourceStream packageResourceStream = getResourceStream();
 				Long startbyte = null;
 				Long endbyte = null;
 				try
@@ -85,20 +83,12 @@ public class MediaStreamingResourceReference extends ResourceReference
 					if (!(request instanceof WebRequest) || !(response instanceof WebResponse))
 					{
 						throw new IllegalStateException(
-							"Either the request is no web request or the response is no web response");
+							"Web request/response are required! Request: " + request + ", response: " + response);
 					}
 
 					WebRequest webRequest = (WebRequest)request;
 					WebResponse webResponse = (WebResponse)response;
 
-					packageResourceStream = new PackageResourceStream(
-						MediaStreamingResourceReference.this.getScope(),
-						MediaStreamingResourceReference.this.getName(),
-						MediaStreamingResourceReference.this.getLocale(),
-						MediaStreamingResourceReference.this.getStyle(),
-						MediaStreamingResourceReference.this.getVariation());
-
-
 					long length = packageResourceStream.length().bytes();
 
 					ResourceResponse resourceResponse = new ResourceResponse();
@@ -107,13 +97,13 @@ public class MediaStreamingResourceReference extends ResourceReference
 					resourceResponse.setContentDisposition(ContentDisposition.ATTACHMENT);
 					resourceResponse.setLastModified(packageResourceStream.lastModifiedTime());
 
-					// We accept ranges, so that the player can
+					// accept ranges, so that the player can
 					// load and play content from a specific byte position
 					webResponse.setHeader("Accept-Range", "bytes");
 
 					// Calculating the response code and the byte range to be played
 					String rangeHeader = webRequest.getHeader("range");
-					if (rangeHeader == null || "".equals(rangeHeader))
+					if (Strings.isEmpty(rangeHeader))
 					{
 						resourceResponse.setStatusCode(200);
 						resourceResponse.setContentLength(length);
@@ -121,7 +111,6 @@ public class MediaStreamingResourceReference extends ResourceReference
 					else
 					{
 						rangeHeader = rangeHeader.replaceAll(" ", "");
-						// If the range header is filled 206 for
 						// partial content has to be returned
 						resourceResponse.setStatusCode(206);
 
@@ -131,11 +120,11 @@ public class MediaStreamingResourceReference extends ResourceReference
 						// http://stackoverflow.com/questions/8293687/sample-http-range-request-session
 						String range = rangeHeader.substring(rangeHeader.indexOf('=') + 1,
 							rangeHeader.length());
-						String[] rangeParts = range.split("-");
-						if (rangeParts[0].equals("0"))
+						String[] rangeParts = Strings.split(range, '-');
+						if ("0".equals(rangeParts[0]))
 						{
-							webResponse.setHeader("Content-Range", "bytes 0-" + (length - 1) + "/" +
-								length);
+							webResponse.setHeader("Content-Range",
+									"bytes 0-" + (length - 1) + "/" + length);
 							resourceResponse.setContentLength(length);
 						}
 						else
@@ -149,8 +138,8 @@ public class MediaStreamingResourceReference extends ResourceReference
 							{
 								endbyte = length - 1;
 							}
-							webResponse.setHeader("Content-Range", "bytes " + startbyte + "-" +
-								endbyte + "/" + length);
+							webResponse.setHeader("Content-Range",
+									"bytes " + startbyte + '-' + endbyte + '/' + length);
 							resourceResponse.setContentLength((endbyte - startbyte) + 1);
 						}
 					}
@@ -183,14 +172,13 @@ public class MediaStreamingResourceReference extends ResourceReference
 				}
 			}
 		};
-		return mediaStreamingResource;
 
 	}
 
 	/**
-	 * Gets the type of the media this resource reference belongs to
+	 * Returns the mime type of the media this resource reference belongs to
 	 * 
-	 * @return the type of this media
+	 * @return the mime type of this media
 	 */
 	public String getType()
 	{

http://git-wip-us.apache.org/repos/asf/wicket/blob/ac7cf808/wicket-core/src/main/java/org/apache/wicket/markup/html/media/MediaUtils.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/media/MediaUtils.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/media/MediaUtils.java
deleted file mode 100755
index d06a704..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/media/MediaUtils.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.markup.html.media;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.markup.html.IPackageResourceGuard;
-import org.apache.wicket.markup.html.SecurePackageResourceGuard;
-
-/**
- * Helper method to provide access to basic media files like subtitles
- * 
- * @author Tobias Soloschenko
- * 
- */
-public class MediaUtils
-{
-
-	/**
-	 * Method that has to be called within the init method of the web application to make
-	 * translation files accessible
-	 */
-	public static void init()
-	{
-		IPackageResourceGuard packageResourceGuard = Application.get()
-			.getResourceSettings()
-			.getPackageResourceGuard();
-		if (packageResourceGuard instanceof SecurePackageResourceGuard)
-		{
-			SecurePackageResourceGuard securePackageResourceGuard = (SecurePackageResourceGuard)packageResourceGuard;
-			securePackageResourceGuard.addPattern("+*.vtt");
-			securePackageResourceGuard.addPattern("+*.srt");
-		}
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/ac7cf808/wicket-core/src/main/java/org/apache/wicket/markup/html/media/PartWriterCallback.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/media/PartWriterCallback.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/media/PartWriterCallback.java
index 694544d..b5467ff 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/media/PartWriterCallback.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/media/PartWriterCallback.java
@@ -21,10 +21,10 @@ import java.io.InputStream;
 import java.io.OutputStream;
 
 import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.core.util.resource.PackageResourceStream;
 import org.apache.wicket.protocol.http.servlet.ResponseIOException;
 import org.apache.wicket.request.resource.AbstractResource.WriteCallback;
 import org.apache.wicket.request.resource.IResource.Attributes;
+import org.apache.wicket.util.resource.IResourceStream;
 
 /**
  * Used to read a part of the package resource stream and write it to the output stream of the
@@ -35,24 +35,24 @@ import org.apache.wicket.request.resource.IResource.Attributes;
  */
 public class PartWriterCallback extends WriteCallback
 {
-	private PackageResourceStream packageResourceStream;
+	private final IResourceStream resourceStream;
 
-	private Long startbyte;
+	private final Long startbyte;
 
 	private Long endbyte;
 
-	private Integer buffer;
+	private int bufferSize;
 
 	/**
 	 * Creates a part writer callback.<br>
 	 * <br>
-	 * Reads a part of the given package resource stream. If the startbyte parameter is not null the
+	 * Reads a part of the given resource stream. If the startbyte parameter is not null the
 	 * number of bytes are skipped till the stream is read. If the endbyte is not null the stream is
 	 * read till endbyte, else to the end of the whole stream. If startbyte and endbyte is null the
 	 * whole stream is read.
 	 * 
-	 * @param packageResourceStream
-	 *            the package resource stream to be read
+	 * @param resourceStream
+	 *            the resource stream to read
 	 * @param startbyte
 	 *            the start position to read from (if not null the number of bytes are skipped till
 	 *            the stream is read)
@@ -60,10 +60,10 @@ public class PartWriterCallback extends WriteCallback
 	 *            the end position to read to (if not null the stream is going to be read till
 	 *            endbyte, else to the end of the whole stream)
 	 */
-	public PartWriterCallback(PackageResourceStream packageResourceStream, Long startbyte,
+	public PartWriterCallback(IResourceStream resourceStream, Long startbyte,
 		Long endbyte)
 	{
-		this.packageResourceStream = packageResourceStream;
+		this.resourceStream = resourceStream;
 		this.startbyte = startbyte;
 		this.endbyte = endbyte;
 	}
@@ -71,7 +71,7 @@ public class PartWriterCallback extends WriteCallback
 	/**
 	 * Writes the data
 	 * 
-	 * @param Attributes
+	 * @param attributes
 	 *            the attributes to get the output stream of the response
 	 */
 	@Override
@@ -79,9 +79,9 @@ public class PartWriterCallback extends WriteCallback
 	{
 		try
 		{
-			InputStream inputStream = packageResourceStream.getInputStream();
+			InputStream inputStream = resourceStream.getInputStream();
 			OutputStream outputStream = attributes.getResponse().getOutputStream();
-			byte[] buffer = new byte[getBuffer()];
+			byte[] buffer = new byte[getBufferSize()];
 
 			if (startbyte != null || endbyte != null)
 			{
@@ -95,11 +95,11 @@ public class PartWriterCallback extends WriteCallback
 				// If there are no end bytes given read the whole stream till the end
 				if (endbyte == null)
 				{
-					endbyte = packageResourceStream.length().bytes();
+					endbyte = resourceStream.length().bytes();
 				}
 
 				long totalBytes = 0;
-				int actualReadBytes = 0;
+				int actualReadBytes;
 
 				while ((actualReadBytes = inputStream.read(buffer)) != -1)
 				{
@@ -107,7 +107,7 @@ public class PartWriterCallback extends WriteCallback
 					long lowerBuffer = endbyte - totalBytes;
 					if (lowerBuffer <= 0)
 					{
-						buffer = (byte[])resizeArray(buffer, actualReadBytes);
+						buffer = resizeArray(buffer, actualReadBytes);
 						outputStream.write(buffer);
 						break;
 					}
@@ -151,15 +151,14 @@ public class PartWriterCallback extends WriteCallback
 	 * @return A new array with the same contents.
 	 */
 	@SuppressWarnings("rawtypes")
-	private static Object resizeArray(Object oldArray, int newSize)
+	private static byte[] resizeArray(byte[] oldArray, int newSize)
 	{
-		int oldSize = java.lang.reflect.Array.getLength(oldArray);
-		Class elementType = oldArray.getClass().getComponentType();
-		Object newArray = java.lang.reflect.Array.newInstance(elementType, newSize);
-		int preserveLength = Math.min(oldSize, newSize);
-		if (preserveLength > 0)
+		int oldSize = oldArray.length;
+		byte[] newArray = new byte[newSize];
+		int minLength = Math.min(oldSize, newSize);
+		if (minLength > 0)
 		{
-			System.arraycopy(oldArray, 0, newArray, 0, preserveLength);
+			System.arraycopy(oldArray, 0, newArray, 0, minLength);
 		}
 		return newArray;
 	}
@@ -167,22 +166,22 @@ public class PartWriterCallback extends WriteCallback
 	/**
 	 * Sets the buffer size used to send the data to the client
 	 * 
-	 * @return the buffer size used to send the data to the client (default is 4048)
+	 * @return the buffer size used to send the data to the client (default is 4096)
 	 */
-	public Integer getBuffer()
+	public int getBufferSize()
 	{
-		return buffer != null ? buffer : 4048;
+		return bufferSize > 0 ? bufferSize : 4096;
 	}
 
 	/**
 	 * Sets the buffer size used to send the data to the client
 	 * 
-	 * @param buffer
+	 * @param bufferSize
 	 *            the buffer size used to send the data to the client
 	 */
-	public void setBuffer(Integer buffer)
+	public void setBufferSize(int bufferSize)
 	{
-		this.buffer = buffer;
+		this.bufferSize = bufferSize;
 	}
 
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ac7cf808/wicket-core/src/main/java/org/apache/wicket/markup/html/media/Source.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/media/Source.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/media/Source.java
index 8926609..c3fc50f 100755
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/media/Source.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/media/Source.java
@@ -27,89 +27,74 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
  * 
  * @author Tobias Soloschenko
  * @author Andrew Lombardi
- * 
  */
 public class Source extends WebMarkupContainer
 {
-
 	private static final long serialVersionUID = 1L;
 
-	private Boolean displayType;
+	private boolean displayType;
 
 	private String type;
 
 	private String media;
 
-	private MediaStreamingResourceReference mediaStreamingResourceReference;
+	private final MediaStreamingResourceReference mediaStreamingResourceReference;
 
-	private PageParameters pageParameters;
+	private final PageParameters pageParameters;
 
-	private String url;
+	private final String url;
 
 	public Source(String id)
 	{
-		super(id);
+		this(id, null, null, null, null);
 	}
 
 	public Source(String id, IModel<?> model)
 	{
-		super(id, model);
+		this(id, model, null, null, null);
 	}
 
 	public Source(String id, MediaStreamingResourceReference mediaStreamingResourceReference)
 	{
-		this(id);
-		this.mediaStreamingResourceReference = mediaStreamingResourceReference;
+		this(id, null, null, null, mediaStreamingResourceReference);
 	}
 
 	public Source(String id, IModel<?> model,
 		MediaStreamingResourceReference mediaStreamingResourceReference)
 	{
-		this(id, model);
-		this.mediaStreamingResourceReference = mediaStreamingResourceReference;
+		this(id, model, null, null, mediaStreamingResourceReference);
 	}
 
 	public Source(String id, MediaStreamingResourceReference mediaStreamingResourceReference,
 		PageParameters pageParameters)
 	{
-		this(id);
-		this.mediaStreamingResourceReference = mediaStreamingResourceReference;
-		this.pageParameters = pageParameters;
+		this(id, null, null, pageParameters, mediaStreamingResourceReference);
 	}
 
 	public Source(String id, IModel<?> model,
 		MediaStreamingResourceReference mediaStreamingResourceReference,
 		PageParameters pageParameters)
 	{
-		this(id, model);
-		this.mediaStreamingResourceReference = mediaStreamingResourceReference;
-		this.pageParameters = pageParameters;
+		this(id, model, null, pageParameters, mediaStreamingResourceReference);
 	}
 
 	public Source(String id, String url)
 	{
-		this(id);
-		this.url = url;
+		this(id, null, url, null, null);
 	}
 
 	public Source(String id, IModel<?> model, String url)
 	{
-		this(id, model);
-		this.url = url;
+		this(id, model, url, null, null);
 	}
 
-	public Source(String id, String url, PageParameters pageParameters)
+	private Source(String id, IModel<?> model, String url, PageParameters pageParameters,
+	               MediaStreamingResourceReference mediaStreamingResourceReference)
 	{
-		this(id);
-		this.url = url;
-		this.pageParameters = pageParameters;
-	}
-
-	public Source(String id, IModel<?> model, String url, PageParameters pageParameters)
-	{
-		this(id, model);
+		super(id, model);
 		this.url = url;
 		this.pageParameters = pageParameters;
+		this.mediaStreamingResourceReference = mediaStreamingResourceReference;
 	}
 
 	@Override
@@ -120,11 +105,9 @@ public class Source extends WebMarkupContainer
 
 		if (mediaStreamingResourceReference != null)
 		{
-			tag.put("src",
-				RequestCycle.get().urlFor(mediaStreamingResourceReference, pageParameters));
-		}
-
-		if (url != null)
+			CharSequence url = RequestCycle.get().urlFor(mediaStreamingResourceReference, pageParameters);
+			tag.put("src", url);
+		} else if (url != null)
 		{
 			tag.put("src", url);
 		}
@@ -141,9 +124,10 @@ public class Source extends WebMarkupContainer
 			}
 		}
 
-		if (media != null)
+		String _media = getMedia();
+		if (_media != null)
 		{
-			tag.put("media", media);
+			tag.put("media", _media);
 		}
 
 	}
@@ -153,9 +137,9 @@ public class Source extends WebMarkupContainer
 	 * 
 	 * @return If the type is going to be displayed
 	 */
-	public Boolean getDisplayType()
+	public boolean getDisplayType()
 	{
-		return displayType != null ? displayType : false;
+		return displayType;
 	}
 
 	/**
@@ -164,7 +148,7 @@ public class Source extends WebMarkupContainer
 	 * @param displayType
 	 *            if the type is going to be displayed
 	 */
-	public void setDisplayType(Boolean displayType)
+	public void setDisplayType(boolean displayType)
 	{
 		this.displayType = displayType;
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/ac7cf808/wicket-core/src/main/java/org/apache/wicket/markup/html/media/Track.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/media/Track.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/media/Track.java
index 8871b23..1dc5b52 100755
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/media/Track.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/media/Track.java
@@ -30,88 +30,72 @@ import org.apache.wicket.request.resource.ResourceReference;
  * media component
  * 
  * @author Tobias Soloschenko
- * 
  */
 public class Track extends WebMarkupContainer
 {
-
 	private static final long serialVersionUID = 1L;
 
 	private Kind kind;
 
 	private String label;
 
-	private Boolean defaultTrack;
+	private boolean defaultTrack;
 
 	private Locale srclang;
 
-	private ResourceReference resourceReference;
+	private final ResourceReference resourceReference;
 
-	private String url;
+	private final String url;
 
-	private PageParameters pageParameters;
+	private final PageParameters pageParameters;
 
 	public Track(String id)
 	{
-		super(id);
+		this(id, null, null, null, null);
 	}
 
 	public Track(String id, IModel<?> model)
 	{
-		super(id, model);
+		this(id, model, null, null, null);
 	}
 
 	public Track(String id, ResourceReference resourceReference)
 	{
-		this(id);
-		this.resourceReference = resourceReference;
+		this(id, null, null, null, resourceReference);
 	}
 
 	public Track(String id, IModel<?> model, ResourceReference resourceReference)
 	{
-		this(id, model);
-		this.resourceReference = resourceReference;
+		this(id, model, null, null, resourceReference);
 	}
 
 	public Track(String id, ResourceReference resourceReference, PageParameters pageParameters)
 	{
-		this(id);
-		this.resourceReference = resourceReference;
-		this.pageParameters = pageParameters;
+		this(id, null, null, pageParameters, resourceReference);
 	}
 
 	public Track(String id, IModel<?> model, ResourceReference resourceReference,
 		PageParameters pageParameters)
 	{
-		this(id, model);
-		this.resourceReference = resourceReference;
-		this.pageParameters = pageParameters;
+		this(id, model, null, pageParameters, resourceReference);
 	}
 
 	public Track(String id, String url)
 	{
-		this(id);
-		this.url = url;
+		this(id, null, url, null, null);
 	}
 
 	public Track(String id, IModel<?> model, String url)
 	{
-		this(id, model);
-		this.url = url;
+		this(id, model, url, null, null);
 	}
 
-	public Track(String id, String url, PageParameters pageParameters)
+	private Track(String id, IModel<?> model, String url, PageParameters pageParameters, ResourceReference resourceReference)
 	{
-		this(id);
-		this.url = url;
-		this.pageParameters = pageParameters;
-	}
-
-	public Track(String id, IModel<?> model, String url, PageParameters pageParameters)
-	{
-		this(id, model);
+		super(id, model);
 		this.url = url;
 		this.pageParameters = pageParameters;
+		this.resourceReference = resourceReference;
 	}
 
 	@Override
@@ -124,23 +108,24 @@ public class Track extends WebMarkupContainer
 		{
 			tag.put("src", RequestCycle.get().urlFor(resourceReference, pageParameters));
 		}
-
-		if (url != null)
+		else if (url != null)
 		{
 			tag.put("src", url);
 		}
 
-		if (kind != null)
+		Kind _kind = getKind();
+		if (_kind != null)
 		{
-			tag.put("kind", kind.name());
+			tag.put("kind", _kind.name());
 		}
 
-		if (label != null)
+		String _label = getLabel();
+		if (_label != null)
 		{
-			tag.put("label", label);
+			tag.put("label", _label);
 		}
 
-		if (defaultTrack != null && defaultTrack)
+		if (defaultTrack)
 		{
 			tag.put("default", "default");
 		}
@@ -148,9 +133,10 @@ public class Track extends WebMarkupContainer
 		// if the srclang field is set use this, else if the
 		// resource reference provides a locale use the language
 		// of the resource reference
-		if (srclang != null)
+		Locale _srclang = getSrclang();
+		if (_srclang != null)
 		{
-			tag.put("srclang", srclang.getLanguage());
+			tag.put("srclang", _srclang.getLanguage());
 		}
 		else if (resourceReference != null && resourceReference.getLocale() != null)
 		{
@@ -193,8 +179,8 @@ public class Track extends WebMarkupContainer
 	 * <b>metadata</b>: Tracks intended for use from script. Not displayed by the user agent.<br>
 	 * <br>
 	 * 
-	 * @param the
-	 *            kind
+	 * @param kind
+	 *          the kind
 	 */
 	public void setKind(Kind kind)
 	{
@@ -227,9 +213,9 @@ public class Track extends WebMarkupContainer
 	 * 
 	 * @return if the track is the default track
 	 */
-	public Boolean getDefaultTrack()
+	public boolean isDefaultTrack()
 	{
-		return defaultTrack != null ? defaultTrack : false;
+		return defaultTrack;
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/ac7cf808/wicket-core/src/main/java/org/apache/wicket/markup/html/media/audio/Audio.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/media/audio/Audio.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/media/audio/Audio.java
index 0bcef1c..3ab9615 100755
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/media/audio/Audio.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/media/audio/Audio.java
@@ -27,11 +27,9 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
  * 
  * @author Tobias Soloschenko
  * @author Andrew Lombardi
- * 
  */
 public class Audio extends MediaComponent
 {
-
 	private static final long serialVersionUID = 1L;
 
 	public Audio(String id)
@@ -78,16 +76,6 @@ public class Audio extends MediaComponent
 		super(id, model, url);
 	}
 
-	public Audio(String id, String url, PageParameters pageParameters)
-	{
-		super(id, url, pageParameters);
-	}
-
-	public Audio(String id, IModel<?> model, String url, PageParameters pageParameters)
-	{
-		super(id, model, url, pageParameters);
-	}
-
 	@Override
 	protected void onComponentTag(ComponentTag tag)
 	{

http://git-wip-us.apache.org/repos/asf/wicket/blob/ac7cf808/wicket-core/src/main/java/org/apache/wicket/markup/html/media/video/Video.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/media/video/Video.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/media/video/Video.java
index 79a8d7e..5a8b167 100755
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/media/video/Video.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/media/video/Video.java
@@ -32,7 +32,6 @@ import org.apache.wicket.request.resource.ResourceReference;
  */
 public class Video extends MediaComponent
 {
-
 	private static final long serialVersionUID = 1L;
 
 	private Integer width;
@@ -87,35 +86,28 @@ public class Video extends MediaComponent
 		super(id, model, url);
 	}
 
-	public Video(String id, String url, PageParameters pageParameters)
-	{
-		super(id, url, pageParameters);
-	}
-
-	public Video(String id, IModel<?> model, String url, PageParameters pageParameters)
-	{
-		super(id, model, url, pageParameters);
-	}
-
 	@Override
 	protected void onComponentTag(ComponentTag tag)
 	{
 		checkComponentTag(tag, "video");
 		super.onComponentTag(tag);
 
-		if (width != null)
+		Integer _width = getWidth();
+		if (_width != null)
 		{
-			tag.put("width", width);
+			tag.put("width", _width);
 		}
 
-		if (height != null)
+		Integer _height = getHeight();
+		if (_height != null)
 		{
-			tag.put("height", height);
+			tag.put("height", _height);
 		}
 
-		if (poster != null)
+		ResourceReference _poster = getPoster();
+		if (_poster != null)
 		{
-			tag.put("poster", RequestCycle.get().urlFor(poster, posterPageParameters));
+			tag.put("poster", RequestCycle.get().urlFor(_poster, getPosterPageParameters()));
 		}
 	}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/ac7cf808/wicket-core/src/test/java/org/apache/wicket/markup/html/media/Application.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/media/Application.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/media/Application.java
deleted file mode 100755
index 7a15513..0000000
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/media/Application.java
+++ /dev/null
@@ -1,37 +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.media;
-
-import org.apache.wicket.Page;
-import org.apache.wicket.protocol.http.WebApplication;
-
-public class Application extends WebApplication
-{
-
-	@Override
-	public Class<? extends Page> getHomePage()
-	{
-		return MediaTagsTestPage.class;
-	}
-	
-	@Override
-	protected void init()
-	{
-		super.init();
-		MediaUtils.init();
-	}
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/ac7cf808/wicket-core/src/test/java/org/apache/wicket/markup/html/media/MediaTagsExtendedTestPage.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/media/MediaTagsExtendedTestPage.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/media/MediaTagsExtendedTestPage.java
index 3f17ad7..b21b4bb 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/media/MediaTagsExtendedTestPage.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/media/MediaTagsExtendedTestPage.java
@@ -25,12 +25,10 @@ import org.apache.wicket.request.resource.PackageResourceReference;
 
 public class MediaTagsExtendedTestPage extends WebPage
 {
-
 	private static final long serialVersionUID = 1L;
 
 	public MediaTagsExtendedTestPage()
 	{
-
 		Video video = new Video("video", new MediaStreamingResourceReference(
 			MediaTagsTestPage.class, "dummyVideo.m4a"));
 		

http://git-wip-us.apache.org/repos/asf/wicket/blob/ac7cf808/wicket-core/src/test/java/org/apache/wicket/markup/html/media/MediaTagsTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/media/MediaTagsTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/media/MediaTagsTest.java
index 0863365..7c50031 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/media/MediaTagsTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/media/MediaTagsTest.java
@@ -16,80 +16,77 @@
  */
 package org.apache.wicket.markup.html.media;
 
+import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.util.tester.TagTester;
-import org.apache.wicket.util.tester.WicketTester;
-import org.junit.Assert;
-import org.junit.Before;
 import org.junit.Test;
 
-public class MediaTagsTest
+public class MediaTagsTest extends WicketTestCase
 {
-	private WicketTester wicketTester;
-
-	@Before
-	public void setup()
+	@Override
+	protected WebApplication newApplication()
 	{
-		wicketTester = new WicketTester(new Application());
+		return new MediaComponentsApplication();
 	}
 
 	@Test
-	public void testAudioTagIsRenderedRight()
+	public void audioTagIsRenderedRight()
 	{
-		wicketTester.startPage(MediaTagsTestPage.class);
-		String lastResponseAsString = wicketTester.getLastResponse().getDocument();
+		tester.startPage(MediaTagsTestPage.class);
+		String lastResponseAsString = tester.getLastResponse().getDocument();
 		TagTester createTagByAttribute = TagTester.createTagByAttribute(lastResponseAsString,
 			"audio");
-		Assert.assertTrue(createTagByAttribute.hasAttribute("autoplay"));
-		Assert.assertTrue(createTagByAttribute.hasAttribute("controls"));
-		Assert.assertTrue(createTagByAttribute.hasAttribute("loop"));
-		Assert.assertTrue(createTagByAttribute.hasAttribute("muted"));
-		Assert.assertEquals("user-credentials", createTagByAttribute.getAttribute("crossorigin"));
+		assertTrue(createTagByAttribute.hasAttribute("autoplay"));
+		assertTrue(createTagByAttribute.hasAttribute("controls"));
+		assertTrue(createTagByAttribute.hasAttribute("loop"));
+		assertTrue(createTagByAttribute.hasAttribute("muted"));
+		assertEquals("user-credentials", createTagByAttribute.getAttribute("crossorigin"));
 		String attribute = createTagByAttribute.getAttribute("src");
-		Assert.assertTrue("The time period is set right in the src attribute",
+		assertTrue("The time period is set right in the src attribute",
 			attribute.contains("#t=5,10"));
-		Assert.assertTrue("page parameter is in the url of the src attribute",
+		assertTrue("page parameter is in the url of the src attribute",
 			attribute.contains("test=test"));
 	}
 
 	@Test
-	public void testVideoTagIsRenderedRight()
+	public void videoTagIsRenderedRight()
 	{
-		wicketTester.startPage(MediaTagsTestPage.class);
-		String lastResponseAsString = wicketTester.getLastResponse().getDocument();
+		tester.startPage(MediaTagsTestPage.class);
+		String lastResponseAsString = tester.getLastResponse().getDocument();
 		TagTester createTagByAttribute = TagTester.createTagByAttribute(lastResponseAsString,
 			"video");
 		String attribute = createTagByAttribute.getAttribute("poster");
-		Assert.assertTrue("page parameter is in the url of the poster",
+		assertTrue("page parameter is in the url of the poster",
 			attribute.contains("test2=test2"));
 		String attributesrc = createTagByAttribute.getAttribute("src");
-		Assert.assertTrue("video url is in the src attribute",
+		assertTrue("video url is in the src attribute",
 			attributesrc.contains("dummyVideo.m4a"));
-		Assert.assertEquals("500", createTagByAttribute.getAttribute("width"));
-		Assert.assertEquals("400", createTagByAttribute.getAttribute("height"));
+		assertEquals("500", createTagByAttribute.getAttribute("width"));
+		assertEquals("400", createTagByAttribute.getAttribute("height"));
 	}
 
 	@Test
-	public void testextendedVideoTagIsRenderedRight()
+	public void extendedVideoTagIsRenderedRight()
 	{
-		wicketTester.startPage(MediaTagsExtendedTestPage.class);
-		String lastResponseAsString = wicketTester.getLastResponse().getDocument();
+		tester.startPage(MediaTagsExtendedTestPage.class);
+		String lastResponseAsString = tester.getLastResponse().getDocument();
 		TagTester createTagByAttribute = TagTester.createTagByAttribute(lastResponseAsString,
 			"video");
-		Assert.assertTrue(createTagByAttribute.hasChildTag("source"));
-		Assert.assertTrue(createTagByAttribute.hasChildTag("track"));
+		assertTrue(createTagByAttribute.hasChildTag("source"));
+		assertTrue(createTagByAttribute.hasChildTag("track"));
 		
 		
 		TagTester sourceTag = TagTester.createTagByAttribute(lastResponseAsString, "source");
-		Assert.assertEquals("video/mp4", sourceTag.getAttribute("type")); 
-		Assert.assertEquals("screen and (device-width:500px)", sourceTag.getAttribute("media")); 
-		Assert.assertEquals("http://www.mytestpage.xc/video.m4a", sourceTag.getAttribute("src")); 
+		assertEquals("video/mp4", sourceTag.getAttribute("type")); 
+		assertEquals("screen and (device-width:500px)", sourceTag.getAttribute("media")); 
+		assertEquals("http://www.mytestpage.xc/video.m4a", sourceTag.getAttribute("src")); 
 		
 		TagTester trackTag = TagTester.createTagByAttribute(lastResponseAsString, "track");
 		
-		Assert.assertTrue(trackTag.getAttribute("src").contains("dummySubtitles")); 
-		Assert.assertEquals("subtitles", trackTag.getAttribute("kind")); 
-		Assert.assertEquals("Subtitles of video", trackTag.getAttribute("label")); 
-		Assert.assertEquals("default", trackTag.getAttribute("default")); 
-		Assert.assertEquals("de", trackTag.getAttribute("srclang")); 
+		assertTrue(trackTag.getAttribute("src").contains("dummySubtitles")); 
+		assertEquals("subtitles", trackTag.getAttribute("kind")); 
+		assertEquals("Subtitles of video", trackTag.getAttribute("label")); 
+		assertEquals("default", trackTag.getAttribute("default")); 
+		assertEquals("de", trackTag.getAttribute("srclang")); 
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ac7cf808/wicket-core/src/test/java/org/apache/wicket/markup/html/media/MediaTagsTestPage.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/media/MediaTagsTestPage.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/media/MediaTagsTestPage.java
index 6bb6619..e8dbdd8 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/media/MediaTagsTestPage.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/media/MediaTagsTestPage.java
@@ -25,7 +25,6 @@ import org.apache.wicket.request.resource.PackageResourceReference;
 
 public class MediaTagsTestPage extends WebPage
 {
-
 	private static final long serialVersionUID = 1L;
 
 	public MediaTagsTestPage()
@@ -37,7 +36,7 @@ public class MediaTagsTestPage extends WebPage
 		audio.setAutoplay(true);
 		audio.setControls(true);
 		audio.setCrossOrigin(Cors.USER_CREDENTIALS);
-		audio.setLoop(true);
+		audio.setLooping(true);
 		audio.setMuted(true);
 		audio.setStartTime("5");
 		audio.setEndTime("10");