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 2012/03/07 09:39:03 UTC
[11/19] WICKET-4439 Move classes around so that there are no two
packages with the same name in different modules
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/request/mapper/ResourceReferenceMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/mapper/ResourceReferenceMapper.java b/wicket-core/src/main/java/org/apache/wicket/request/mapper/ResourceReferenceMapper.java
deleted file mode 100644
index c2d33ee..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/request/mapper/ResourceReferenceMapper.java
+++ /dev/null
@@ -1,55 +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.request.mapper;
-
-import org.apache.wicket.request.mapper.parameter.IPageParametersEncoder;
-import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.request.resource.caching.IResourceCachingStrategy;
-import org.apache.wicket.util.IProvider;
-
-/**
- * Generic {@link ResourceReference} encoder that encodes and decodes non-mounted
- * {@link ResourceReference}s.
- * <p>
- * Decodes and encodes the following URLs:
- *
- * <pre>
- * /wicket/resource/org.apache.wicket.ResourceScope/name
- * /wicket/resource/org.apache.wicket.ResourceScope/name?en
- * /wicket/resource/org.apache.wicket.ResourceScope/name?-style
- * /wicket/resource/org.apache.wicket.ResourceScope/resource/name.xyz?en_EN-style
- * </pre>
- *
- * @author igor.vaynberg
- */
-public class ResourceReferenceMapper extends ParentPathReferenceRewriter
-{
- /**
- * Construct.
- *
- * @param pageParametersEncoder
- * @param parentPathPartEscapeSequence
- * @param cachingStrategy
- */
- public ResourceReferenceMapper(IPageParametersEncoder pageParametersEncoder,
- IProvider<String> parentPathPartEscapeSequence,
- IProvider<IResourceCachingStrategy> cachingStrategy)
- {
- super(new BasicResourceReferenceMapper(pageParametersEncoder, cachingStrategy),
- parentPathPartEscapeSequence);
- }
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/request/mapper/StalePageException.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/mapper/StalePageException.java b/wicket-core/src/main/java/org/apache/wicket/request/mapper/StalePageException.java
deleted file mode 100644
index 8735a21..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/request/mapper/StalePageException.java
+++ /dev/null
@@ -1,53 +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.request.mapper;
-
-import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.request.component.IRequestablePage;
-
-/**
- * Exception invoked when when stale link has been clicked. The page should then be rerendered with
- * an explanatory error message.
- *
- * @author Matej Knopp
- */
-public class StalePageException extends WicketRuntimeException
-{
- private static final long serialVersionUID = 1L;
-
- private final transient IRequestablePage page;
-
- /**
- *
- * Construct.
- *
- * @param page
- */
- public StalePageException(IRequestablePage page)
- {
- this.page = page;
- }
-
- /**
- *
- * @return page instance
- */
- public IRequestablePage getPage()
- {
- return page;
- }
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/request/resource/ByteArrayResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/ByteArrayResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/ByteArrayResource.java
index 544f7ad..fe78ea0 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/ByteArrayResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/ByteArrayResource.java
@@ -18,11 +18,10 @@ package org.apache.wicket.request.resource;
import java.net.URLConnection;
-import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.util.time.Time;
-
import javax.servlet.http.HttpServletResponse;
+import org.apache.wicket.util.time.Time;
+
/**
* An {@link IResource} for byte arrays. The byte array can be static - passed to the constructor,
* or dynamic - by overriding
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java
index 2aef173..753caf0 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java
@@ -27,7 +27,7 @@ import org.apache.wicket.util.io.IOUtils;
import org.apache.wicket.util.io.Streams;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
-import org.apache.wicket.util.resource.WebExternalResourceStream;
+import org.apache.wicket.core.util.resource.WebExternalResourceStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/request/resource/IResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/IResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/IResource.java
index 1a6b1f4..26eaebb 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/IResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/IResource.java
@@ -16,11 +16,11 @@
*/
package org.apache.wicket.request.resource;
-import org.apache.wicket.IClusterable;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.Response;
import org.apache.wicket.request.handler.resource.ResourceRequestHandler;
import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.io.IClusterable;
import org.apache.wicket.util.lang.Args;
/**
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
index 467a151..46dcb7a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
@@ -30,11 +30,11 @@ import org.apache.wicket.request.resource.caching.IStaticCacheableResource;
import org.apache.wicket.settings.IResourceSettings;
import org.apache.wicket.util.io.IOUtils;
import org.apache.wicket.util.lang.Packages;
-import org.apache.wicket.util.lang.WicketObjects;
+import org.apache.wicket.core.util.lang.WicketObjects;
import org.apache.wicket.util.resource.IFixedLocationResourceStream;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
-import org.apache.wicket.util.resource.locator.IResourceStreamLocator;
+import org.apache.wicket.core.util.resource.locator.IResourceStreamLocator;
import org.apache.wicket.util.string.Strings;
import org.apache.wicket.util.time.Time;
import org.slf4j.Logger;
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
index 6cb8d10..6becc8e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
@@ -24,7 +24,7 @@ import org.apache.wicket.Session;
import org.apache.wicket.util.lang.Generics;
import org.apache.wicket.util.lang.Packages;
import org.apache.wicket.util.resource.IResourceStream;
-import org.apache.wicket.util.resource.locator.IResourceStreamLocator;
+import org.apache.wicket.core.util.resource.locator.IResourceStreamLocator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReference.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReference.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReference.java
index 49c354d..04521a8 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReference.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReference.java
@@ -22,9 +22,10 @@ import java.util.Locale;
import org.apache.wicket.Application;
import org.apache.wicket.markup.head.HeaderItem;
+import org.apache.wicket.util.io.IClusterable;
import org.apache.wicket.util.lang.Args;
import org.apache.wicket.util.lang.Objects;
-import org.apache.wicket.util.lang.WicketObjects;
+import org.apache.wicket.core.util.lang.WicketObjects;
/**
* Reference to a resource. Can be used to reference global resources.
@@ -38,7 +39,7 @@ import org.apache.wicket.util.lang.WicketObjects;
* @author Matej Knopp
* @author Juergen Donnerstag
*/
-public abstract class ResourceReference implements Serializable
+public abstract class ResourceReference implements IClusterable
{
private static final long serialVersionUID = 1L;
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceStreamResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceStreamResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceStreamResource.java
index 7600aa8..53dd6cd 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceStreamResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceStreamResource.java
@@ -25,7 +25,7 @@ import org.apache.wicket.Application;
import org.apache.wicket.util.lang.Args;
import org.apache.wicket.util.lang.Bytes;
import org.apache.wicket.util.resource.IResourceStream;
-import org.apache.wicket.util.resource.IResourceStreamWriter;
+import org.apache.wicket.core.util.resource.IResourceStreamWriter;
import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
import org.apache.wicket.util.time.Duration;
import org.apache.wicket.util.time.Time;
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/LastModifiedResourceVersion.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/LastModifiedResourceVersion.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/LastModifiedResourceVersion.java
index 0f213ca..e796e23 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/LastModifiedResourceVersion.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/LastModifiedResourceVersion.java
@@ -18,7 +18,6 @@ package org.apache.wicket.request.resource.caching.version;
import org.apache.wicket.request.resource.caching.IStaticCacheableResource;
import org.apache.wicket.util.resource.IResourceStream;
-import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
import org.apache.wicket.util.time.Time;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/resource/IPropertiesFactoryContext.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/IPropertiesFactoryContext.java b/wicket-core/src/main/java/org/apache/wicket/resource/IPropertiesFactoryContext.java
index 81901cf..e256236 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/IPropertiesFactoryContext.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/IPropertiesFactoryContext.java
@@ -17,7 +17,7 @@
package org.apache.wicket.resource;
import org.apache.wicket.Localizer;
-import org.apache.wicket.util.resource.locator.IResourceStreamLocator;
+import org.apache.wicket.core.util.resource.locator.IResourceStreamLocator;
import org.apache.wicket.util.watch.IModificationWatcher;
/**
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/resource/PropertiesFactory.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/PropertiesFactory.java b/wicket-core/src/main/java/org/apache/wicket/resource/PropertiesFactory.java
index 18b98f8..efaa937 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/PropertiesFactory.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/PropertiesFactory.java
@@ -30,7 +30,7 @@ import org.apache.wicket.util.io.IOUtils;
import org.apache.wicket.util.listener.IChangeListener;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
-import org.apache.wicket.util.resource.locator.IResourceStreamLocator;
+import org.apache.wicket.core.util.resource.locator.IResourceStreamLocator;
import org.apache.wicket.util.value.ValueMap;
import org.apache.wicket.util.watch.IModificationWatcher;
import org.apache.wicket.util.watch.ModificationWatcher;
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/resource/ResourceUtil.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/ResourceUtil.java b/wicket-core/src/main/java/org/apache/wicket/resource/ResourceUtil.java
index 126113c..7052e54 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/ResourceUtil.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/ResourceUtil.java
@@ -21,10 +21,10 @@ import java.io.InputStream;
import java.nio.charset.Charset;
import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.CssHeaderItem;
import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.markup.head.CssHeaderItem;
import org.apache.wicket.util.io.IOUtils;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/resource/TextTemplateResourceReference.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/TextTemplateResourceReference.java b/wicket-core/src/main/java/org/apache/wicket/resource/TextTemplateResourceReference.java
index 7e85b92..8bb050e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/TextTemplateResourceReference.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/TextTemplateResourceReference.java
@@ -20,11 +20,11 @@ import java.util.Locale;
import java.util.Map;
import org.apache.wicket.Application;
-import org.apache.wicket.IClusterable;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.resource.IResource;
import org.apache.wicket.request.resource.ResourceReference;
import org.apache.wicket.request.resource.ResourceStreamResource;
+import org.apache.wicket.util.io.IClusterable;
import org.apache.wicket.util.resource.StringResourceStream;
import org.apache.wicket.util.template.PackageTextTemplate;
import org.apache.wicket.util.template.TextTemplate;
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/resource/bundles/IResourceBundle.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/bundles/IResourceBundle.java b/wicket-core/src/main/java/org/apache/wicket/resource/bundles/IResourceBundle.java
index 8f7e7a7..88bae70 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/bundles/IResourceBundle.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/bundles/IResourceBundle.java
@@ -18,8 +18,8 @@ package org.apache.wicket.resource.bundles;
import org.apache.wicket.Application;
import org.apache.wicket.ResourceBundles;
-import org.apache.wicket.request.resource.ResourceReference;
import org.apache.wicket.markup.head.HeaderItem;
+import org.apache.wicket.request.resource.ResourceReference;
/***
* Interface implemented by {@link ResourceReference}s that are bundles. A bundle is a resource that
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/resource/loader/ComponentStringResourceLoader.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/loader/ComponentStringResourceLoader.java b/wicket-core/src/main/java/org/apache/wicket/resource/loader/ComponentStringResourceLoader.java
index 8d702d3..c9bfcf1 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/loader/ComponentStringResourceLoader.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/loader/ComponentStringResourceLoader.java
@@ -31,8 +31,8 @@ import org.apache.wicket.markup.repeater.AbstractRepeater;
import org.apache.wicket.resource.IPropertiesFactory;
import org.apache.wicket.resource.Properties;
import org.apache.wicket.util.lang.Args;
-import org.apache.wicket.util.resource.locator.IResourceStreamLocator;
-import org.apache.wicket.util.resource.locator.ResourceNameIterator;
+import org.apache.wicket.core.util.resource.locator.IResourceStreamLocator;
+import org.apache.wicket.core.util.resource.locator.ResourceNameIterator;
import org.apache.wicket.util.string.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/resource/loader/PackageStringResourceLoader.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/loader/PackageStringResourceLoader.java b/wicket-core/src/main/java/org/apache/wicket/resource/loader/PackageStringResourceLoader.java
index c4a967c..b526e71 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/loader/PackageStringResourceLoader.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/loader/PackageStringResourceLoader.java
@@ -21,7 +21,7 @@ import java.util.Locale;
import org.apache.wicket.Application;
import org.apache.wicket.resource.IPropertiesFactory;
import org.apache.wicket.resource.Properties;
-import org.apache.wicket.util.resource.locator.ResourceNameIterator;
+import org.apache.wicket.core.util.resource.locator.ResourceNameIterator;
import org.apache.wicket.util.string.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/response/filter/AjaxServerAndClientTimeFilter.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/response/filter/AjaxServerAndClientTimeFilter.java b/wicket-core/src/main/java/org/apache/wicket/response/filter/AjaxServerAndClientTimeFilter.java
index 26139a0..618a39b 100644
--- a/wicket-core/src/main/java/org/apache/wicket/response/filter/AjaxServerAndClientTimeFilter.java
+++ b/wicket-core/src/main/java/org/apache/wicket/response/filter/AjaxServerAndClientTimeFilter.java
@@ -22,7 +22,7 @@ import java.util.Map;
import org.apache.wicket.Application;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.util.string.AppendingStringBuffer;
-import org.apache.wicket.util.string.JavaScriptUtils;
+import org.apache.wicket.core.util.string.JavaScriptUtils;
import org.apache.wicket.util.string.interpolator.MapVariableInterpolator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -56,7 +56,7 @@ public class AjaxServerAndClientTimeFilter implements IResponseFilter
private static Logger log = LoggerFactory.getLogger(AjaxServerAndClientTimeFilter.class);
/**
- * @see org.apache.wicket.IResponseFilter#filter(org.apache.wicket.util.string.AppendingStringBuffer)
+ * @see IResponseFilter#filter(org.apache.wicket.util.string.AppendingStringBuffer)
*/
@Override
public AppendingStringBuffer filter(AppendingStringBuffer responseBuffer)
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/response/filter/ServerAndClientTimeFilter.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/response/filter/ServerAndClientTimeFilter.java b/wicket-core/src/main/java/org/apache/wicket/response/filter/ServerAndClientTimeFilter.java
index b003bc2..47f637f 100644
--- a/wicket-core/src/main/java/org/apache/wicket/response/filter/ServerAndClientTimeFilter.java
+++ b/wicket-core/src/main/java/org/apache/wicket/response/filter/ServerAndClientTimeFilter.java
@@ -23,7 +23,7 @@ import org.apache.wicket.Application;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.util.string.AppendingStringBuffer;
-import org.apache.wicket.util.string.JavaScriptUtils;
+import org.apache.wicket.core.util.string.JavaScriptUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -56,7 +56,7 @@ public class ServerAndClientTimeFilter implements IResponseFilter
private static final Logger log = LoggerFactory.getLogger(ServerAndClientTimeFilter.class);
/**
- * @see org.apache.wicket.IResponseFilter#filter(AppendingStringBuffer)
+ * @see IResponseFilter#filter(AppendingStringBuffer)
*/
@Override
public AppendingStringBuffer filter(AppendingStringBuffer responseBuffer)
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/serialize/java/JavaSerializer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/serialize/java/JavaSerializer.java b/wicket-core/src/main/java/org/apache/wicket/serialize/java/JavaSerializer.java
index 9497f63..2b5beef 100644
--- a/wicket-core/src/main/java/org/apache/wicket/serialize/java/JavaSerializer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/serialize/java/JavaSerializer.java
@@ -33,7 +33,7 @@ import org.apache.wicket.application.IClassResolver;
import org.apache.wicket.serialize.ISerializer;
import org.apache.wicket.settings.IApplicationSettings;
import org.apache.wicket.util.io.IOUtils;
-import org.apache.wicket.util.io.SerializableChecker;
+import org.apache.wicket.core.util.io.SerializableChecker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/settings/IRequestCycleSettings.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/settings/IRequestCycleSettings.java b/wicket-core/src/main/java/org/apache/wicket/settings/IRequestCycleSettings.java
index a269201..2d8e3c6 100644
--- a/wicket-core/src/main/java/org/apache/wicket/settings/IRequestCycleSettings.java
+++ b/wicket-core/src/main/java/org/apache/wicket/settings/IRequestCycleSettings.java
@@ -124,7 +124,7 @@ public interface IRequestCycleSettings
* </p>
* <p>
* Also, even with this strategy set, it is ignored for instances of
- * {@link org.apache.wicket.request.handler.BookmarkableListenerInterfaceRequestHandler},
+ * {@link org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceRequestHandler},
* because otherwise they wouldn't be bookmarkable.
* </p>
*/
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/settings/IResourceSettings.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/settings/IResourceSettings.java b/wicket-core/src/main/java/org/apache/wicket/settings/IResourceSettings.java
index b93d68a..225f41c 100644
--- a/wicket-core/src/main/java/org/apache/wicket/settings/IResourceSettings.java
+++ b/wicket-core/src/main/java/org/apache/wicket/settings/IResourceSettings.java
@@ -23,19 +23,19 @@ import org.apache.wicket.IResourceFactory;
import org.apache.wicket.Localizer;
import org.apache.wicket.css.ICssCompressor;
import org.apache.wicket.javascript.IJavaScriptCompressor;
+import org.apache.wicket.markup.head.PriorityFirstComparator;
+import org.apache.wicket.markup.head.ResourceAggregator;
+import org.apache.wicket.markup.head.ResourceAggregator.RecordedHeaderItem;
import org.apache.wicket.markup.html.IPackageResourceGuard;
import org.apache.wicket.markup.html.PackageResourceGuard;
-import org.apache.wicket.markup.head.PriorityFirstComparator;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.resource.caching.IResourceCachingStrategy;
import org.apache.wicket.resource.IPropertiesFactory;
import org.apache.wicket.resource.IPropertiesFactoryContext;
-import org.apache.wicket.markup.head.ResourceAggregator;
-import org.apache.wicket.markup.head.ResourceAggregator.RecordedHeaderItem;
import org.apache.wicket.resource.loader.IStringResourceLoader;
import org.apache.wicket.util.file.IFileCleaner;
import org.apache.wicket.util.file.IResourceFinder;
-import org.apache.wicket.util.resource.locator.IResourceStreamLocator;
+import org.apache.wicket.core.util.resource.locator.IResourceStreamLocator;
import org.apache.wicket.util.time.Duration;
import org.apache.wicket.util.watch.IModificationWatcher;
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/settings/def/ResourceSettings.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/settings/def/ResourceSettings.java b/wicket-core/src/main/java/org/apache/wicket/settings/def/ResourceSettings.java
index a1e5f14..63e78dc 100644
--- a/wicket-core/src/main/java/org/apache/wicket/settings/def/ResourceSettings.java
+++ b/wicket-core/src/main/java/org/apache/wicket/settings/def/ResourceSettings.java
@@ -26,8 +26,9 @@ import org.apache.wicket.IResourceFactory;
import org.apache.wicket.Localizer;
import org.apache.wicket.css.ICssCompressor;
import org.apache.wicket.javascript.IJavaScriptCompressor;
-import org.apache.wicket.markup.html.IPackageResourceGuard;
import org.apache.wicket.markup.head.PriorityFirstComparator;
+import org.apache.wicket.markup.head.ResourceAggregator.RecordedHeaderItem;
+import org.apache.wicket.markup.html.IPackageResourceGuard;
import org.apache.wicket.markup.html.SecurePackageResourceGuard;
import org.apache.wicket.request.http.WebResponse;
import org.apache.wicket.request.resource.caching.FilenameWithVersionResourceCachingStrategy;
@@ -39,7 +40,6 @@ import org.apache.wicket.request.resource.caching.version.LastModifiedResourceVe
import org.apache.wicket.request.resource.caching.version.MessageDigestResourceVersion;
import org.apache.wicket.request.resource.caching.version.RequestCycleCachedResourceVersion;
import org.apache.wicket.resource.PropertiesFactory;
-import org.apache.wicket.markup.head.ResourceAggregator.RecordedHeaderItem;
import org.apache.wicket.resource.loader.ClassStringResourceLoader;
import org.apache.wicket.resource.loader.ComponentStringResourceLoader;
import org.apache.wicket.resource.loader.IStringResourceLoader;
@@ -54,9 +54,9 @@ import org.apache.wicket.util.file.Path;
import org.apache.wicket.util.lang.Args;
import org.apache.wicket.util.lang.Generics;
import org.apache.wicket.util.resource.IResourceStream;
-import org.apache.wicket.util.resource.locator.IResourceStreamLocator;
-import org.apache.wicket.util.resource.locator.ResourceStreamLocator;
-import org.apache.wicket.util.resource.locator.caching.CachingResourceStreamLocator;
+import org.apache.wicket.core.util.resource.locator.IResourceStreamLocator;
+import org.apache.wicket.core.util.resource.locator.ResourceStreamLocator;
+import org.apache.wicket.core.util.resource.locator.caching.CachingResourceStreamLocator;
import org.apache.wicket.util.time.Duration;
import org.apache.wicket.util.watch.IModificationWatcher;
import org.apache.wicket.util.watch.ModificationWatcher;
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/util/cookies/CookieDefaults.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/util/cookies/CookieDefaults.java b/wicket-core/src/main/java/org/apache/wicket/util/cookies/CookieDefaults.java
index 19daf47..a438e1a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/util/cookies/CookieDefaults.java
+++ b/wicket-core/src/main/java/org/apache/wicket/util/cookies/CookieDefaults.java
@@ -16,7 +16,7 @@
*/
package org.apache.wicket.util.cookies;
-import org.apache.wicket.IClusterable;
+import org.apache.wicket.util.io.IClusterable;
/**
* This class provides default values that are used by the CookieValuePersister class when it
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/util/crypt/KeyInSessionSunJceCryptFactory.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/util/crypt/KeyInSessionSunJceCryptFactory.java b/wicket-core/src/main/java/org/apache/wicket/util/crypt/KeyInSessionSunJceCryptFactory.java
deleted file mode 100644
index eee5591..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/util/crypt/KeyInSessionSunJceCryptFactory.java
+++ /dev/null
@@ -1,62 +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.util.crypt;
-
-import java.util.UUID;
-
-import org.apache.wicket.MetaDataKey;
-import org.apache.wicket.Session;
-
-/**
- * Crypt factory that produces {@link SunJceCrypt} instances based on http session-specific
- * encryption key. This allows each user to have their own encryption key, hardening against CSRF
- * attacks.
- *
- * Note that the use of this crypt factory will result in an immediate creation of a http session
- *
- * @author igor.vaynberg
- */
-public class KeyInSessionSunJceCryptFactory implements ICryptFactory
-{
- /** metadata-key used to store crypto-key in session metadata */
- private static MetaDataKey<String> KEY = new MetaDataKey<String>()
- {
- private static final long serialVersionUID = 1L;
- };
-
-
- @Override
- public ICrypt newCrypt()
- {
- Session session = Session.get();
- session.bind();
-
- // retrieve or generate encryption key from session
- String key = session.getMetaData(KEY);
- if (key == null)
- {
- // generate new key
- key = session.getId() + "." + UUID.randomUUID().toString();
- session.setMetaData(KEY, key);
- }
-
- // build the crypt based on session key
- ICrypt crypt = new SunJceCrypt();
- crypt.setKey(key);
- return crypt;
- }
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/util/file/WebApplicationPath.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/util/file/WebApplicationPath.java b/wicket-core/src/main/java/org/apache/wicket/util/file/WebApplicationPath.java
deleted file mode 100644
index 5c6374a..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/util/file/WebApplicationPath.java
+++ /dev/null
@@ -1,142 +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.util.file;
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.ServletContext;
-
-import org.apache.wicket.util.resource.IResourceStream;
-import org.apache.wicket.util.resource.UrlResourceStream;
-import org.apache.wicket.util.string.StringList;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-/**
- * Maintain a list of paths which might either be ordinary folders of the filesystem or relative
- * paths to the web application's servlet context.
- *
- * @author Johan Compagner
- */
-public final class WebApplicationPath extends Path
-{
- private final static Logger log = LoggerFactory.getLogger(WebApplicationPath.class);
-
- private static final String WEB_INF = "WEB-INF/";
-
- /** The list of urls in the path */
- private final List<String> webappPaths = new ArrayList<String>();
-
- /** The web apps servlet context */
- private final ServletContext servletContext;
-
- /**
- * Constructor
- *
- * @param servletContext
- * The webapplication context where the resources must be loaded from
- */
- public WebApplicationPath(final ServletContext servletContext)
- {
- this.servletContext = servletContext;
-
- // adding root so servlet context resources are always checked
- webappPaths.add("/");
- }
-
- /**
- * @param path
- * add a path that is lookup through the servlet context
- */
- @Override
- public void add(String path)
- {
- final Folder folder = new Folder(path);
- if (folder.exists())
- {
- log.debug("Added path '{}' as a folder.", path);
- super.add(folder);
- }
- else
- {
- if (!path.startsWith("/"))
- {
- path = "/" + path;
- }
- if (!path.endsWith("/"))
- {
- path += "/";
- }
- log.debug("Added path '{}' as a web path.", path);
- webappPaths.add(path);
- }
- }
-
- /**
- *
- * @see org.apache.wicket.util.file.IResourceFinder#find(Class, String)
- */
- @Override
- public IResourceStream find(final Class<?> clazz, final String pathname)
- {
- if (pathname == null)
- {
- return null;
- }
-
- IResourceStream resourceStream = super.find(clazz, pathname);
-
- if (resourceStream == null && pathname.startsWith(WEB_INF) == false)
- {
- for (String path : webappPaths)
- {
- try
- {
- final URL url = servletContext.getResource(path + pathname);
- if (url != null)
- {
- resourceStream = new UrlResourceStream(url);
- break;
- }
- }
- catch (Exception ex)
- {
- // ignore, file couldn't be found
- }
- }
- }
-
- return resourceStream;
- }
-
- public List<String> getWebappPaths()
- {
- return webappPaths;
- }
- /**
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString()
- {
- return "[folders = " + StringList.valueOf(getFolders()) + ", webapppaths: " +
- StringList.valueOf(webappPaths) + "]";
- }
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/53f07873/wicket-core/src/main/java/org/apache/wicket/util/io/SerializableChecker.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/util/io/SerializableChecker.java b/wicket-core/src/main/java/org/apache/wicket/util/io/SerializableChecker.java
deleted file mode 100644
index c5c11c6..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/util/io/SerializableChecker.java
+++ /dev/null
@@ -1,734 +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.util.io;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.NotSerializableException;
-import java.io.ObjectOutput;
-import java.io.ObjectOutputStream;
-import java.io.ObjectStreamClass;
-import java.io.ObjectStreamField;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.IdentityHashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Set;
-import java.util.Stack;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.WicketRuntimeException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-/**
- * Utility class that analyzes objects for non-serializable nodes. Construct, then call
- * {@link #check(Object)} with the object you want to check. When a non-serializable object is
- * found, a {@link WicketNotSerializableException} is thrown with a message that shows the trace up
- * to the not-serializable object. The exception is thrown for the first non-serializable instance
- * it encounters, so multiple problems will not be shown.
- * <p>
- * As this class depends heavily on JDK's serialization internals using introspection, analyzing may
- * not be possible, for instance when the runtime environment does not have sufficient rights to set
- * fields accessible that would otherwise be hidden. You should call
- * {@link SerializableChecker#isAvailable()} to see whether this class can operate properly. If it
- * doesn't, you should fall back to e.g. re-throwing/ printing the {@link NotSerializableException}
- * you probably got before using this class.
- * </p>
- *
- * @author eelcohillenius
- * @author Al Maw
- */
-public final class SerializableChecker extends ObjectOutputStream
-{
-
- /** log. */
- private static final Logger log = LoggerFactory.getLogger(SerializableChecker.class);
-
- /**
- * Exception that is thrown when a non-serializable object was found.
- */
- public static final class WicketNotSerializableException extends WicketRuntimeException
- {
- private static final long serialVersionUID = 1L;
-
- WicketNotSerializableException(String message, Throwable cause)
- {
- super(message, cause);
- }
- }
-
- /**
- * Does absolutely nothing.
- */
- private static class NoopOutputStream extends OutputStream
- {
- @Override
- public void close()
- {
- }
-
- @Override
- public void flush()
- {
- }
-
- @Override
- public void write(byte[] b)
- {
- }
-
- @Override
- public void write(byte[] b, int i, int l)
- {
- }
-
- @Override
- public void write(int b)
- {
- }
- }
-
- private static abstract class ObjectOutputAdaptor implements ObjectOutput
- {
-
- @Override
- public void close() throws IOException
- {
- }
-
- @Override
- public void flush() throws IOException
- {
- }
-
- @Override
- public void write(byte[] b) throws IOException
- {
- }
-
- @Override
- public void write(byte[] b, int off, int len) throws IOException
- {
- }
-
- @Override
- public void write(int b) throws IOException
- {
- }
-
- @Override
- public void writeBoolean(boolean v) throws IOException
- {
- }
-
- @Override
- public void writeByte(int v) throws IOException
- {
- }
-
- @Override
- public void writeBytes(String s) throws IOException
- {
- }
-
- @Override
- public void writeChar(int v) throws IOException
- {
- }
-
- @Override
- public void writeChars(String s) throws IOException
- {
- }
-
- @Override
- public void writeDouble(double v) throws IOException
- {
- }
-
- @Override
- public void writeFloat(float v) throws IOException
- {
- }
-
- @Override
- public void writeInt(int v) throws IOException
- {
- }
-
- @Override
- public void writeLong(long v) throws IOException
- {
- }
-
- @Override
- public void writeShort(int v) throws IOException
- {
- }
-
- @Override
- public void writeUTF(String str) throws IOException
- {
- }
- }
-
- /** Holds information about the field and the resulting object being traced. */
- private static final class TraceSlot
- {
- private final String fieldDescription;
-
- private final Object object;
-
- TraceSlot(Object object, String fieldDescription)
- {
- super();
- this.object = object;
- this.fieldDescription = fieldDescription;
- }
-
- @Override
- public String toString()
- {
- return object.getClass() + " - " + fieldDescription;
- }
- }
-
- private static final NoopOutputStream DUMMY_OUTPUT_STREAM = new NoopOutputStream();
-
- /** Whether we can execute the tests. If false, check will just return. */
- private static boolean available = true;
-
- // this hack - accessing the serialization API through introspection - is
- // the only way to use Java serialization for our purposes without writing
- // the whole thing from scratch (and even then, it would be limited). This
- // way of working is of course fragile for internal API changes, but as we
- // do an extra check on availability and we report when we can't use this
- // introspection fu, we'll find out soon enough and clients on this class
- // can fall back on Java's default exception for serialization errors (which
- // sucks and is the main reason for this attempt).
- private static Method LOOKUP_METHOD;
-
- private static Method GET_CLASS_DATA_LAYOUT_METHOD;
-
- private static Method GET_NUM_OBJ_FIELDS_METHOD;
-
- private static Method GET_OBJ_FIELD_VALUES_METHOD;
-
- private static Method GET_FIELD_METHOD;
-
- private static Method HAS_WRITE_REPLACE_METHOD_METHOD;
-
- private static Method INVOKE_WRITE_REPLACE_METHOD;
-
- static
- {
- try
- {
- LOOKUP_METHOD = ObjectStreamClass.class.getDeclaredMethod("lookup", new Class[] {
- Class.class, Boolean.TYPE });
- LOOKUP_METHOD.setAccessible(true);
-
- GET_CLASS_DATA_LAYOUT_METHOD = ObjectStreamClass.class.getDeclaredMethod(
- "getClassDataLayout", (Class[])null);
- GET_CLASS_DATA_LAYOUT_METHOD.setAccessible(true);
-
- GET_NUM_OBJ_FIELDS_METHOD = ObjectStreamClass.class.getDeclaredMethod(
- "getNumObjFields", (Class[])null);
- GET_NUM_OBJ_FIELDS_METHOD.setAccessible(true);
-
- GET_OBJ_FIELD_VALUES_METHOD = ObjectStreamClass.class.getDeclaredMethod(
- "getObjFieldValues", new Class[] { Object.class, Object[].class });
- GET_OBJ_FIELD_VALUES_METHOD.setAccessible(true);
-
- GET_FIELD_METHOD = ObjectStreamField.class.getDeclaredMethod("getField", (Class[])null);
- GET_FIELD_METHOD.setAccessible(true);
-
- HAS_WRITE_REPLACE_METHOD_METHOD = ObjectStreamClass.class.getDeclaredMethod(
- "hasWriteReplaceMethod", (Class[])null);
- HAS_WRITE_REPLACE_METHOD_METHOD.setAccessible(true);
-
- INVOKE_WRITE_REPLACE_METHOD = ObjectStreamClass.class.getDeclaredMethod(
- "invokeWriteReplace", new Class[] { Object.class });
- INVOKE_WRITE_REPLACE_METHOD.setAccessible(true);
- }
- catch (Exception e)
- {
- log.warn("SerializableChecker not available", e);
- available = false;
- }
- }
-
- /**
- * Gets whether we can execute the tests. If false, calling {@link #check(Object)} will just
- * return and you are advised to rely on the {@link NotSerializableException}. Clients are
- * advised to call this method prior to calling the check method.
- *
- * @return whether security settings and underlying API etc allow for accessing the
- * serialization API using introspection
- */
- public static boolean isAvailable()
- {
- return available;
- }
-
- /** object stack that with the trace path. */
- private final LinkedList<TraceSlot> traceStack = new LinkedList<TraceSlot>();
-
- /** set for checking circular references. */
- private final Map<Object, Object> checked = new IdentityHashMap<Object, Object>();
-
- /** string stack with current names pushed. */
- private final LinkedList<String> nameStack = new LinkedList<String>();
-
- /** root object being analyzed. */
- private Object root;
-
- /** set of classes that had no writeObject methods at lookup (to avoid repeated checking) */
- private final Set<Class<?>> writeObjectMethodMissing = new HashSet<Class<?>>();
-
- /** current simple field name. */
- private String simpleName = "";
-
- /** current full field description. */
- private String fieldDescription;
-
- /** Exception that should be set as the cause when throwing a new exception. */
- private final NotSerializableException exception;
-
- private final Stack<Object> stack = new Stack<Object>();
-
- /**
- * Construct.
- *
- * @param exception
- * exception that should be set as the cause when throwing a new exception
- *
- * @throws IOException
- */
- public SerializableChecker(NotSerializableException exception) throws IOException
- {
- this.exception = exception;
- }
-
- /**
- * @see java.io.ObjectOutputStream#reset()
- */
- @Override
- public void reset() throws IOException
- {
- root = null;
- checked.clear();
- fieldDescription = null;
- simpleName = null;
- traceStack.clear();
- nameStack.clear();
- writeObjectMethodMissing.clear();
- }
-
- private void check(Object obj)
- {
- if (obj == null)
- {
- return;
- }
-
- try
- {
- if (stack.contains(obj))
- {
- return;
- }
- }
- catch (RuntimeException e)
- {
- log.warn("Wasn't possible to check the object " + obj.getClass() +
- " possible due an problematic implementation of equals method");
- /*
- * Can't check if this obj were in stack, giving up because we don't want to throw an
- * invaluable exception to user. The main goal of this checker is to find non
- * serializable data
- */
- return;
- }
-
- stack.push(obj);
- try
- {
- internalCheck(obj);
- }
- finally
- {
- stack.pop();
- }
- }
-
- private void internalCheck(Object obj)
- {
- if (obj == null)
- {
- return;
- }
-
- Class<?> cls = obj.getClass();
- nameStack.add(simpleName);
- traceStack.add(new TraceSlot(obj, fieldDescription));
-
- if (!(obj instanceof Serializable) && (!Proxy.isProxyClass(cls)))
- {
- throw new WicketNotSerializableException(
- toPrettyPrintedStack(obj.getClass().getName()), exception);
- }
-
- ObjectStreamClass desc;
- for (;;)
- {
- try
- {
- desc = (ObjectStreamClass)LOOKUP_METHOD.invoke(null, cls, Boolean.TRUE);
- Class<?> repCl;
- if (!(Boolean)HAS_WRITE_REPLACE_METHOD_METHOD.invoke(desc, (Object[])null) ||
- (obj = INVOKE_WRITE_REPLACE_METHOD.invoke(desc, obj)) == null ||
- (repCl = obj.getClass()) == cls)
- {
- break;
- }
- cls = repCl;
- }
- catch (IllegalAccessException e)
- {
- throw new RuntimeException(e);
- }
- catch (InvocationTargetException e)
- {
- throw new RuntimeException(e);
- }
- }
-
- if (cls.isPrimitive())
- {
- // skip
- }
- else if (cls.isArray())
- {
- checked.put(obj, null);
- Class<?> ccl = cls.getComponentType();
- if (!(ccl.isPrimitive()))
- {
- Object[] objs = (Object[])obj;
- for (int i = 0; i < objs.length; i++)
- {
- String arrayPos = "[" + i + "]";
- simpleName = arrayPos;
- fieldDescription += arrayPos;
- check(objs[i]);
- }
- }
- }
- else if (obj instanceof Externalizable && (!Proxy.isProxyClass(cls)))
- {
- Externalizable extObj = (Externalizable)obj;
- try
- {
- extObj.writeExternal(new ObjectOutputAdaptor()
- {
- private int count = 0;
-
- @Override
- public void writeObject(Object streamObj) throws IOException
- {
- // Check for circular reference.
- if (checked.containsKey(streamObj))
- {
- return;
- }
-
- checked.put(streamObj, null);
- String arrayPos = "[write:" + count++ + "]";
- simpleName = arrayPos;
- fieldDescription += arrayPos;
-
- check(streamObj);
- }
- });
- }
- catch (Exception e)
- {
- if (e instanceof WicketNotSerializableException)
- {
- throw (WicketNotSerializableException)e;
- }
- log.warn("error delegating to Externalizable : " + e.getMessage() + ", path: " +
- currentPath());
- }
- }
- else
- {
- Method writeObjectMethod = null;
- if (writeObjectMethodMissing.contains(cls) == false)
- {
- try
- {
- writeObjectMethod = cls.getDeclaredMethod("writeObject",
- new Class[] { java.io.ObjectOutputStream.class });
- }
- catch (SecurityException e)
- {
- // we can't access / set accessible to true
- writeObjectMethodMissing.add(cls);
- }
- catch (NoSuchMethodException e)
- {
- // cls doesn't have that method
- writeObjectMethodMissing.add(cls);
- }
- }
-
- final Object original = obj;
- if (writeObjectMethod != null)
- {
- class InterceptingObjectOutputStream extends ObjectOutputStream
- {
- private int counter;
-
- InterceptingObjectOutputStream() throws IOException
- {
- super(DUMMY_OUTPUT_STREAM);
- enableReplaceObject(true);
- }
-
- @Override
- protected Object replaceObject(Object streamObj) throws IOException
- {
- if (streamObj == original)
- {
- return streamObj;
- }
-
- counter++;
- // Check for circular reference.
- if (checked.containsKey(streamObj))
- {
- return null;
- }
-
- checked.put(streamObj, null);
- String arrayPos = "[write:" + counter + "]";
- simpleName = arrayPos;
- fieldDescription += arrayPos;
- check(streamObj);
- return streamObj;
- }
- }
- try
- {
- InterceptingObjectOutputStream ioos = new InterceptingObjectOutputStream();
- ioos.writeObject(obj);
- }
- catch (Exception e)
- {
- if (e instanceof WicketNotSerializableException)
- {
- throw (WicketNotSerializableException)e;
- }
- log.warn("error delegating to writeObject : " + e.getMessage() + ", path: " +
- currentPath());
- }
- }
- else
- {
- Object[] slots;
- try
- {
- slots = (Object[])GET_CLASS_DATA_LAYOUT_METHOD.invoke(desc, (Object[])null);
- }
- catch (Exception e)
- {
- throw new RuntimeException(e);
- }
- for (Object slot : slots)
- {
- ObjectStreamClass slotDesc;
- try
- {
- Field descField = slot.getClass().getDeclaredField("desc");
- descField.setAccessible(true);
- slotDesc = (ObjectStreamClass)descField.get(slot);
- }
- catch (Exception e)
- {
- throw new RuntimeException(e);
- }
- checked.put(obj, null);
- checkFields(obj, slotDesc);
- }
- }
- }
-
- traceStack.removeLast();
- nameStack.removeLast();
- }
-
- private void checkFields(Object obj, ObjectStreamClass desc)
- {
- int numFields;
- try
- {
- numFields = (Integer)GET_NUM_OBJ_FIELDS_METHOD.invoke(desc, (Object[])null);
- }
- catch (IllegalAccessException e)
- {
- throw new RuntimeException(e);
- }
- catch (InvocationTargetException e)
- {
- throw new RuntimeException(e);
- }
-
- if (numFields > 0)
- {
- int numPrimFields;
- ObjectStreamField[] fields = desc.getFields();
- Object[] objVals = new Object[numFields];
- numPrimFields = fields.length - objVals.length;
- try
- {
- GET_OBJ_FIELD_VALUES_METHOD.invoke(desc, obj, objVals);
- }
- catch (IllegalAccessException e)
- {
- throw new RuntimeException(e);
- }
- catch (InvocationTargetException e)
- {
- throw new RuntimeException(e);
- }
- for (int i = 0; i < objVals.length; i++)
- {
- if (objVals[i] instanceof String || objVals[i] instanceof Number ||
- objVals[i] instanceof Date || objVals[i] instanceof Boolean ||
- objVals[i] instanceof Class)
- {
- // filter out common cases
- continue;
- }
-
- // Check for circular reference.
- if (checked.containsKey(objVals[i]))
- {
- continue;
- }
-
- ObjectStreamField fieldDesc = fields[numPrimFields + i];
- Field field;
- try
- {
- field = (Field)GET_FIELD_METHOD.invoke(fieldDesc, (Object[])null);
- }
- catch (IllegalAccessException e)
- {
- throw new RuntimeException(e);
- }
- catch (InvocationTargetException e)
- {
- throw new RuntimeException(e);
- }
-
- field.getName();
- simpleName = field.getName();
- fieldDescription = field.toString();
- check(objVals[i]);
- }
- }
- }
-
- /**
- * @return name from root to current node concatenated with slashes
- */
- private StringBuilder currentPath()
- {
- StringBuilder b = new StringBuilder();
- for (Iterator<String> it = nameStack.iterator(); it.hasNext();)
- {
- b.append(it.next());
- if (it.hasNext())
- {
- b.append('/');
- }
- }
- return b;
- }
-
- /**
- * Dump with indentation.
- *
- * @param type
- * the type that couldn't be serialized
- * @return A very pretty dump
- */
- private final String toPrettyPrintedStack(String type)
- {
- StringBuilder result = new StringBuilder();
- StringBuilder spaces = new StringBuilder();
- result.append("Unable to serialize class: ");
- result.append(type);
- result.append("\nField hierarchy is:");
- for (Iterator<TraceSlot> i = traceStack.listIterator(); i.hasNext();)
- {
- spaces.append(" ");
- TraceSlot slot = i.next();
- result.append("\n").append(spaces).append(slot.fieldDescription);
- result.append(" [class=").append(slot.object.getClass().getName());
- if (slot.object instanceof Component)
- {
- Component component = (Component)slot.object;
- result.append(", path=").append(component.getPath());
- }
- result.append("]");
- }
- result.append(" <----- field that is not serializable");
- return result.toString();
- }
-
- /**
- * @see java.io.ObjectOutputStream#writeObjectOverride(java.lang.Object)
- */
- @Override
- protected final void writeObjectOverride(Object obj) throws IOException
- {
- if (!available)
- {
- return;
- }
- root = obj;
- if (fieldDescription == null)
- {
- fieldDescription = (root instanceof Component) ? ((Component)root).getPath() : "";
- }
-
- check(root);
- }
-}
\ No newline at end of file