Conflicts: shared/ivy.xml Change-Id: I2aa7cc35953fdc7441d1a5b15a7bf0a34a97db7ftags/7.2.0.beta1
@@ -60,6 +60,8 @@ | |||
<!-- Test frameworks & related --> | |||
<dependency org="junit" name="junit" rev="4.11" | |||
conf="test,ide -> default" /> | |||
<dependency org="org.mockito" name="mockito-all" rev="1.9.5" | |||
conf="test,ide->default" /> | |||
<dependency org="org.easymock" name="easymock" rev="3.0" | |||
conf="test,ide-> default" transitive="true" /> | |||
<dependency org="org.hsqldb" name="hsqldb" rev="2.2.6" |
@@ -16,6 +16,8 @@ | |||
package com.vaadin.server; | |||
import static com.vaadin.shared.util.SharedUtil.trimTrailingSlashes; | |||
import java.io.File; | |||
import java.io.InputStream; | |||
import java.net.URL; | |||
@@ -80,9 +82,8 @@ public class VaadinPortletService extends VaadinService { | |||
} | |||
private static String getPortalProperty(VaadinRequest request, | |||
String portalParameterVaadinWidgetset) { | |||
return ((VaadinPortletRequest) request) | |||
.getPortalProperty(portalParameterVaadinWidgetset); | |||
String propertyName) { | |||
return ((VaadinPortletRequest) request).getPortalProperty(propertyName); | |||
} | |||
@Override | |||
@@ -139,12 +140,7 @@ public class VaadinPortletService extends VaadinService { | |||
String staticFileLocation = getPortalProperty(request, | |||
Constants.PORTAL_PARAMETER_VAADIN_RESOURCE_PATH); | |||
if (staticFileLocation != null) { | |||
// remove trailing slash if any | |||
while (staticFileLocation.endsWith(".")) { | |||
staticFileLocation = staticFileLocation.substring(0, | |||
staticFileLocation.length() - 1); | |||
} | |||
return staticFileLocation; | |||
return trimTrailingSlashes(staticFileLocation); | |||
} else { | |||
// default for Liferay | |||
return "/html"; |
@@ -0,0 +1,58 @@ | |||
/* | |||
* Copyright 2000-2013 Vaadin Ltd. | |||
* | |||
* Licensed 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 com.vaadin.server; | |||
import static org.hamcrest.MatcherAssert.assertThat; | |||
import static org.hamcrest.core.Is.is; | |||
import static org.mockito.Mockito.mock; | |||
import static org.mockito.Mockito.when; | |||
import org.junit.Before; | |||
import org.junit.Test; | |||
public class VaadinPortletServiceTests { | |||
private VaadinPortletService sut; | |||
private VaadinPortletRequest request; | |||
@Before | |||
public void setup() throws ServiceException { | |||
VaadinPortlet portlet = mock(VaadinPortlet.class); | |||
DeploymentConfiguration conf = mock(DeploymentConfiguration.class); | |||
sut = new VaadinPortletService(portlet, conf); | |||
request = mock(VaadinPortletRequest.class); | |||
} | |||
private void mockRequestToReturnLocation(String location) { | |||
when(request.getPortalProperty( | |||
Constants.PORTAL_PARAMETER_VAADIN_RESOURCE_PATH)) | |||
.thenReturn(location); | |||
} | |||
@Test | |||
public void trailingSlashesAreTrimmedFromStaticFileLocation() | |||
throws ServiceException { | |||
mockRequestToReturnLocation("/content////"); | |||
String staticFileLocation = sut | |||
.getStaticFileLocation(request); | |||
assertThat(staticFileLocation, is("/content")); | |||
} | |||
} |
@@ -44,4 +44,13 @@ public class SharedUtil implements Serializable { | |||
return o1.equals(o2); | |||
} | |||
/** | |||
* Trims trailing slashes (if any) from a string. | |||
* @param value The string value to be trimmed. Cannot be null. | |||
* @return String value without trailing slashes. | |||
*/ | |||
public static String trimTrailingSlashes(String value) { | |||
return value.replaceAll("/*$", ""); | |||
} | |||
} |
@@ -0,0 +1,43 @@ | |||
package com.vaadin.shared.util; | |||
import org.junit.Before; | |||
import org.junit.Test; | |||
import static org.hamcrest.CoreMatchers.is; | |||
import static org.junit.Assert.assertThat; | |||
public class SharedUtilTests { | |||
private SharedUtil sut; | |||
@Before | |||
public void setup() { | |||
sut = new SharedUtil(); | |||
} | |||
@Test | |||
public void trailingSlashIsTrimmed() { | |||
assertThat(sut.trimTrailingSlashes("/path/"), is("/path")); | |||
} | |||
@Test | |||
public void noTrailingSlashForTrimming() { | |||
assertThat(sut.trimTrailingSlashes("/path"), is("/path")); | |||
} | |||
@Test | |||
public void trailingSlashesAreTrimmed() { | |||
assertThat(sut.trimTrailingSlashes("/path///"), is("/path")); | |||
} | |||
@Test | |||
public void emptyStringIsHandled() { | |||
assertThat(sut.trimTrailingSlashes(""), is("")); | |||
} | |||
@Test | |||
public void rootSlashIsTrimmed() { | |||
assertThat(sut.trimTrailingSlashes("/"), is("")); | |||
} | |||
} |