aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--all/build.xml4
-rw-r--r--all/ivy.xml1
-rw-r--r--server/src/com/vaadin/server/CommunicationManager.java5
-rw-r--r--server/src/com/vaadin/server/GAEVaadinServlet.java15
-rw-r--r--server/src/com/vaadin/server/VaadinService.java6
-rw-r--r--server/src/com/vaadin/server/VaadinServlet.java25
-rw-r--r--server/src/com/vaadin/server/VaadinServletService.java6
-rw-r--r--server/src/com/vaadin/server/VaadinServletSession.java57
-rw-r--r--server/src/com/vaadin/server/WrappedHttpSession.java5
-rw-r--r--server/src/com/vaadin/server/WrappedPortletSession.java5
-rw-r--r--server/src/com/vaadin/server/WrappedSession.java7
-rw-r--r--uitest/src/com/vaadin/tests/applicationcontext/ChangeSessionId.java15
-rw-r--r--uitest/src/com/vaadin/tests/components/tabsheet/TabsheetShouldUpdateHeight.html46
-rw-r--r--uitest/src/com/vaadin/tests/components/tabsheet/TabsheetShouldUpdateHeight.java59
14 files changed, 151 insertions, 105 deletions
diff --git a/all/build.xml b/all/build.xml
index d8bc535bb4..8f60703be6 100644
--- a/all/build.xml
+++ b/all/build.xml
@@ -10,7 +10,7 @@
<!-- global properties -->
<property name="module.name" value="vaadin-all" />
<property name="result.dir" value="result" />
- <property name="javadoc.jar" location="${result.dir}/vaadin-all-${vaadin.version}-javadoc.jar" />
+ <property name="javadoc.jar" location="${result.dir}/lib/vaadin-all-${vaadin.version}-javadoc.jar" />
<property name="temp.dir" location="${result.dir}/temp" />
<property name="temp.deps.dir" value="${temp.dir}/lib" />
<property name="javadoc.temp.dir" location="${result.dir}/javadoc-temp" />
@@ -75,7 +75,7 @@
</target>
- <target name="zip" depends="copy-jars">
+ <target name="zip" depends="copy-jars, javadoc">
<zip destfile="${zip.file}">
<fileset dir="${temp.dir}">
<!-- Avoid conflicts with servlet and portlet API. They are provided by the container -->
diff --git a/all/ivy.xml b/all/ivy.xml
index aebba5ba35..103d65e812 100644
--- a/all/ivy.xml
+++ b/all/ivy.xml
@@ -11,6 +11,7 @@
</configurations>
<publications>
<artifact type="zip" ext="zip" />
+ <artifact type="javadoc" ext="jar" m:classifier="javadoc" />
</publications>
<dependencies defaultconf="build">
<!-- API DEPENDENCIES -->
diff --git a/server/src/com/vaadin/server/CommunicationManager.java b/server/src/com/vaadin/server/CommunicationManager.java
index f876e748f8..5f61079261 100644
--- a/server/src/com/vaadin/server/CommunicationManager.java
+++ b/server/src/com/vaadin/server/CommunicationManager.java
@@ -110,8 +110,9 @@ public class CommunicationManager extends AbstractCommunicationManager {
@Override
protected InputStream getThemeResourceAsStream(UI uI, String themeName,
String resource) {
- VaadinServletSession session = (VaadinServletSession) uI.getSession();
- ServletContext servletContext = session.getHttpSession()
+ VaadinServletService service = (VaadinServletService) uI.getSession()
+ .getService();
+ ServletContext servletContext = service.getServlet()
.getServletContext();
return servletContext.getResourceAsStream("/"
+ VaadinServlet.THEME_DIRECTORY_PATH + themeName + "/"
diff --git a/server/src/com/vaadin/server/GAEVaadinServlet.java b/server/src/com/vaadin/server/GAEVaadinServlet.java
index 6c9c1882ea..c68f25a282 100644
--- a/server/src/com/vaadin/server/GAEVaadinServlet.java
+++ b/server/src/com/vaadin/server/GAEVaadinServlet.java
@@ -361,11 +361,18 @@ public class GAEVaadinServlet extends VaadinServlet {
*
* @param request
*/
- private void cleanSession(HttpServletRequest request) {
- HttpSession session = request.getSession(false);
- if (session != null) {
- session.removeAttribute(VaadinServletSession.class.getName());
+ private void cleanSession(VaadinServletRequest request) {
+ // Should really be replaced with a session storage API...
+ WrappedSession wrappedSession = request.getWrappedSession(false);
+ if (wrappedSession == null) {
+ return;
+ }
+ VaadinServiceSession serviceSession = VaadinServiceSession
+ .getForSession(getService(), wrappedSession);
+ if (serviceSession == null) {
+ return;
}
+ serviceSession.removeFromSession(getService());
}
/**
diff --git a/server/src/com/vaadin/server/VaadinService.java b/server/src/com/vaadin/server/VaadinService.java
index add32bf57b..c56d6caeb5 100644
--- a/server/src/com/vaadin/server/VaadinService.java
+++ b/server/src/com/vaadin/server/VaadinService.java
@@ -437,8 +437,10 @@ public abstract class VaadinService implements Serializable {
* @throws ServletException
* @throws MalformedURLException
*/
- protected abstract VaadinServiceSession createVaadinSession(
- VaadinRequest request) throws ServiceException;
+ protected VaadinServiceSession createVaadinSession(VaadinRequest request)
+ throws ServiceException {
+ return new VaadinServiceSession(this);
+ }
private void onVaadinSessionStarted(VaadinRequest request,
VaadinServiceSession session) throws ServiceException {
diff --git a/server/src/com/vaadin/server/VaadinServlet.java b/server/src/com/vaadin/server/VaadinServlet.java
index 7f664be6fb..9d1d79d8b1 100644
--- a/server/src/com/vaadin/server/VaadinServlet.java
+++ b/server/src/com/vaadin/server/VaadinServlet.java
@@ -232,7 +232,7 @@ public class VaadinServlet extends HttpServlet implements Constants {
return;
}
- VaadinServletSession vaadinSession = null;
+ VaadinServiceSession vaadinSession = null;
try {
// If a duplicate "close application" URL is received for an
@@ -254,8 +254,7 @@ public class VaadinServlet extends HttpServlet implements Constants {
}
// Find out the service session this request is related to
- vaadinSession = (VaadinServletSession) getService()
- .findVaadinSession(request);
+ vaadinSession = getService().findVaadinSession(request);
if (vaadinSession == null) {
return;
}
@@ -1173,26 +1172,6 @@ public class VaadinServlet extends HttpServlet implements Constants {
return request.getPathInfo();
}
- /**
- * Gets relative location of a theme resource.
- *
- * @param theme
- * the Theme name.
- * @param resource
- * the Theme resource.
- * @return External URI specifying the resource
- *
- * @deprecated might be refactored or removed before 7.0.0
- */
- @Deprecated
- public String getResourceLocation(String theme, ThemeResource resource) {
-
- if (resourcePath == null) {
- return resource.getResourceId();
- }
- return resourcePath + theme + "/" + resource.getResourceId();
- }
-
public class RequestError implements Terminal.ErrorEvent, Serializable {
private final Throwable throwable;
diff --git a/server/src/com/vaadin/server/VaadinServletService.java b/server/src/com/vaadin/server/VaadinServletService.java
index ca894b8a4f..d746ee2303 100644
--- a/server/src/com/vaadin/server/VaadinServletService.java
+++ b/server/src/com/vaadin/server/VaadinServletService.java
@@ -186,12 +186,6 @@ public class VaadinServletService extends VaadinService {
}
@Override
- protected VaadinServiceSession createVaadinSession(VaadinRequest request)
- throws ServiceException {
- return new VaadinServletSession(this);
- }
-
- @Override
public String getServiceName() {
return getServlet().getServletName();
}
diff --git a/server/src/com/vaadin/server/VaadinServletSession.java b/server/src/com/vaadin/server/VaadinServletSession.java
deleted file mode 100644
index aa31a19c1b..0000000000
--- a/server/src/com/vaadin/server/VaadinServletSession.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2011 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 javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionBindingListener;
-
-/**
- * Web application context for Vaadin applications.
- *
- * This is automatically added as a {@link HttpSessionBindingListener} when
- * added to a {@link HttpSession}.
- *
- * @author Vaadin Ltd.
- * @since 3.1
- *
- * @deprecated might be refactored or removed before 7.0.0
- */
-@Deprecated
-@SuppressWarnings("serial")
-public class VaadinServletSession extends VaadinServiceSession {
-
- /**
- * Create a servlet service session for the given servlet service
- *
- * @param service
- * the servlet service to which the new session belongs
- */
- public VaadinServletSession(VaadinServletService service) {
- super(service);
- }
-
- /**
- * Gets the http-session application is running in.
- *
- * @return HttpSession this application context resides in.
- */
- public HttpSession getHttpSession() {
- WrappedSession session = getSession();
- return ((WrappedHttpSession) session).getHttpSession();
- }
-
-}
diff --git a/server/src/com/vaadin/server/WrappedHttpSession.java b/server/src/com/vaadin/server/WrappedHttpSession.java
index e13a63635b..65db010ba9 100644
--- a/server/src/com/vaadin/server/WrappedHttpSession.java
+++ b/server/src/com/vaadin/server/WrappedHttpSession.java
@@ -88,4 +88,9 @@ public class WrappedHttpSession implements WrappedSession {
session.invalidate();
}
+ @Override
+ public String getId() {
+ return session.getId();
+ }
+
}
diff --git a/server/src/com/vaadin/server/WrappedPortletSession.java b/server/src/com/vaadin/server/WrappedPortletSession.java
index 03c1d7ba1f..f4a6003ed5 100644
--- a/server/src/com/vaadin/server/WrappedPortletSession.java
+++ b/server/src/com/vaadin/server/WrappedPortletSession.java
@@ -74,4 +74,9 @@ public class WrappedPortletSession implements WrappedSession {
public void invalidate() {
session.invalidate();
}
+
+ @Override
+ public String getId() {
+ return session.getId();
+ }
}
diff --git a/server/src/com/vaadin/server/WrappedSession.java b/server/src/com/vaadin/server/WrappedSession.java
index 34443239c7..cf0b1a2fbd 100644
--- a/server/src/com/vaadin/server/WrappedSession.java
+++ b/server/src/com/vaadin/server/WrappedSession.java
@@ -86,4 +86,11 @@ public interface WrappedSession {
* @see PortletSession#invalidate()
*/
public void invalidate();
+
+ /**
+ * Gets a string with a unique identifier for the session.
+ *
+ * @return a unique session id string
+ */
+ public String getId();
}
diff --git a/uitest/src/com/vaadin/tests/applicationcontext/ChangeSessionId.java b/uitest/src/com/vaadin/tests/applicationcontext/ChangeSessionId.java
index 4495b343d0..fa0f13e172 100644
--- a/uitest/src/com/vaadin/tests/applicationcontext/ChangeSessionId.java
+++ b/uitest/src/com/vaadin/tests/applicationcontext/ChangeSessionId.java
@@ -1,7 +1,6 @@
package com.vaadin.tests.applicationcontext;
import com.vaadin.server.VaadinService;
-import com.vaadin.server.VaadinServletSession;
import com.vaadin.tests.components.AbstractTestCase;
import com.vaadin.tests.util.Log;
import com.vaadin.ui.Button;
@@ -30,15 +29,13 @@ public class ChangeSessionId extends AbstractTestCase {
}));
setMainWindow(mainWindow);
- loginButton.addListener(new ClickListener() {
+ loginButton.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
- VaadinServletSession context = ((VaadinServletSession) getContext());
-
- String oldSessionId = context.getHttpSession().getId();
- context.getService().reinitializeSession(
- VaadinService.getCurrentRequest());
- String newSessionId = context.getHttpSession().getId();
+ String oldSessionId = getSessionId();
+ VaadinService.reinitializeSession(VaadinService
+ .getCurrentRequest());
+ String newSessionId = getSessionId();
if (oldSessionId.equals(newSessionId)) {
log.log("FAILED! Both old and new session id is "
+ newSessionId);
@@ -57,7 +54,7 @@ public class ChangeSessionId extends AbstractTestCase {
}
protected String getSessionId() {
- return ((VaadinServletSession) getContext()).getHttpSession().getId();
+ return getContext().getSession().getId();
}
@Override
diff --git a/uitest/src/com/vaadin/tests/components/tabsheet/TabsheetShouldUpdateHeight.html b/uitest/src/com/vaadin/tests/components/tabsheet/TabsheetShouldUpdateHeight.html
new file mode 100644
index 0000000000..2536ed50f6
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/tabsheet/TabsheetShouldUpdateHeight.html
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="http://localhost:9999/" />
+<title>New Test</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">New Test</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/TabsheetShouldUpdateHeight?restartApplication</td>
+ <td></td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runTabsheetShouldUpdateHeight::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VTabsheet[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]/domChild[0]/domChild[0]</td>
+ <td>12,8</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runTabsheetShouldUpdateHeight::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VTabsheet[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]/domChild[0]/domChild[0]</td>
+ <td>21,4</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>vaadin=runTabsheetShouldUpdateHeight::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runTabsheetShouldUpdateHeight::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VTabsheet[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]/domChild[0]/domChild[0]</td>
+ <td>18,3</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tab3</td>
+</tr>
+</tbody></table>
+</body>
+</html>
diff --git a/uitest/src/com/vaadin/tests/components/tabsheet/TabsheetShouldUpdateHeight.java b/uitest/src/com/vaadin/tests/components/tabsheet/TabsheetShouldUpdateHeight.java
new file mode 100644
index 0000000000..af0cd8b49b
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/tabsheet/TabsheetShouldUpdateHeight.java
@@ -0,0 +1,59 @@
+package com.vaadin.tests.components.tabsheet;
+
+import com.vaadin.tests.components.TestBase;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.TabSheet;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.VerticalLayout;
+
+public class TabsheetShouldUpdateHeight extends TestBase {
+
+ @Override
+ public void setup() {
+ final TabSheet tabsOuter = new TabSheet();
+ final TabSheet tabsInner = new TabSheet();
+
+ final Component tab2;
+
+ tabsInner.addTab(tab2 = getLayoutWithComponents(6, "tab2"), "Tab 2");
+ tabsInner.addTab(getLayoutWithComponents(8, "tab3"), "Tab 3");
+
+ tabsOuter.addTab(tabsInner, "Inner tabs");
+ tabsOuter.addTab(getLayoutWithComponents(10, "tab1"), "Tab 1");
+
+ final Button btnSwitch = new Button("switch to Tab2",
+ new Button.ClickListener() {
+
+ public void buttonClick(final ClickEvent inEvent) {
+ tabsOuter.setSelectedTab(tabsInner);
+ tabsInner.setSelectedTab(tab2);
+ }
+ });
+
+ addComponent(tabsOuter);
+ addComponent(btnSwitch);
+ }
+
+ private VerticalLayout getLayoutWithComponents(final int inAmount, String id) {
+ final VerticalLayout v = new VerticalLayout();
+ v.setDebugId(id);
+ v.setSpacing(true);
+ v.setMargin(true);
+ for (int i = 0; i < inAmount; i++) {
+ v.addComponent(new TextField("Text field:"));
+ }
+ return v;
+ }
+
+ @Override
+ protected String getDescription() {
+ return "click with mouse first on tab 3 and then on tab 1. now click on the button 'switch to tab2'. then click on tab 3 again and the scrollbars appear";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 9275;
+ }
+} \ No newline at end of file