You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2015/02/05 23:21:41 UTC
[01/13] wicket git commit: Compression - Allow multiple
ICssCompressors and IJavaScriptCompressors - CssUrlReplacer
Repository: wicket
Updated Branches:
refs/heads/pr-87-css_js_compression [created] 08f8a5567
Compression
- Allow multiple ICssCompressors and IJavaScriptCompressors
- CssUrlReplacer
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/9752eac7
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/9752eac7
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/9752eac7
Branch: refs/heads/pr-87-css_js_compression
Commit: 9752eac7fb63e83ffceb9969a1b4f6aa9305b5e7
Parents: f0340a3
Author: klopfdreh <kl...@tobiass-mbp>
Authored: Wed Feb 4 13:15:11 2015 +0100
Committer: klopfdreh <kl...@tobiass-mbp>
Committed: Wed Feb 4 13:15:11 2015 +0100
----------------------------------------------------------------------
.../wicket/resource/CompositeCssCompressor.java | 82 +++++++++++
.../resource/CompositeJavaScriptCompressor.java | 79 +++++++++++
.../resource/CssUrlReplacementCompressor.java | 140 +++++++++++++++++++
3 files changed, 301 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/9752eac7/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
new file mode 100644
index 0000000..7b3c6e8
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
@@ -0,0 +1,82 @@
+/*
+ * 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.resource;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.wicket.css.ICssCompressor;
+
+/**
+ * Used to apply several {@link ICssCompressor} to the css compression.<br>
+ * <br>
+ * Usage:
+ *
+ * <pre>
+ * CompositeCssCompressor compositeCssCompressor = new CompositeCssCompressor();
+ *
+ * compositeCssCompressor.getCompressors().add(new MyCssCompressor());
+ * compositeCssCompressor.getCompressors().add(new AnotherCssCompressor());
+ *
+ * this.getResourceSettings().setCssCompressor(compositeCssCompressor);
+ * </pre>
+ * @since 6.20.0
+ * @author Tobias Soloschenko
+ *
+ */
+public class CompositeCssCompressor implements ICssCompressor
+{
+
+ /* Compressors to compress the CSS content */
+ private List<ICssCompressor> compressors;
+
+ /**
+ * Compresses the given original content in the order of compressors.
+ */
+ @Override
+ public String compress(String original)
+ {
+ if (compressors != null)
+ {
+ String compressed = original;
+ for (ICssCompressor compressor : compressors)
+ {
+ compressed = compressor.compress(compressed);
+ }
+ return compressed;
+ }
+ else
+ {
+ return original;
+ }
+ }
+
+ /**
+ * Gets a list of {@link ICssCompressor} to be used for CSS compression. They are applied in the
+ * order of the List.
+ *
+ * @return A list of {@link ICssCompressor} to be used for CSS compression.
+ */
+ public List<ICssCompressor> getCompressors()
+ {
+ if (compressors == null)
+ {
+ compressors = new ArrayList<>();
+ }
+ return compressors;
+ }
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/9752eac7/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java
new file mode 100644
index 0000000..13d5efc
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java
@@ -0,0 +1,79 @@
+/*
+ * 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.resource;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.wicket.javascript.IJavaScriptCompressor;
+
+/**
+ * Used to apply several {@link IJavaScriptCompressor} to the javascript compression.<br>
+ * <br>
+ * Usage:
+ *
+ * <pre>
+ * CompositeJavaScriptCompressor compositeJavaScriptCompressor = new CompositeJavaScriptCompressor();
+ *
+ * compositeJavaScriptCompressor.getCompressors().add(new MyJavaScriptCompressor());
+ * compositeJavaScriptCompressor.getCompressors().add(new AnotherJavaScriptCompressor());
+ *
+ * this.getResourceSettings().setJavaScriptCompressor(compositeJavaScriptCompressor);
+ * </pre>
+ * @since 6.20.0
+ * @author Tobias Soloschenko
+ *
+ */
+public class CompositeJavaScriptCompressor implements IJavaScriptCompressor
+{
+
+ /* Compressors to compress javascript content */
+ private List<IJavaScriptCompressor> compressors;
+
+ @Override
+ public String compress(String original)
+ {
+ if (compressors != null)
+ {
+ String compressed = original;
+ for (IJavaScriptCompressor compressor : compressors)
+ {
+ compressed = compressor.compress(compressed);
+ }
+ return compressed;
+ }
+ else
+ {
+ return original;
+ }
+ }
+
+ /**
+ * Gets a list of {@link IJavaScriptCompressor} to be used for javascript compression. They are applied in the
+ * order of the List.
+ *
+ * @return A list of {@link IJavaScriptCompressor} to be used for javascript compression.
+ */
+ public List<IJavaScriptCompressor> getCompressors()
+ {
+ if (compressors == null)
+ {
+ compressors = new ArrayList<>();
+ }
+ return compressors;
+ }
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/9752eac7/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java
new file mode 100644
index 0000000..eac8d23
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java
@@ -0,0 +1,140 @@
+/*
+ * 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.resource;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.wicket.Application;
+import org.apache.wicket.Component;
+import org.apache.wicket.Page;
+import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.application.IComponentInitializationListener;
+import org.apache.wicket.css.ICssCompressor;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.request.resource.PackageResourceReference;
+
+/**
+ * This compressor is used to replace url within css files with resources that belongs to their
+ * corresponding page classes. The compress method is not compressing any content, but replacing the URLs
+ * with Wicket representatives.<br>
+ * <br>
+ * Usage:
+ *
+ * <pre>
+ * this.getResourceSettings().setCssCompressor(new CssUrlReplacementCompressor(this));
+ * </pre>
+ *
+ * @since 6.20.0
+ * @author Tobias Soloschenko
+ *
+ */
+public class CssUrlReplacementCompressor implements ICssCompressor
+{
+
+ // Holds the names of pages
+ private List<String> pageNames = new ArrayList<String>();
+
+ // The pattern to find URLs in CSS resources
+ private Pattern urlPattern = Pattern.compile("url\\(['|\"](.*)['|\"]\\)");
+
+ public CssUrlReplacementCompressor(Application application)
+ {
+
+ // Create an instantiation listener which filters only pages.
+ application.getComponentInitializationListeners().add(
+ new IComponentInitializationListener()
+ {
+
+ @Override
+ public void onInitialize(Component component)
+ {
+ if (Page.class.isAssignableFrom(component.getClass()))
+ {
+ CssUrlReplacementCompressor.this.pageNames.add(component.getClass().getName());
+ }
+ }
+ });
+ }
+
+ /**
+ * Replaces the URLs of CSS resources with Wicket representatives.
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public String compress(String original)
+ {
+ Matcher matcher = this.urlPattern.matcher(original);
+ // Search for urls
+ while (matcher.find())
+ {
+ for (String pageName : this.pageNames)
+ {
+ try
+ {
+ Class<Page> pageClass = (Class<Page>)Class.forName(pageName);
+ String url = matcher.group(1);
+ if (!url.contains("/"))
+ {
+ URL urlResource = pageClass.getResource(url);
+ // If the resource is not found for a page skip it
+ if (urlResource != null)
+ {
+ PackageResourceReference packageResourceReference = new PackageResourceReference(
+ pageClass, url);
+ String replacedUrl = RequestCycle.get()
+ .urlFor(packageResourceReference, null)
+ .toString();
+ StringBuilder urlBuilder = new StringBuilder();
+ urlBuilder.append("url('");
+ urlBuilder.append(replacedUrl);
+ urlBuilder.append("')");
+ original = matcher.replaceFirst(urlBuilder.toString());
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ StringWriter stringWriter = this.printStack(e);
+ throw new WicketRuntimeException(stringWriter.toString());
+ }
+ }
+
+ }
+ return original;
+ }
+
+ /**
+ * Prints the stack trace to a print writer
+ *
+ * @param exception
+ * the exception
+ * @return the string writer containing the stack trace
+ */
+ private StringWriter printStack(Exception exception)
+ {
+ StringWriter stringWriter = new StringWriter();
+ PrintWriter printWriter = new PrintWriter(stringWriter);
+ exception.printStackTrace(printWriter);
+ return stringWriter;
+ }
+}
[13/13] wicket git commit: WICKET-5827 Allow to apply multiple
Javascript / CSS compressors
Posted by mg...@apache.org.
WICKET-5827 Allow to apply multiple Javascript / CSS compressors
Re-implement CssUrlReplacer
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/08f8a556
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/08f8a556
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/08f8a556
Branch: refs/heads/pr-87-css_js_compression
Commit: 08f8a556722b8b803430194ab8e80d00199a5401
Parents: b87b459
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Fri Feb 6 00:20:57 2015 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Fri Feb 6 00:20:57 2015 +0200
----------------------------------------------------------------------
.../request/resource/CssPackageResource.java | 17 +++-
.../wicket/resource/CompositeCssCompressor.java | 22 ++++-
.../apache/wicket/resource/CssUrlReplacer.java | 94 +++++---------------
.../IScopeAwareTextResourceProcessor.java | 17 ++++
.../wicket/resource/CssUrlReplacerTest.java | 75 ++++++++++++++++
5 files changed, 148 insertions(+), 77 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/08f8a556/wicket-core/src/main/java/org/apache/wicket/request/resource/CssPackageResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/CssPackageResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/CssPackageResource.java
index f6cf010..72e2dc1 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/CssPackageResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/CssPackageResource.java
@@ -20,6 +20,7 @@ import java.util.Locale;
import org.apache.wicket.Application;
import org.apache.wicket.css.ICssCompressor;
+import org.apache.wicket.resource.IScopeAwareTextResourceProcessor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,6 +33,8 @@ public class CssPackageResource extends PackageResource
private static final Logger log = LoggerFactory.getLogger(CssPackageResource.class);
+ private final String name;
+
/**
* Construct.
*
@@ -46,6 +49,8 @@ public class CssPackageResource extends PackageResource
{
super(scope, name, locale, style, variation);
+ this.name = name;
+
// CSS resources can be compressed if there is configured ICssCompressor
setCompress(true);
}
@@ -62,7 +67,17 @@ public class CssPackageResource extends PackageResource
try
{
String nonCompressed = new String(processedResponse, "UTF-8");
- return compressor.compress(nonCompressed).getBytes();
+ String output;
+ if (compressor instanceof IScopeAwareTextResourceProcessor)
+ {
+ IScopeAwareTextResourceProcessor scopeAwareProcessor = (IScopeAwareTextResourceProcessor) compressor;
+ output = scopeAwareProcessor.process(nonCompressed, getScope(), name);
+ }
+ else
+ {
+ output = compressor.compress(nonCompressed);
+ }
+ return output.getBytes();
}
catch (Exception e)
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/08f8a556/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
index 6756491..f23c937 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
@@ -41,7 +41,7 @@ import org.apache.wicket.css.ICssCompressor;
* @author Tobias Soloschenko
*
*/
-public class CompositeCssCompressor implements ICssCompressor
+public class CompositeCssCompressor implements IScopeAwareTextResourceProcessor
{
/* Compressors to compress the CSS content */
private final List<ICssCompressor> compressors = new ArrayList<>();
@@ -62,16 +62,30 @@ public class CompositeCssCompressor implements ICssCompressor
* given the original content is going to be returned.
*/
@Override
- public String compress(String original)
+ public String process(String input, Class<?> scope, String name)
{
- String compressed = original;
+ String compressed = input;
for (ICssCompressor compressor : compressors)
{
- compressed = compressor.compress(compressed);
+ if (compressor instanceof IScopeAwareTextResourceProcessor)
+ {
+ IScopeAwareTextResourceProcessor processor = (IScopeAwareTextResourceProcessor) compressor;
+ processor.process(compressed, scope, name);
+ }
+ else
+ {
+ compressed = compressor.compress(compressed);
+ }
}
return compressed;
}
+ @Override
+ public String compress(String original)
+ {
+ throw new UnsupportedOperationException(CompositeCssCompressor.class.getSimpleName() + ".process() should be used instead!");
+ }
+
/**
* Adds a ICssCompressor to the list of delegates.
*
http://git-wip-us.apache.org/repos/asf/wicket/blob/08f8a556/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
index 7c7864e..985c275 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
@@ -16,20 +16,10 @@
*/
package org.apache.wicket.resource;
-import java.net.URL;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.wicket.Application;
-import org.apache.wicket.Component;
-import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.application.IComponentInitializationListener;
-import org.apache.wicket.core.util.lang.WicketObjects;
-import org.apache.wicket.css.ICssCompressor;
+import org.apache.wicket.request.Url;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.resource.PackageResourceReference;
@@ -46,78 +36,38 @@ import org.apache.wicket.request.resource.PackageResourceReference;
*
* @since 6.20.0
* @author Tobias Soloschenko
- *
*/
-public class CssUrlReplacer implements ICssCompressor
+public class CssUrlReplacer implements IScopeAwareTextResourceProcessor
{
-
- // Holds the names of components
- private final Map<String, String> componentNames = Collections.synchronizedMap(new LinkedHashMap<String, String>());
-
// The pattern to find URLs in CSS resources
- private static final Pattern urlPattern = Pattern.compile("url\\(['|\"]*(.*)['|\"]*\\)");
-
- public CssUrlReplacer(Application application)
- {
-
- // Create an instantiation listener to detect components
- application.getComponentInitializationListeners().add(
- new IComponentInitializationListener()
- {
-
- @Override
- public void onInitialize(Component component)
- {
- CssUrlReplacer.this.componentNames.put(component.getClass().getName(),
- component.getClass().getSimpleName());
- }
- });
- }
+ private static final Pattern URL_PATTERN = Pattern.compile("url\\(['|\"]*(.*?)['|\"]*\\)");
/**
* Replaces the URLs of CSS resources with Wicket representatives.
*/
@Override
- public String compress(String original)
+ public String process(String input, Class<?> scope, String name)
{
- Matcher matcher = CssUrlReplacer.urlPattern.matcher(original);
- // Search for urls
+ PackageResourceReference cssReference = new PackageResourceReference(scope, name);
+ CharSequence urlToCss = RequestCycle.get().urlFor(cssReference, null);
+ Url cssUrl = Url.parse(urlToCss);
+ Matcher matcher = URL_PATTERN.matcher(input);
+ StringBuffer output = new StringBuffer();
+
while (matcher.find())
{
- Collection<String> componentNames = this.componentNames.keySet();
- for (String componentName : componentNames)
- {
- try
- {
- Class<?> componentClass = WicketObjects.resolveClass(componentName);
- String url = matcher.group(1);
- if (!url.contains("/"))
- {
- URL urlResource = componentClass.getResource(url);
- // If the resource is not found skip it
- if (urlResource != null)
- {
- PackageResourceReference packageResourceReference = new PackageResourceReference(
- componentClass, url);
- String replacedUrl = RequestCycle.get()
- .urlFor(packageResourceReference, null)
- .toString();
- StringBuilder urlBuilder = new StringBuilder();
- urlBuilder.append("url('");
- urlBuilder.append(replacedUrl);
- urlBuilder.append("')");
- original = matcher.replaceFirst(urlBuilder.toString());
- }
- }
- }
- catch (Exception e)
- {
- throw new WicketRuntimeException(
- "A problem occurred during CSS url replacement.", e);
- }
- }
-
+ Url imageRelativeUrl = Url.parse(matcher.group(1));
+ Url cssUrlCopy = new Url(cssUrl);
+ cssUrlCopy.resolveRelative(imageRelativeUrl);
+ matcher.appendReplacement(output, "url('" + cssUrlCopy.toString() + "')");
}
- return original;
+ matcher.appendTail(output);
+ return output.toString();
+ }
+
+ @Override
+ public String compress(String original)
+ {
+ throw new UnsupportedOperationException(CssUrlReplacer.class.getSimpleName() + ".process() should be used instead!");
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/08f8a556/wicket-core/src/main/java/org/apache/wicket/resource/IScopeAwareTextResourceProcessor.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/IScopeAwareTextResourceProcessor.java b/wicket-core/src/main/java/org/apache/wicket/resource/IScopeAwareTextResourceProcessor.java
new file mode 100644
index 0000000..2b37c27
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/IScopeAwareTextResourceProcessor.java
@@ -0,0 +1,17 @@
+package org.apache.wicket.resource;
+
+/**
+ *
+ */
+public interface IScopeAwareTextResourceProcessor extends ITextResourceCompressor
+{
+ /**
+ * Processes/manipulates a text resource.
+ *
+ *
+ * @param input
+ * @param scope
+ * @return The processed input
+ */
+ public String process(String input, Class<?> scope, String name);
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/08f8a556/wicket-core/src/test/java/org/apache/wicket/resource/CssUrlReplacerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/resource/CssUrlReplacerTest.java b/wicket-core/src/test/java/org/apache/wicket/resource/CssUrlReplacerTest.java
new file mode 100644
index 0000000..157bd60
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/resource/CssUrlReplacerTest.java
@@ -0,0 +1,75 @@
+package org.apache.wicket.resource;
+
+import static org.hamcrest.Matchers.containsString;
+import static org.hamcrest.Matchers.is;
+
+import org.apache.wicket.WicketTestCase;
+import org.junit.Test;
+
+public class CssUrlReplacerTest extends WicketTestCase
+{
+ @Test
+ public void sameFolderSingleQuotes()
+ {
+ String input = ".class {background-image: url('some.img');}";
+ Class<?> scope = CssUrlReplacerTest.class;
+ String cssRelativePath = "res/css/some.css";
+ CssUrlReplacer replacer = new CssUrlReplacer();
+
+ String processed = replacer.process(input, scope, cssRelativePath);
+ assertThat(processed, is(".class {background-image: url('./wicket/resource/org.apache.wicket.resource.CssUrlReplacerTest/res/css/some.img');}"));
+ }
+
+ @Test
+ public void sameFolderDoubleQuotes()
+ {
+ String input = ".class {background-image: url(\"some.img\");}";
+ Class<?> scope = CssUrlReplacerTest.class;
+ String cssRelativePath = "res/css/some.css";
+ CssUrlReplacer replacer = new CssUrlReplacer();
+
+ String processed = replacer.process(input, scope, cssRelativePath);
+ assertThat(processed, is(".class {background-image: url('./wicket/resource/org.apache.wicket.resource.CssUrlReplacerTest/res/css/some.img');}"));
+ }
+
+ @Test
+ public void parentFolderAppendFolder()
+ {
+ String input = ".class {background-image: url('../images/some.img');}";
+ Class<?> scope = CssUrlReplacerTest.class;
+ String cssRelativePath = "res/css/some.css";
+ CssUrlReplacer replacer = new CssUrlReplacer();
+
+ String processed = replacer.process(input, scope, cssRelativePath);
+ assertThat(processed, is(".class {background-image: url('./wicket/resource/org.apache.wicket.resource.CssUrlReplacerTest/res/images/some.img');}"));
+ }
+
+ @Test
+ public void sameFolderAppendFolder()
+ {
+ String input = ".class {background-image: url('./images/some.img');}";
+ Class<?> scope = CssUrlReplacerTest.class;
+ String cssRelativePath = "res/css/some.css";
+ CssUrlReplacer replacer = new CssUrlReplacer();
+
+ String processed = replacer.process(input, scope, cssRelativePath);
+ assertThat(processed, is(".class {background-image: url('./wicket/resource/org.apache.wicket.resource.CssUrlReplacerTest/res/css/images/some.img');}"));
+ }
+
+ @Test
+ public void severalUrls()
+ {
+ String input =
+ ".class {\n" +
+ "a: url('../images/a.img');\n" +
+ "b: url('./b.img');\n" +
+ "}";
+ Class<?> scope = CssUrlReplacerTest.class;
+ String cssRelativePath = "res/css/some.css";
+ CssUrlReplacer replacer = new CssUrlReplacer();
+
+ String processed = replacer.process(input, scope, cssRelativePath);
+ assertThat(processed, containsString("CssUrlReplacerTest/res/images/a.img');"));
+ assertThat(processed, containsString("CssUrlReplacerTest/res/css/b.img');"));
+ }
+}
[03/13] wicket git commit: CssUrlReplacementCompressor keys instead
values
Posted by mg...@apache.org.
CssUrlReplacementCompressor keys instead values
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/d0864f1d
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/d0864f1d
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/d0864f1d
Branch: refs/heads/pr-87-css_js_compression
Commit: d0864f1d85ceb65532f4a1f53cd09e6cf8d3c8ad
Parents: b863504
Author: klopfdreh <kl...@tobiass-mbp>
Authored: Wed Feb 4 15:43:41 2015 +0100
Committer: klopfdreh <kl...@tobiass-mbp>
Committed: Wed Feb 4 15:43:41 2015 +0100
----------------------------------------------------------------------
.../org/apache/wicket/resource/CssUrlReplacementCompressor.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/d0864f1d/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java
index 44d67e5..ce89f53 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java
@@ -90,7 +90,7 @@ public class CssUrlReplacementCompressor implements ICssCompressor
// Search for urls
while (matcher.find())
{
- Collection<String> pageNames = this.pageNames.values();
+ Collection<String> pageNames = this.pageNames.keySet();
for (String pageName : pageNames)
{
try
[06/13] wicket git commit: static / static final fields
Posted by mg...@apache.org.
static / static final fields
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/eca07da8
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/eca07da8
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/eca07da8
Branch: refs/heads/pr-87-css_js_compression
Commit: eca07da8b82ac2abe735939f34ba9f49efff346c
Parents: 2ac0c64
Author: klopfdreh <kl...@tobiass-mbp>
Authored: Wed Feb 4 17:42:59 2015 +0100
Committer: klopfdreh <kl...@tobiass-mbp>
Committed: Wed Feb 4 17:42:59 2015 +0100
----------------------------------------------------------------------
.../main/java/org/apache/wicket/resource/CssUrlReplacer.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/eca07da8/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
index c39dcea..01b92fa 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
@@ -52,10 +52,10 @@ public class CssUrlReplacer implements ICssCompressor
{
// Holds the names of pages
- private Map<String, String> pageNames = Collections.synchronizedMap(new LinkedHashMap<String, String>());
+ private final Map<String, String> pageNames = Collections.synchronizedMap(new LinkedHashMap<String, String>());
// The pattern to find URLs in CSS resources
- private Pattern urlPattern = Pattern.compile("url\\(['|\"](.*)['|\"]\\)");
+ private static final Pattern urlPattern = Pattern.compile("url\\(['|\"](.*)['|\"]\\)");
public CssUrlReplacer(Application application)
{
@@ -84,7 +84,7 @@ public class CssUrlReplacer implements ICssCompressor
@Override
public String compress(String original)
{
- Matcher matcher = this.urlPattern.matcher(original);
+ Matcher matcher = CssUrlReplacer.urlPattern.matcher(original);
// Search for urls
while (matcher.find())
{
[12/13] wicket git commit: WICKET-5827 Allow to apply multiple
Javascript / CSS compressors
Posted by mg...@apache.org.
WICKET-5827 Allow to apply multiple Javascript / CSS compressors
Simplify the API of CompositeJavaScriptCompressor/CompositeCssCompressor. No need to expose the list.
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/b87b4591
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/b87b4591
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/b87b4591
Branch: refs/heads/pr-87-css_js_compression
Commit: b87b4591bf83940f7de75d98278cb6030f6d4e56
Parents: aba8360
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Feb 5 23:33:07 2015 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Feb 5 23:33:07 2015 +0200
----------------------------------------------------------------------
.../wicket/resource/CompositeCssCompressor.java | 21 ++++++++++----------
.../resource/CompositeJavaScriptCompressor.java | 19 +++++++++---------
2 files changed, 19 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/b87b4591/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
index a288596..6756491 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
@@ -30,8 +30,8 @@ import org.apache.wicket.css.ICssCompressor;
* <pre>
* CompositeCssCompressor compositeCssCompressor = new CompositeCssCompressor();
*
- * compositeCssCompressor.getCompressors().add(new MyCssCompressor());
- * compositeCssCompressor.getCompressors().add(new AnotherCssCompressor());
+ * compositeCssCompressor.add(new MyCssCompressor());
+ * compositeCssCompressor.add(new AnotherCssCompressor());
*
* this.getResourceSettings().setCssCompressor(compositeCssCompressor);
* </pre>
@@ -43,15 +43,14 @@ import org.apache.wicket.css.ICssCompressor;
*/
public class CompositeCssCompressor implements ICssCompressor
{
-
/* Compressors to compress the CSS content */
private final List<ICssCompressor> compressors = new ArrayList<>();
/**
- * Initializes the composite CSS compressor with the given {@link ICssCompressor}
+ * Initializes the composite CSS compressor with the given {@link ICssCompressor}(s)
*
* @param compressors
- * several {@link ICssCompressor} the composite CSS compressor is initialized with
+ * The {@link ICssCompressor}(s) this composite CSS compressor is initialized with
*/
public CompositeCssCompressor(ICssCompressor... compressors)
{
@@ -74,13 +73,13 @@ public class CompositeCssCompressor implements ICssCompressor
}
/**
- * Gets a list of {@link ICssCompressor} to be used for CSS compression. They are applied in the
- * order of the List.
- *
- * @return A list of {@link ICssCompressor} to be used for CSS compression.
+ * Adds a ICssCompressor to the list of delegates.
+ *
+ * @return {@code this} instance, for chaining
*/
- public List<ICssCompressor> getCompressors()
+ public CompositeCssCompressor add(ICssCompressor compressor)
{
- return compressors;
+ compressors.add(compressor);
+ return this;
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/b87b4591/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java
index c1888e2..d0f2ffb 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java
@@ -30,8 +30,8 @@ import org.apache.wicket.javascript.IJavaScriptCompressor;
* <pre>
* CompositeJavaScriptCompressor compositeJavaScriptCompressor = new CompositeJavaScriptCompressor();
*
- * compositeJavaScriptCompressor.getCompressors().add(new MyJavaScriptCompressor());
- * compositeJavaScriptCompressor.getCompressors().add(new AnotherJavaScriptCompressor());
+ * compositeJavaScriptCompressor.add(new MyJavaScriptCompressor());
+ * compositeJavaScriptCompressor.add(new AnotherJavaScriptCompressor());
*
* this.getResourceSettings().setJavaScriptCompressor(compositeJavaScriptCompressor);
* </pre>
@@ -43,15 +43,14 @@ import org.apache.wicket.javascript.IJavaScriptCompressor;
*/
public class CompositeJavaScriptCompressor implements IJavaScriptCompressor
{
-
/* Compressors to compress javascript content */
private final List<IJavaScriptCompressor> compressors = new ArrayList<>();
/**
- * Initializes the composite javascript compressor with the given {@link IJavaScriptCompressor}
+ * Initializes the composite javascript compressor with the given {@link IJavaScriptCompressor}(s)
*
* @param compressors
- * several {@link IJavaScriptCompressor} the composite javascript compressor is
+ * The {@link IJavaScriptCompressor}(s) this composite javascript compressor is
* initialized with
*/
public CompositeJavaScriptCompressor(IJavaScriptCompressor... compressors)
@@ -75,13 +74,13 @@ public class CompositeJavaScriptCompressor implements IJavaScriptCompressor
}
/**
- * Gets a list of {@link IJavaScriptCompressor} to be used for javascript compression. They are
- * applied in the order of the List.
+ * Adds a IJavaScriptCompressor to the list of delegates.
*
- * @return A list of {@link IJavaScriptCompressor} to be used for javascript compression.
+ * @return {@code this} instance, for chaining
*/
- public List<IJavaScriptCompressor> getCompressors()
+ public CompositeJavaScriptCompressor add(IJavaScriptCompressor compressor)
{
- return compressors;
+ compressors.add(compressor);
+ return this;
}
}
[10/13] wicket git commit: Typo in CssUrlReplacer
Posted by mg...@apache.org.
Typo in CssUrlReplacer
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/8b146b2f
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/8b146b2f
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/8b146b2f
Branch: refs/heads/pr-87-css_js_compression
Commit: 8b146b2fc4db42b7eb665d2afffd4083b99488e4
Parents: f2decb8
Author: klopfdreh <kl...@tobiass-mbp>
Authored: Wed Feb 4 19:06:01 2015 +0100
Committer: klopfdreh <kl...@tobiass-mbp>
Committed: Wed Feb 4 19:06:01 2015 +0100
----------------------------------------------------------------------
.../src/main/java/org/apache/wicket/resource/CssUrlReplacer.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/8b146b2f/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
index 1945641..7c7864e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
@@ -41,7 +41,7 @@ import org.apache.wicket.request.resource.PackageResourceReference;
* Usage:
*
* <pre>
- * this.getResourceSettings().setCssCompressor(new CssUrlReplacementCompressor(this));
+ * this.getResourceSettings().setCssCompressor(new CssUrlReplacer(this));
* </pre>
*
* @since 6.20.0
[09/13] wicket git commit: Optional comments
Posted by mg...@apache.org.
Optional comments
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/f2decb88
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/f2decb88
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/f2decb88
Branch: refs/heads/pr-87-css_js_compression
Commit: f2decb88d8384b0f8edffb7a1f33103fd851ead9
Parents: b96c404
Author: klopfdreh <kl...@tobiass-mbp>
Authored: Wed Feb 4 19:04:19 2015 +0100
Committer: klopfdreh <kl...@tobiass-mbp>
Committed: Wed Feb 4 19:04:19 2015 +0100
----------------------------------------------------------------------
.../src/main/java/org/apache/wicket/resource/CssUrlReplacer.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/f2decb88/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
index b9b8468..1945641 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
@@ -55,7 +55,7 @@ public class CssUrlReplacer implements ICssCompressor
private final Map<String, String> componentNames = Collections.synchronizedMap(new LinkedHashMap<String, String>());
// The pattern to find URLs in CSS resources
- private static final Pattern urlPattern = Pattern.compile("url\\(['|\"](.*)['|\"]\\)");
+ private static final Pattern urlPattern = Pattern.compile("url\\(['|\"]*(.*)['|\"]*\\)");
public CssUrlReplacer(Application application)
{
[11/13] wicket git commit: Merge branch 'css_js_compression' of
https://github.com/klopfdreh/wicket into pr-87-css_js_compression
Posted by mg...@apache.org.
Merge branch 'css_js_compression' of https://github.com/klopfdreh/wicket into pr-87-css_js_compression
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/aba8360a
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/aba8360a
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/aba8360a
Branch: refs/heads/pr-87-css_js_compression
Commit: aba8360adb27c946cf6e1be63c2690789fc96e78
Parents: d230ff4 8b146b2
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Feb 5 23:27:08 2015 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Feb 5 23:27:08 2015 +0200
----------------------------------------------------------------------
.../wicket/resource/CompositeCssCompressor.java | 86 +++++++++++++
.../resource/CompositeJavaScriptCompressor.java | 87 +++++++++++++
.../apache/wicket/resource/CssUrlReplacer.java | 123 +++++++++++++++++++
3 files changed, 296 insertions(+)
----------------------------------------------------------------------
[02/13] wicket git commit: Updated CssUrlReplacementCompressor -
ComponentInitializationListener has to be ThreadSafe - Fixed redundancy
Posted by mg...@apache.org.
Updated CssUrlReplacementCompressor
- ComponentInitializationListener has to be ThreadSafe
- Fixed redundancy
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/b8635045
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/b8635045
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/b8635045
Branch: refs/heads/pr-87-css_js_compression
Commit: b8635045b1b3cca9799dccae37ece6c8926db65b
Parents: 9752eac
Author: klopfdreh <kl...@tobiass-mbp>
Authored: Wed Feb 4 15:17:23 2015 +0100
Committer: klopfdreh <kl...@tobiass-mbp>
Committed: Wed Feb 4 15:17:23 2015 +0100
----------------------------------------------------------------------
.../resource/CssUrlReplacementCompressor.java | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/b8635045/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java
index eac8d23..44d67e5 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java
@@ -19,8 +19,10 @@ package org.apache.wicket.resource;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -35,8 +37,8 @@ import org.apache.wicket.request.resource.PackageResourceReference;
/**
* This compressor is used to replace url within css files with resources that belongs to their
- * corresponding page classes. The compress method is not compressing any content, but replacing the URLs
- * with Wicket representatives.<br>
+ * corresponding page classes. The compress method is not compressing any content, but replacing the
+ * URLs with Wicket representatives.<br>
* <br>
* Usage:
*
@@ -52,7 +54,7 @@ public class CssUrlReplacementCompressor implements ICssCompressor
{
// Holds the names of pages
- private List<String> pageNames = new ArrayList<String>();
+ private Map<String, String> pageNames = Collections.synchronizedMap(new LinkedHashMap<String, String>());
// The pattern to find URLs in CSS resources
private Pattern urlPattern = Pattern.compile("url\\(['|\"](.*)['|\"]\\)");
@@ -70,7 +72,8 @@ public class CssUrlReplacementCompressor implements ICssCompressor
{
if (Page.class.isAssignableFrom(component.getClass()))
{
- CssUrlReplacementCompressor.this.pageNames.add(component.getClass().getName());
+ CssUrlReplacementCompressor.this.pageNames.put(component.getClass()
+ .getName(), component.getClass().getSimpleName());
}
}
});
@@ -87,7 +90,8 @@ public class CssUrlReplacementCompressor implements ICssCompressor
// Search for urls
while (matcher.find())
{
- for (String pageName : this.pageNames)
+ Collection<String> pageNames = this.pageNames.values();
+ for (String pageName : pageNames)
{
try
{
[05/13] wicket git commit: Several fixes
Posted by mg...@apache.org.
Several fixes
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/2ac0c640
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/2ac0c640
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/2ac0c640
Branch: refs/heads/pr-87-css_js_compression
Commit: 2ac0c6401a0e9abd9232342e790d15aac8091501
Parents: deeb453
Author: klopfdreh <kl...@tobiass-mbp>
Authored: Wed Feb 4 17:34:03 2015 +0100
Committer: klopfdreh <kl...@tobiass-mbp>
Committed: Wed Feb 4 17:34:03 2015 +0100
----------------------------------------------------------------------
...rg.eclipse.wst.common.project.facet.core.xml | 2 +-
.../wicket/resource/CompositeCssCompressor.java | 11 +-
.../resource/CompositeJavaScriptCompressor.java | 11 +-
.../resource/CssUrlReplacementCompressor.java | 144 -------------------
.../apache/wicket/resource/CssUrlReplacer.java | 127 ++++++++++++++++
5 files changed, 132 insertions(+), 163 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/2ac0c640/wicket-core/.settings/org.eclipse.wst.common.project.facet.core.xml
----------------------------------------------------------------------
diff --git a/wicket-core/.settings/org.eclipse.wst.common.project.facet.core.xml b/wicket-core/.settings/org.eclipse.wst.common.project.facet.core.xml
index c78d932..4f92af5 100644
--- a/wicket-core/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ b/wicket-core/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
- <installed facet="java" version="1.6"/>
<installed facet="jst.utility" version="1.0"/>
+ <installed facet="java" version="1.7"/>
</faceted-project>
http://git-wip-us.apache.org/repos/asf/wicket/blob/2ac0c640/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
index bb61687..a288596 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
@@ -45,14 +45,7 @@ public class CompositeCssCompressor implements ICssCompressor
{
/* Compressors to compress the CSS content */
- private List<ICssCompressor> compressors = new ArrayList<>();
-
- /**
- * Initializes an empty composite CSS compressor
- */
- public CompositeCssCompressor()
- {
- }
+ private final List<ICssCompressor> compressors = new ArrayList<>();
/**
* Initializes the composite CSS compressor with the given {@link ICssCompressor}
@@ -62,7 +55,7 @@ public class CompositeCssCompressor implements ICssCompressor
*/
public CompositeCssCompressor(ICssCompressor... compressors)
{
- this.compressors = Arrays.asList(compressors);
+ this.compressors.addAll(Arrays.asList(compressors));
}
/**
http://git-wip-us.apache.org/repos/asf/wicket/blob/2ac0c640/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java
index cb1d101..c1888e2 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java
@@ -45,14 +45,7 @@ public class CompositeJavaScriptCompressor implements IJavaScriptCompressor
{
/* Compressors to compress javascript content */
- private List<IJavaScriptCompressor> compressors = new ArrayList<>();
-
- /**
- * Initializes an empty composite javascript compressor
- */
- public CompositeJavaScriptCompressor()
- {
- }
+ private final List<IJavaScriptCompressor> compressors = new ArrayList<>();
/**
* Initializes the composite javascript compressor with the given {@link IJavaScriptCompressor}
@@ -63,7 +56,7 @@ public class CompositeJavaScriptCompressor implements IJavaScriptCompressor
*/
public CompositeJavaScriptCompressor(IJavaScriptCompressor... compressors)
{
- this.compressors = Arrays.asList(compressors);
+ this.compressors.addAll(Arrays.asList(compressors));
}
/**
http://git-wip-us.apache.org/repos/asf/wicket/blob/2ac0c640/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java
deleted file mode 100644
index ce89f53..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacementCompressor.java
+++ /dev/null
@@ -1,144 +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.resource;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.net.URL;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.Component;
-import org.apache.wicket.Page;
-import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.application.IComponentInitializationListener;
-import org.apache.wicket.css.ICssCompressor;
-import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.request.resource.PackageResourceReference;
-
-/**
- * This compressor is used to replace url within css files with resources that belongs to their
- * corresponding page classes. The compress method is not compressing any content, but replacing the
- * URLs with Wicket representatives.<br>
- * <br>
- * Usage:
- *
- * <pre>
- * this.getResourceSettings().setCssCompressor(new CssUrlReplacementCompressor(this));
- * </pre>
- *
- * @since 6.20.0
- * @author Tobias Soloschenko
- *
- */
-public class CssUrlReplacementCompressor implements ICssCompressor
-{
-
- // Holds the names of pages
- private Map<String, String> pageNames = Collections.synchronizedMap(new LinkedHashMap<String, String>());
-
- // The pattern to find URLs in CSS resources
- private Pattern urlPattern = Pattern.compile("url\\(['|\"](.*)['|\"]\\)");
-
- public CssUrlReplacementCompressor(Application application)
- {
-
- // Create an instantiation listener which filters only pages.
- application.getComponentInitializationListeners().add(
- new IComponentInitializationListener()
- {
-
- @Override
- public void onInitialize(Component component)
- {
- if (Page.class.isAssignableFrom(component.getClass()))
- {
- CssUrlReplacementCompressor.this.pageNames.put(component.getClass()
- .getName(), component.getClass().getSimpleName());
- }
- }
- });
- }
-
- /**
- * Replaces the URLs of CSS resources with Wicket representatives.
- */
- @SuppressWarnings("unchecked")
- @Override
- public String compress(String original)
- {
- Matcher matcher = this.urlPattern.matcher(original);
- // Search for urls
- while (matcher.find())
- {
- Collection<String> pageNames = this.pageNames.keySet();
- for (String pageName : pageNames)
- {
- try
- {
- Class<Page> pageClass = (Class<Page>)Class.forName(pageName);
- String url = matcher.group(1);
- if (!url.contains("/"))
- {
- URL urlResource = pageClass.getResource(url);
- // If the resource is not found for a page skip it
- if (urlResource != null)
- {
- PackageResourceReference packageResourceReference = new PackageResourceReference(
- pageClass, url);
- String replacedUrl = RequestCycle.get()
- .urlFor(packageResourceReference, null)
- .toString();
- StringBuilder urlBuilder = new StringBuilder();
- urlBuilder.append("url('");
- urlBuilder.append(replacedUrl);
- urlBuilder.append("')");
- original = matcher.replaceFirst(urlBuilder.toString());
- }
- }
- }
- catch (Exception e)
- {
- StringWriter stringWriter = this.printStack(e);
- throw new WicketRuntimeException(stringWriter.toString());
- }
- }
-
- }
- return original;
- }
-
- /**
- * Prints the stack trace to a print writer
- *
- * @param exception
- * the exception
- * @return the string writer containing the stack trace
- */
- private StringWriter printStack(Exception exception)
- {
- StringWriter stringWriter = new StringWriter();
- PrintWriter printWriter = new PrintWriter(stringWriter);
- exception.printStackTrace(printWriter);
- return stringWriter;
- }
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/2ac0c640/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
new file mode 100644
index 0000000..c39dcea
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
@@ -0,0 +1,127 @@
+/*
+ * 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.resource;
+
+import java.net.URL;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.wicket.Application;
+import org.apache.wicket.Component;
+import org.apache.wicket.Page;
+import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.application.IComponentInitializationListener;
+import org.apache.wicket.css.ICssCompressor;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.request.resource.PackageResourceReference;
+
+/**
+ * This compressor is used to replace url within css files with resources that belongs to their
+ * corresponding page classes. The compress method is not compressing any content, but replacing the
+ * URLs with Wicket representatives.<br>
+ * <br>
+ * Usage:
+ *
+ * <pre>
+ * this.getResourceSettings().setCssCompressor(new CssUrlReplacementCompressor(this));
+ * </pre>
+ *
+ * @since 6.20.0
+ * @author Tobias Soloschenko
+ *
+ */
+public class CssUrlReplacer implements ICssCompressor
+{
+
+ // Holds the names of pages
+ private Map<String, String> pageNames = Collections.synchronizedMap(new LinkedHashMap<String, String>());
+
+ // The pattern to find URLs in CSS resources
+ private Pattern urlPattern = Pattern.compile("url\\(['|\"](.*)['|\"]\\)");
+
+ public CssUrlReplacer(Application application)
+ {
+
+ // Create an instantiation listener which filters only pages.
+ application.getComponentInitializationListeners().add(
+ new IComponentInitializationListener()
+ {
+
+ @Override
+ public void onInitialize(Component component)
+ {
+ if (Page.class.isAssignableFrom(component.getClass()))
+ {
+ CssUrlReplacer.this.pageNames.put(component.getClass().getName(),
+ component.getClass().getSimpleName());
+ }
+ }
+ });
+ }
+
+ /**
+ * Replaces the URLs of CSS resources with Wicket representatives.
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public String compress(String original)
+ {
+ Matcher matcher = this.urlPattern.matcher(original);
+ // Search for urls
+ while (matcher.find())
+ {
+ Collection<String> pageNames = this.pageNames.keySet();
+ for (String pageName : pageNames)
+ {
+ try
+ {
+ Class<Page> pageClass = (Class<Page>)Class.forName(pageName);
+ String url = matcher.group(1);
+ if (!url.contains("/"))
+ {
+ URL urlResource = pageClass.getResource(url);
+ // If the resource is not found for a page skip it
+ if (urlResource != null)
+ {
+ PackageResourceReference packageResourceReference = new PackageResourceReference(
+ pageClass, url);
+ String replacedUrl = RequestCycle.get()
+ .urlFor(packageResourceReference, null)
+ .toString();
+ StringBuilder urlBuilder = new StringBuilder();
+ urlBuilder.append("url('");
+ urlBuilder.append(replacedUrl);
+ urlBuilder.append("')");
+ original = matcher.replaceFirst(urlBuilder.toString());
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ throw new WicketRuntimeException(
+ "A problem occurred during CSS url replacement.", e);
+ }
+ }
+
+ }
+ return original;
+ }
+}
[08/13] wicket git commit: Not limit it on pages
Posted by mg...@apache.org.
Not limit it on pages
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/b96c404f
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/b96c404f
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/b96c404f
Branch: refs/heads/pr-87-css_js_compression
Commit: b96c404fb2760b4dd600d33c1f89972a06edc0be
Parents: 71648ab
Author: klopfdreh <kl...@tobiass-mbp>
Authored: Wed Feb 4 19:01:46 2015 +0100
Committer: klopfdreh <kl...@tobiass-mbp>
Committed: Wed Feb 4 19:01:46 2015 +0100
----------------------------------------------------------------------
.../apache/wicket/resource/CssUrlReplacer.java | 28 +++++++++-----------
1 file changed, 12 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/b96c404f/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
index c0f1444..b9b8468 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
@@ -26,7 +26,6 @@ import java.util.regex.Pattern;
import org.apache.wicket.Application;
import org.apache.wicket.Component;
-import org.apache.wicket.Page;
import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.application.IComponentInitializationListener;
import org.apache.wicket.core.util.lang.WicketObjects;
@@ -36,7 +35,7 @@ import org.apache.wicket.request.resource.PackageResourceReference;
/**
* This compressor is used to replace url within css files with resources that belongs to their
- * corresponding page classes. The compress method is not compressing any content, but replacing the
+ * corresponding component classes. The compress method is not compressing any content, but replacing the
* URLs with Wicket representatives.<br>
* <br>
* Usage:
@@ -52,8 +51,8 @@ import org.apache.wicket.request.resource.PackageResourceReference;
public class CssUrlReplacer implements ICssCompressor
{
- // Holds the names of pages
- private final Map<String, String> pageNames = Collections.synchronizedMap(new LinkedHashMap<String, String>());
+ // Holds the names of components
+ private final Map<String, String> componentNames = Collections.synchronizedMap(new LinkedHashMap<String, String>());
// The pattern to find URLs in CSS resources
private static final Pattern urlPattern = Pattern.compile("url\\(['|\"](.*)['|\"]\\)");
@@ -61,7 +60,7 @@ public class CssUrlReplacer implements ICssCompressor
public CssUrlReplacer(Application application)
{
- // Create an instantiation listener which filters only pages.
+ // Create an instantiation listener to detect components
application.getComponentInitializationListeners().add(
new IComponentInitializationListener()
{
@@ -69,11 +68,8 @@ public class CssUrlReplacer implements ICssCompressor
@Override
public void onInitialize(Component component)
{
- if (Page.class.isAssignableFrom(component.getClass()))
- {
- CssUrlReplacer.this.pageNames.put(component.getClass().getName(),
- component.getClass().getSimpleName());
- }
+ CssUrlReplacer.this.componentNames.put(component.getClass().getName(),
+ component.getClass().getSimpleName());
}
});
}
@@ -88,21 +84,21 @@ public class CssUrlReplacer implements ICssCompressor
// Search for urls
while (matcher.find())
{
- Collection<String> pageNames = this.pageNames.keySet();
- for (String pageName : pageNames)
+ Collection<String> componentNames = this.componentNames.keySet();
+ for (String componentName : componentNames)
{
try
{
- Class<Page> pageClass = WicketObjects.resolveClass(pageName);
+ Class<?> componentClass = WicketObjects.resolveClass(componentName);
String url = matcher.group(1);
if (!url.contains("/"))
{
- URL urlResource = pageClass.getResource(url);
- // If the resource is not found for a page skip it
+ URL urlResource = componentClass.getResource(url);
+ // If the resource is not found skip it
if (urlResource != null)
{
PackageResourceReference packageResourceReference = new PackageResourceReference(
- pageClass, url);
+ componentClass, url);
String replacedUrl = RequestCycle.get()
.urlFor(packageResourceReference, null)
.toString();
[07/13] wicket git commit: WicketObjects to resolve classes
Posted by mg...@apache.org.
WicketObjects to resolve classes
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/71648abe
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/71648abe
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/71648abe
Branch: refs/heads/pr-87-css_js_compression
Commit: 71648abe386a3a8b578c58abf9faf9e136f347dc
Parents: eca07da
Author: klopfdreh <kl...@tobiass-mbp>
Authored: Wed Feb 4 17:47:08 2015 +0100
Committer: klopfdreh <kl...@tobiass-mbp>
Committed: Wed Feb 4 17:47:08 2015 +0100
----------------------------------------------------------------------
.../src/main/java/org/apache/wicket/resource/CssUrlReplacer.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/71648abe/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
index 01b92fa..c0f1444 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CssUrlReplacer.java
@@ -29,6 +29,7 @@ import org.apache.wicket.Component;
import org.apache.wicket.Page;
import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.application.IComponentInitializationListener;
+import org.apache.wicket.core.util.lang.WicketObjects;
import org.apache.wicket.css.ICssCompressor;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.resource.PackageResourceReference;
@@ -80,7 +81,6 @@ public class CssUrlReplacer implements ICssCompressor
/**
* Replaces the URLs of CSS resources with Wicket representatives.
*/
- @SuppressWarnings("unchecked")
@Override
public String compress(String original)
{
@@ -93,7 +93,7 @@ public class CssUrlReplacer implements ICssCompressor
{
try
{
- Class<Page> pageClass = (Class<Page>)Class.forName(pageName);
+ Class<Page> pageClass = WicketObjects.resolveClass(pageName);
String url = matcher.group(1);
if (!url.contains("/"))
{
[04/13] wicket git commit: Inline initialization / constructor
Posted by mg...@apache.org.
Inline initialization / constructor
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/deeb4535
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/deeb4535
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/deeb4535
Branch: refs/heads/pr-87-css_js_compression
Commit: deeb45355c8bad0e2b56a063e2275c87522d8709
Parents: d0864f1
Author: klopfdreh <kl...@tobiass-mbp>
Authored: Wed Feb 4 16:55:04 2015 +0100
Committer: klopfdreh <kl...@tobiass-mbp>
Committed: Wed Feb 4 16:55:04 2015 +0100
----------------------------------------------------------------------
.../wicket/resource/CompositeCssCompressor.java | 47 +++++++++++-------
.../resource/CompositeJavaScriptCompressor.java | 51 +++++++++++++-------
2 files changed, 62 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/deeb4535/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
index 7b3c6e8..bb61687 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java
@@ -17,12 +17,13 @@
package org.apache.wicket.resource;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import org.apache.wicket.css.ICssCompressor;
/**
- * Used to apply several {@link ICssCompressor} to the css compression.<br>
+ * Used to apply several {@link ICssCompressor} to the CSS compression.<br>
* <br>
* Usage:
*
@@ -34,6 +35,8 @@ import org.apache.wicket.css.ICssCompressor;
*
* this.getResourceSettings().setCssCompressor(compositeCssCompressor);
* </pre>
+ * The compressors can also be given as constructor arguments.
+ *
* @since 6.20.0
* @author Tobias Soloschenko
*
@@ -42,27 +45,39 @@ public class CompositeCssCompressor implements ICssCompressor
{
/* Compressors to compress the CSS content */
- private List<ICssCompressor> compressors;
+ private List<ICssCompressor> compressors = new ArrayList<>();
+
+ /**
+ * Initializes an empty composite CSS compressor
+ */
+ public CompositeCssCompressor()
+ {
+ }
+
+ /**
+ * Initializes the composite CSS compressor with the given {@link ICssCompressor}
+ *
+ * @param compressors
+ * several {@link ICssCompressor} the composite CSS compressor is initialized with
+ */
+ public CompositeCssCompressor(ICssCompressor... compressors)
+ {
+ this.compressors = Arrays.asList(compressors);
+ }
/**
- * Compresses the given original content in the order of compressors.
+ * Compresses the given original content in the order of compressors. If no compressor has been
+ * given the original content is going to be returned.
*/
@Override
public String compress(String original)
{
- if (compressors != null)
+ String compressed = original;
+ for (ICssCompressor compressor : compressors)
{
- String compressed = original;
- for (ICssCompressor compressor : compressors)
- {
- compressed = compressor.compress(compressed);
- }
- return compressed;
- }
- else
- {
- return original;
+ compressed = compressor.compress(compressed);
}
+ return compressed;
}
/**
@@ -73,10 +88,6 @@ public class CompositeCssCompressor implements ICssCompressor
*/
public List<ICssCompressor> getCompressors()
{
- if (compressors == null)
- {
- compressors = new ArrayList<>();
- }
return compressors;
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/deeb4535/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java
index 13d5efc..cb1d101 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java
@@ -17,6 +17,7 @@
package org.apache.wicket.resource;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import org.apache.wicket.javascript.IJavaScriptCompressor;
@@ -34,6 +35,8 @@ import org.apache.wicket.javascript.IJavaScriptCompressor;
*
* this.getResourceSettings().setJavaScriptCompressor(compositeJavaScriptCompressor);
* </pre>
+ * The compressors can also be given as constructor arguments.
+ *
* @since 6.20.0
* @author Tobias Soloschenko
*
@@ -42,38 +45,50 @@ public class CompositeJavaScriptCompressor implements IJavaScriptCompressor
{
/* Compressors to compress javascript content */
- private List<IJavaScriptCompressor> compressors;
+ private List<IJavaScriptCompressor> compressors = new ArrayList<>();
+
+ /**
+ * Initializes an empty composite javascript compressor
+ */
+ public CompositeJavaScriptCompressor()
+ {
+ }
+
+ /**
+ * Initializes the composite javascript compressor with the given {@link IJavaScriptCompressor}
+ *
+ * @param compressors
+ * several {@link IJavaScriptCompressor} the composite javascript compressor is
+ * initialized with
+ */
+ public CompositeJavaScriptCompressor(IJavaScriptCompressor... compressors)
+ {
+ this.compressors = Arrays.asList(compressors);
+ }
+ /**
+ * Compresses the given original content in the order of compressors. If no compressor has been
+ * given the original content is going to be returned.
+ */
@Override
public String compress(String original)
{
- if (compressors != null)
+ String compressed = original;
+ for (IJavaScriptCompressor compressor : compressors)
{
- String compressed = original;
- for (IJavaScriptCompressor compressor : compressors)
- {
- compressed = compressor.compress(compressed);
- }
- return compressed;
- }
- else
- {
- return original;
+ compressed = compressor.compress(compressed);
}
+ return compressed;
}
/**
- * Gets a list of {@link IJavaScriptCompressor} to be used for javascript compression. They are applied in the
- * order of the List.
+ * Gets a list of {@link IJavaScriptCompressor} to be used for javascript compression. They are
+ * applied in the order of the List.
*
* @return A list of {@link IJavaScriptCompressor} to be used for javascript compression.
*/
public List<IJavaScriptCompressor> getCompressors()
{
- if (compressors == null)
- {
- compressors = new ArrayList<>();
- }
return compressors;
}
}