Author: ivaynberg
Date: Fri Oct 9 07:09:32 2009
New Revision: 823428
URL: http://svn.apache.org/viewvc?rev=823428&view=rev
Log:
basic mountmapper unit test, more to come
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/mapper/mount/
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/mapper/mount/MountMapperTest.java
(with props)
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/pom.xml
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountMapper.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountParameters.java
Modified: wicket/sandbox/knopp/experimental/wicket-ng/pom.xml
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/pom.xml?rev=823428&r1=823427&r2=823428&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-ng/pom.xml (original)
+++ wicket/sandbox/knopp/experimental/wicket-ng/pom.xml Fri Oct 9 07:09:32 2009
@@ -1,22 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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
+ <!--
+ 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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ 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.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -52,6 +50,17 @@
<scope>provided</scope>
<optional>true</optional>
</dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.7</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <version>1.8.0</version>
+ </dependency>
</dependencies>
<build>
<plugins>
@@ -61,7 +70,7 @@
<configuration>
<licenseLocation>${basedir}/../../../common/lib/clover.license</licenseLocation>
</configuration>
- </plugin>
+ </plugin>
</plugins>
</build>
</project>
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java?rev=823428&r1=823427&r2=823428&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
Fri Oct 9 07:09:32 2009
@@ -5,16 +5,59 @@
public class MockRequest extends Request
{
- private final Url url;
-
- public MockRequest(Url url)
- {
- this.url = url;
- }
-
- @Override
- public Url getUrl()
- {
- return url;
- }
+ private final Url url;
+
+ public MockRequest(Url url)
+ {
+ this.url = url;
+ }
+
+ @Override
+ public Request requestWithUrl(Url url)
+ {
+ return new MockRequest(url);
+ }
+
+ @Override
+ public Url getUrl()
+ {
+ return url;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((url == null) ? 0 : url.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ MockRequest other = (MockRequest)obj;
+ if (url == null)
+ {
+ if (other.url != null)
+ return false;
+ }
+ else if (!url.equals(other.url))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "MockRequest [url=" + url + "]";
+ }
+
+
}
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountMapper.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountMapper.java?rev=823428&r1=823427&r2=823428&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountMapper.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountMapper.java
Fri Oct 9 07:09:32 2009
@@ -13,7 +13,7 @@
*
* @author igor.vaynberg
*/
-public abstract class MountMapper extends AbstractMapper
+public class MountMapper extends AbstractMapper
{
private final String[] mountSegments;
private final MountedRequestMapper mapper;
@@ -102,14 +102,19 @@
for (int i = mountSegments.length; i > 0; i--)
{
- String segment = mountSegments[i];
+ String segment = mountSegments[i - 1];
String placeholder = getPlaceholder(segment);
- String replacement =
mount.getMountParameters().getValue(placeholder).toString();
+ String replacement = segment;
- if (replacement == null)
+ if (placeholder != null)
{
- throw new IllegalStateException();// TODO message
+ replacement =
mount.getMountParameters().getValue(placeholder).toString();
+ if (replacement == null)
+ {
+ throw new IllegalStateException();// TODO message
+ }
}
+
mount.getUrl().getSegments().add(0, replacement);
}
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountParameters.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountParameters.java?rev=823428&r1=823427&r2=823428&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountParameters.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/mapper/mount/MountParameters.java
Fri Oct 9 07:09:32 2009
@@ -32,4 +32,43 @@
{
return map.keySet();
}
+
+ @Override
+ public int hashCode()
+ {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((map == null) ? 0 : map.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ MountParameters other = (MountParameters)obj;
+ if (map == null)
+ {
+ if (other.map != null)
+ return false;
+ }
+ else if (!map.equals(other.map))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "MountParameters [" + map + "]";
+ }
+
+
+
+
}
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/mapper/mount/MountMapperTest.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/mapper/mount/MountMapperTest.java?rev=823428&view=auto
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/mapper/mount/MountMapperTest.java
(added)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/mapper/mount/MountMapperTest.java
Fri Oct 9 07:09:32 2009
@@ -0,0 +1,71 @@
+package org.apache.wicket.request.mapper.mount;
+
+import static org.hamcrest.core.Is.*;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+import org.apache.wicket.mock.MockRequest;
+import org.apache.wicket.request.Request;
+import org.apache.wicket.request.RequestHandler;
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.util.string.StringValue;
+import org.junit.Test;
+
+
+public class MountMapperTest
+{
+ @Test
+ public void testMountMapper()
+ {
+ MountedRequestMapper target = mock(MountedRequestMapper.class);
+
+ MountMapper mapper = new MountMapper("foo/${bar}/baz", target);
+
+ MockRequest request = newRequest("foo/test/baz/buzz");
+
+ // test compatibility score
+ assertThat(mapper.getCompatibilityScore(request), is(3));
+
+ // test maprequest
+ mapper.mapRequest(request);
+ MountParameters params = newParams("bar", "test");
+ Request mounted = newRequest("buzz");
+ verify(target).mapRequest(mounted, params);
+
+ // test maphandler
+ Mount mount = new Mount(mounted.getUrl());
+ mount.setMountParameters(params);
+ when(target.mapHandler(MOCK_HANDLER)).thenReturn(mount);
+ Url url = mapper.mapHandler(MOCK_HANDLER);
+ assertThat(url, is(request.getUrl()));
+ }
+
+ private static RequestHandler MOCK_HANDLER = new RequestHandler()
+ {
+
+ public void detach(RequestCycle requestCycle)
+ {
+ }
+
+ public void respond(RequestCycle requestCycle)
+ {
+ }
+
+ };
+
+ private static MockRequest newRequest(String url)
+ {
+ return new MockRequest(Url.parse(url));
+ }
+
+ private static MountParameters newParams(String... values)
+ {
+ MountParameters params = new MountParameters();
+ for (int i = 0; i < values.length; i += 2)
+ {
+ params.setValue(values[i], StringValue.valueOf(values[i + 1]));
+ }
+ return params;
+ }
+}
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/request/mapper/mount/MountMapperTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain