]> source.dussan.org Git - vaadin-framework.git/commitdiff
Rename AbstractWebApplicationContext to ApplicationContext (#9402)
authorLeif Åstrand <leif@vaadin.com>
Fri, 31 Aug 2012 16:27:09 +0000 (19:27 +0300)
committerLeif Åstrand <leif@vaadin.com>
Mon, 3 Sep 2012 11:05:28 +0000 (14:05 +0300)
17 files changed:
server/src/com/vaadin/Application.java
server/src/com/vaadin/server/AbstractCommunicationManager.java
server/src/com/vaadin/server/AbstractWebApplicationContext.java [deleted file]
server/src/com/vaadin/server/ApplicationContext.java [new file with mode: 0644]
server/src/com/vaadin/server/DeploymentConfiguration.java
server/src/com/vaadin/server/GAEApplicationServlet.java
server/src/com/vaadin/server/HttpServletRequestListener.java
server/src/com/vaadin/server/PortletApplicationContext2.java
server/src/com/vaadin/server/PortletRequestListener.java
server/src/com/vaadin/server/RequestTimer.java
server/src/com/vaadin/server/WebApplicationContext.java
server/src/com/vaadin/service/ApplicationContext.java [deleted file]
server/tests/src/com/vaadin/tests/server/TransactionListenersConcurrency.java
uitest/src/com/vaadin/tests/applicationcontext/RemoveTransactionListener.java
uitest/src/com/vaadin/tests/components/AbstractTestApplication.java
uitest/src/com/vaadin/tests/components/AbstractTestCase.java
uitest/src/com/vaadin/tests/components/AbstractTestUI.java

index cd34fb75404a7f4ce0ed32bf84e72df99e1ca8ba..2ea7f01eeaad39b2e8c151b9dac011f707c9e0b8 100644 (file)
@@ -50,6 +50,7 @@ import com.vaadin.data.util.converter.DefaultConverterFactory;
 import com.vaadin.event.EventRouter;
 import com.vaadin.server.AbstractApplicationServlet;
 import com.vaadin.server.AbstractErrorMessage;
+import com.vaadin.server.ApplicationContext;
 import com.vaadin.server.BootstrapFragmentResponse;
 import com.vaadin.server.BootstrapListener;
 import com.vaadin.server.BootstrapPageResponse;
@@ -67,7 +68,6 @@ import com.vaadin.server.WebApplicationContext;
 import com.vaadin.server.WrappedRequest;
 import com.vaadin.server.WrappedRequest.BrowserDetails;
 import com.vaadin.server.WrappedResponse;
-import com.vaadin.service.ApplicationContext;
 import com.vaadin.shared.ui.ui.UIConstants;
 import com.vaadin.tools.ReflectTools;
 import com.vaadin.ui.AbstractComponent;
index 72406e629d89cdbf06acb0ba99e35ac170b88757..526d18fd346b2746980ffff44a59a23d23e9ccb7 100644 (file)
@@ -1323,8 +1323,7 @@ public abstract class AbstractCommunicationManager implements Serializable {
      * response.
      */
     private void writePerformanceData(final PrintWriter outWriter) {
-        AbstractWebApplicationContext ctx = (AbstractWebApplicationContext) application
-                .getContext();
+        ApplicationContext ctx = application.getContext();
         outWriter.write(String.format(", \"timings\":[%d, %d]",
                 ctx.getTotalSessionTime(), ctx.getLastRequestTime()));
     }
diff --git a/server/src/com/vaadin/server/AbstractWebApplicationContext.java b/server/src/com/vaadin/server/AbstractWebApplicationContext.java
deleted file mode 100644 (file)
index cf983f4..0000000
+++ /dev/null
@@ -1,215 +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 java.io.PrintWriter;
-import java.io.Serializable;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.servlet.http.HttpSessionBindingEvent;
-import javax.servlet.http.HttpSessionBindingListener;
-
-import com.vaadin.Application;
-import com.vaadin.service.ApplicationContext;
-
-/**
- * Base class for web application contexts (including portlet contexts) that
- * handles the common tasks.
- */
-public abstract class AbstractWebApplicationContext implements
-        ApplicationContext, HttpSessionBindingListener, Serializable {
-
-    protected Collection<TransactionListener> listeners = Collections
-            .synchronizedList(new LinkedList<TransactionListener>());
-
-    protected final HashSet<Application> applications = new HashSet<Application>();
-
-    protected WebBrowser browser = new WebBrowser();
-
-    protected HashMap<Application, AbstractCommunicationManager> applicationToAjaxAppMgrMap = new HashMap<Application, AbstractCommunicationManager>();
-
-    private long totalSessionTime = 0;
-
-    private long lastRequestTime = -1;
-
-    @Override
-    public void addTransactionListener(TransactionListener listener) {
-        if (listener != null) {
-            listeners.add(listener);
-        }
-    }
-
-    @Override
-    public void removeTransactionListener(TransactionListener listener) {
-        listeners.remove(listener);
-    }
-
-    /**
-     * Sends a notification that a transaction is starting.
-     * 
-     * @param application
-     *            The application associated with the transaction.
-     * @param request
-     *            the HTTP or portlet request that triggered the transaction.
-     */
-    protected void startTransaction(Application application, Object request) {
-        ArrayList<TransactionListener> currentListeners;
-        synchronized (listeners) {
-            currentListeners = new ArrayList<TransactionListener>(listeners);
-        }
-        for (TransactionListener listener : currentListeners) {
-            listener.transactionStart(application, request);
-        }
-    }
-
-    /**
-     * Sends a notification that a transaction has ended.
-     * 
-     * @param application
-     *            The application associated with the transaction.
-     * @param request
-     *            the HTTP or portlet request that triggered the transaction.
-     */
-    protected void endTransaction(Application application, Object request) {
-        LinkedList<Exception> exceptions = null;
-
-        ArrayList<TransactionListener> currentListeners;
-        synchronized (listeners) {
-            currentListeners = new ArrayList<TransactionListener>(listeners);
-        }
-
-        for (TransactionListener listener : currentListeners) {
-            try {
-                listener.transactionEnd(application, request);
-            } catch (final RuntimeException t) {
-                if (exceptions == null) {
-                    exceptions = new LinkedList<Exception>();
-                }
-                exceptions.add(t);
-            }
-        }
-
-        // If any runtime exceptions occurred, throw a combined exception
-        if (exceptions != null) {
-            final StringBuffer msg = new StringBuffer();
-            for (Exception e : exceptions) {
-                if (msg.length() == 0) {
-                    msg.append("\n\n--------------------------\n\n");
-                }
-                msg.append(e.getMessage() + "\n");
-                final StringWriter trace = new StringWriter();
-                e.printStackTrace(new PrintWriter(trace, true));
-                msg.append(trace.toString());
-            }
-            throw new RuntimeException(msg.toString());
-        }
-    }
-
-    /**
-     * @see javax.servlet.http.HttpSessionBindingListener#valueBound(HttpSessionBindingEvent)
-     */
-    @Override
-    public void valueBound(HttpSessionBindingEvent arg0) {
-        // We are not interested in bindings
-    }
-
-    /**
-     * @see javax.servlet.http.HttpSessionBindingListener#valueUnbound(HttpSessionBindingEvent)
-     */
-    @Override
-    public void valueUnbound(HttpSessionBindingEvent event) {
-        // If we are going to be unbound from the session, the session must be
-        // closing
-        try {
-            while (!applications.isEmpty()) {
-                final Application app = applications.iterator().next();
-                app.close();
-                removeApplication(app);
-            }
-        } catch (Exception e) {
-            // This should never happen but is possible with rare
-            // configurations (e.g. robustness tests). If you have one
-            // thread doing HTTP socket write and another thread trying to
-            // remove same application here. Possible if you got e.g. session
-            // lifetime 1 min but socket write may take longer than 1 min.
-            // FIXME: Handle exception
-            getLogger().log(Level.SEVERE,
-                    "Could not remove application, leaking memory.", e);
-        }
-    }
-
-    /**
-     * Get the web browser associated with this application context.
-     * 
-     * Because application context is related to the http session and server
-     * maintains one session per browser-instance, each context has exactly one
-     * web browser associated with it.
-     * 
-     * @return
-     */
-    public WebBrowser getBrowser() {
-        return browser;
-    }
-
-    @Override
-    public Collection<Application> getApplications() {
-        return Collections.unmodifiableCollection(applications);
-    }
-
-    protected void removeApplication(Application application) {
-        applications.remove(application);
-        applicationToAjaxAppMgrMap.remove(application);
-    }
-
-    /**
-     * @return The total time spent servicing requests in this session.
-     */
-    public long getTotalSessionTime() {
-        return totalSessionTime;
-    }
-
-    /**
-     * Sets the time spent servicing the last request in the session and updates
-     * the total time spent servicing requests in this session.
-     * 
-     * @param time
-     *            the time spent in the last request.
-     */
-    public void setLastRequestTime(long time) {
-        lastRequestTime = time;
-        totalSessionTime += time;
-    }
-
-    /**
-     * @return the time spent servicing the last request in this session.
-     */
-    public long getLastRequestTime() {
-        return lastRequestTime;
-    }
-
-    private Logger getLogger() {
-        return Logger.getLogger(AbstractWebApplicationContext.class.getName());
-    }
-
-}
\ No newline at end of file
diff --git a/server/src/com/vaadin/server/ApplicationContext.java b/server/src/com/vaadin/server/ApplicationContext.java
new file mode 100644 (file)
index 0000000..b698ea5
--- /dev/null
@@ -0,0 +1,308 @@
+/*
+ * 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 java.io.File;
+import java.io.PrintWriter;
+import java.io.Serializable;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.servlet.http.HttpSessionBindingEvent;
+import javax.servlet.http.HttpSessionBindingListener;
+
+import com.vaadin.Application;
+
+/**
+ * <code>ApplicationContext</code> provides information about the running
+ * context of the application. Each context is shared by all applications that
+ * are open for one user. In a web-environment this corresponds to a
+ * HttpSession.
+ * <p>
+ * Base class for web application contexts (including portlet contexts) that
+ * handles the common tasks.
+ * 
+ * @author Vaadin Ltd.
+ * @since 3.1
+ */
+public abstract class ApplicationContext implements HttpSessionBindingListener,
+        Serializable {
+
+    /**
+     * Interface for listening to transaction events. Implement this interface
+     * to listen to all transactions between the client and the application.
+     * 
+     */
+    public static interface TransactionListener extends Serializable {
+
+        /**
+         * Invoked at the beginning of every transaction.
+         * 
+         * The transaction is linked to the context, not the application so if
+         * you have multiple applications running in the same context you need
+         * to check that the request is associated with the application you are
+         * interested in. This can be done looking at the application parameter.
+         * 
+         * @param application
+         *            the Application object.
+         * @param transactionData
+         *            the Data identifying the transaction.
+         */
+        public void transactionStart(Application application,
+                Object transactionData);
+
+        /**
+         * Invoked at the end of every transaction.
+         * 
+         * The transaction is linked to the context, not the application so if
+         * you have multiple applications running in the same context you need
+         * to check that the request is associated with the application you are
+         * interested in. This can be done looking at the application parameter.
+         * 
+         * @param applcation
+         *            the Application object.
+         * @param transactionData
+         *            the Data identifying the transaction.
+         */
+        public void transactionEnd(Application application,
+                Object transactionData);
+
+    }
+
+    protected Collection<ApplicationContext.TransactionListener> listeners = Collections
+            .synchronizedList(new LinkedList<ApplicationContext.TransactionListener>());
+
+    protected final HashSet<Application> applications = new HashSet<Application>();
+
+    protected WebBrowser browser = new WebBrowser();
+
+    protected HashMap<Application, AbstractCommunicationManager> applicationToAjaxAppMgrMap = new HashMap<Application, AbstractCommunicationManager>();
+
+    private long totalSessionTime = 0;
+
+    private long lastRequestTime = -1;
+
+    /**
+     * Adds a transaction listener to this context. The transaction listener is
+     * called before and after each each request related to this session except
+     * when serving static resources.
+     * 
+     * The transaction listener must not be null.
+     * 
+     * @see com.vaadin.service.ApplicationContext#addTransactionListener(com.vaadin.service.ApplicationContext.TransactionListener)
+     */
+    public void addTransactionListener(
+            ApplicationContext.TransactionListener listener) {
+        if (listener != null) {
+            listeners.add(listener);
+        }
+    }
+
+    /**
+     * Removes a transaction listener from this context.
+     * 
+     * @param listener
+     *            the listener to be removed.
+     * @see ApplicationContext.TransactionListener
+     */
+    public void removeTransactionListener(
+            ApplicationContext.TransactionListener listener) {
+        listeners.remove(listener);
+    }
+
+    /**
+     * Sends a notification that a transaction is starting.
+     * 
+     * @param application
+     *            The application associated with the transaction.
+     * @param request
+     *            the HTTP or portlet request that triggered the transaction.
+     */
+    protected void startTransaction(Application application, Object request) {
+        ArrayList<ApplicationContext.TransactionListener> currentListeners;
+        synchronized (listeners) {
+            currentListeners = new ArrayList<ApplicationContext.TransactionListener>(
+                    listeners);
+        }
+        for (ApplicationContext.TransactionListener listener : currentListeners) {
+            listener.transactionStart(application, request);
+        }
+    }
+
+    /**
+     * Sends a notification that a transaction has ended.
+     * 
+     * @param application
+     *            The application associated with the transaction.
+     * @param request
+     *            the HTTP or portlet request that triggered the transaction.
+     */
+    protected void endTransaction(Application application, Object request) {
+        LinkedList<Exception> exceptions = null;
+
+        ArrayList<ApplicationContext.TransactionListener> currentListeners;
+        synchronized (listeners) {
+            currentListeners = new ArrayList<ApplicationContext.TransactionListener>(
+                    listeners);
+        }
+
+        for (ApplicationContext.TransactionListener listener : currentListeners) {
+            try {
+                listener.transactionEnd(application, request);
+            } catch (final RuntimeException t) {
+                if (exceptions == null) {
+                    exceptions = new LinkedList<Exception>();
+                }
+                exceptions.add(t);
+            }
+        }
+
+        // If any runtime exceptions occurred, throw a combined exception
+        if (exceptions != null) {
+            final StringBuffer msg = new StringBuffer();
+            for (Exception e : exceptions) {
+                if (msg.length() == 0) {
+                    msg.append("\n\n--------------------------\n\n");
+                }
+                msg.append(e.getMessage() + "\n");
+                final StringWriter trace = new StringWriter();
+                e.printStackTrace(new PrintWriter(trace, true));
+                msg.append(trace.toString());
+            }
+            throw new RuntimeException(msg.toString());
+        }
+    }
+
+    /**
+     * @see javax.servlet.http.HttpSessionBindingListener#valueBound(HttpSessionBindingEvent)
+     */
+    @Override
+    public void valueBound(HttpSessionBindingEvent arg0) {
+        // We are not interested in bindings
+    }
+
+    /**
+     * @see javax.servlet.http.HttpSessionBindingListener#valueUnbound(HttpSessionBindingEvent)
+     */
+    @Override
+    public void valueUnbound(HttpSessionBindingEvent event) {
+        // If we are going to be unbound from the session, the session must be
+        // closing
+        try {
+            while (!applications.isEmpty()) {
+                final Application app = applications.iterator().next();
+                app.close();
+                removeApplication(app);
+            }
+        } catch (Exception e) {
+            // This should never happen but is possible with rare
+            // configurations (e.g. robustness tests). If you have one
+            // thread doing HTTP socket write and another thread trying to
+            // remove same application here. Possible if you got e.g. session
+            // lifetime 1 min but socket write may take longer than 1 min.
+            // FIXME: Handle exception
+            getLogger().log(Level.SEVERE,
+                    "Could not remove application, leaking memory.", e);
+        }
+    }
+
+    /**
+     * Get the web browser associated with this application context.
+     * 
+     * Because application context is related to the http session and server
+     * maintains one session per browser-instance, each context has exactly one
+     * web browser associated with it.
+     * 
+     * @return
+     */
+    public WebBrowser getBrowser() {
+        return browser;
+    }
+
+    /**
+     * Returns a collection of all the applications in this context.
+     * 
+     * Each application context contains all active applications for one user.
+     * 
+     * @return A collection containing all the applications in this context.
+     */
+    public Collection<Application> getApplications() {
+        return Collections.unmodifiableCollection(applications);
+    }
+
+    protected void removeApplication(Application application) {
+        applications.remove(application);
+        applicationToAjaxAppMgrMap.remove(application);
+    }
+
+    /**
+     * @return The total time spent servicing requests in this session.
+     */
+    public long getTotalSessionTime() {
+        return totalSessionTime;
+    }
+
+    /**
+     * Sets the time spent servicing the last request in the session and updates
+     * the total time spent servicing requests in this session.
+     * 
+     * @param time
+     *            the time spent in the last request.
+     */
+    public void setLastRequestTime(long time) {
+        lastRequestTime = time;
+        totalSessionTime += time;
+    }
+
+    /**
+     * @return the time spent servicing the last request in this session.
+     */
+    public long getLastRequestTime() {
+        return lastRequestTime;
+    }
+
+    private Logger getLogger() {
+        return Logger.getLogger(ApplicationContext.class.getName());
+    }
+
+    /**
+     * Returns application context base directory.
+     * 
+     * Typically an application is deployed in a such way that is has an
+     * application directory. For web applications this directory is the root
+     * directory of the web applications. In some cases applications might not
+     * have an application directory (for example web applications running
+     * inside a war).
+     * 
+     * @return The application base directory or null if the application has no
+     *         base directory.
+     */
+    public abstract File getBaseDirectory();
+
+    /**
+     * Returns the time between requests, in seconds, before this context is
+     * invalidated. A negative time indicates the context should never timeout.
+     */
+    public abstract int getMaxInactiveInterval();
+
+}
\ No newline at end of file
index d1cbdfc4995c4ad1ed9913e00e74d56b7ee4ad8b..d61d03f4d905601e745a2ebf5f19e2da062db9c0 100644 (file)
@@ -23,8 +23,6 @@ import java.util.Properties;
 import javax.portlet.PortletContext;
 import javax.servlet.ServletContext;
 
-import com.vaadin.service.ApplicationContext;
-
 /**
  * Provide deployment specific settings that are required outside terminal
  * specific code.
index 16345edeadf234ffee1764a245f51949b5889fa4..7e0b52c3821ed71d9ac8456110ac4a76d442d528 100644 (file)
@@ -47,7 +47,6 @@ import com.google.appengine.api.memcache.Expiration;
 import com.google.appengine.api.memcache.MemcacheService;
 import com.google.appengine.api.memcache.MemcacheServiceFactory;
 import com.google.apphosting.api.DeadlineExceededException;
-import com.vaadin.service.ApplicationContext;
 
 /**
  * ApplicationServlet to be used when deploying to Google App Engine, in
index 1f9f633c17718f040d4b6c4169a7313fff39d1a2..e871dca05d2df2a416ebc80595df10f3f2651284 100644 (file)
@@ -23,7 +23,6 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import com.vaadin.Application;
-import com.vaadin.service.ApplicationContext.TransactionListener;
 
 /**
  * {@link Application} that implements this interface gets notified of request
@@ -37,7 +36,7 @@ import com.vaadin.service.ApplicationContext.TransactionListener;
  * </ul>
  * <p>
  * Alternatives for implementing similar features are are Servlet {@link Filter}
- * s and {@link TransactionListener}s in Vaadin.
+ * s and {@link ApplicationContext.TransactionListener}s in Vaadin.
  * 
  * @since 6.2
  * @see PortletRequestListener
index aca80f9c178d543560ae7f8c2e6b5091028a6334..366c5b160d6656c771aff985d17cab4b69ecbd80 100644 (file)
@@ -56,7 +56,7 @@ import com.vaadin.ui.UI;
  * @author peholmst
  */
 @SuppressWarnings("serial")
-public class PortletApplicationContext2 extends AbstractWebApplicationContext {
+public class PortletApplicationContext2 extends ApplicationContext {
 
     protected Map<Application, Set<PortletListener>> portletListeners = new HashMap<Application, Set<PortletListener>>();
 
index 35f2a946c5ef0cd8a4d2c405941c3d8e689655e1..4562ddf7b9a94e79708da2eb56716944cdac49a5 100644 (file)
@@ -22,7 +22,6 @@ import javax.portlet.PortletResponse;
 import javax.servlet.Filter;
 
 import com.vaadin.Application;
-import com.vaadin.service.ApplicationContext.TransactionListener;
 
 /**
  * An {@link Application} that implements this interface gets notified of
@@ -41,7 +40,7 @@ import com.vaadin.service.ApplicationContext.TransactionListener;
  * </ul>
  * <p>
  * Alternatives for implementing similar features are are Servlet {@link Filter}
- * s and {@link TransactionListener}s in Vaadin.
+ * s and {@link ApplicationContext.TransactionListener}s in Vaadin.
  * 
  * @since 6.2
  * @see HttpServletRequestListener
index 1dfe24f23b43719b21bf47f14b56233e95dc5f93..470677e3314c8b520e4cee6786de47cd2d1d5262 100644 (file)
@@ -18,6 +18,7 @@ package com.vaadin.server;
 
 import java.io.Serializable;
 
+
 /**
  * Times the handling of requests and stores the information as an attribute in
  * the request. The timing info is later passed on to the client in the UIDL and
@@ -43,7 +44,7 @@ public class RequestTimer implements Serializable {
      * 
      * @param context
      */
-    public void stop(AbstractWebApplicationContext context) {
+    public void stop(ApplicationContext context) {
         // Measure and store the total handling time. This data can be
         // used in TestBench 3 tests.
         long time = (System.nanoTime() - requestStartTime) / 1000000;
index 7059a04682d3814eaf1d76912aac69c747242ebd..02e902f79ed034cf5737b3722fd303e3afeafe59 100644 (file)
@@ -37,7 +37,7 @@ import com.vaadin.Application;
  * @since 3.1
  */
 @SuppressWarnings("serial")
-public class WebApplicationContext extends AbstractWebApplicationContext {
+public class WebApplicationContext extends ApplicationContext {
 
     protected transient HttpSession session;
     private transient boolean reinitializingSession = false;
@@ -119,7 +119,7 @@ public class WebApplicationContext extends AbstractWebApplicationContext {
     /**
      * Gets the application context base directory.
      * 
-     * @see com.vaadin.service.ApplicationContext#getBaseDirectory()
+     * @see com.vaadin.server.ApplicationContext#getBaseDirectory()
      */
     @Override
     public File getBaseDirectory() {
diff --git a/server/src/com/vaadin/service/ApplicationContext.java b/server/src/com/vaadin/service/ApplicationContext.java
deleted file mode 100644 (file)
index 5917047..0000000
+++ /dev/null
@@ -1,125 +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.service;
-
-import java.io.File;
-import java.io.Serializable;
-import java.util.Collection;
-
-import com.vaadin.Application;
-
-/**
- * <code>ApplicationContext</code> provides information about the running
- * context of the application. Each context is shared by all applications that
- * are open for one user. In a web-environment this corresponds to a
- * HttpSession.
- * 
- * @author Vaadin Ltd.
- * @since 3.1
- */
-public interface ApplicationContext extends Serializable {
-
-    /**
-     * Returns application context base directory.
-     * 
-     * Typically an application is deployed in a such way that is has an
-     * application directory. For web applications this directory is the root
-     * directory of the web applications. In some cases applications might not
-     * have an application directory (for example web applications running
-     * inside a war).
-     * 
-     * @return The application base directory or null if the application has no
-     *         base directory.
-     */
-    public File getBaseDirectory();
-
-    /**
-     * Returns a collection of all the applications in this context.
-     * 
-     * Each application context contains all active applications for one user.
-     * 
-     * @return A collection containing all the applications in this context.
-     */
-    public Collection<Application> getApplications();
-
-    /**
-     * Adds a transaction listener to this context. The transaction listener is
-     * called before and after each each request related to this session except
-     * when serving static resources.
-     * 
-     * The transaction listener must not be null.
-     * 
-     * @see com.vaadin.service.ApplicationContext#addTransactionListener(com.vaadin.service.ApplicationContext.TransactionListener)
-     */
-    public void addTransactionListener(TransactionListener listener);
-
-    /**
-     * Removes a transaction listener from this context.
-     * 
-     * @param listener
-     *            the listener to be removed.
-     * @see TransactionListener
-     */
-    public void removeTransactionListener(TransactionListener listener);
-
-    /**
-     * Returns the time between requests, in seconds, before this context is
-     * invalidated. A negative time indicates the context should never timeout.
-     */
-    public int getMaxInactiveInterval();
-
-    /**
-     * Interface for listening to transaction events. Implement this interface
-     * to listen to all transactions between the client and the application.
-     * 
-     */
-    public interface TransactionListener extends Serializable {
-
-        /**
-         * Invoked at the beginning of every transaction.
-         * 
-         * The transaction is linked to the context, not the application so if
-         * you have multiple applications running in the same context you need
-         * to check that the request is associated with the application you are
-         * interested in. This can be done looking at the application parameter.
-         * 
-         * @param application
-         *            the Application object.
-         * @param transactionData
-         *            the Data identifying the transaction.
-         */
-        public void transactionStart(Application application,
-                Object transactionData);
-
-        /**
-         * Invoked at the end of every transaction.
-         * 
-         * The transaction is linked to the context, not the application so if
-         * you have multiple applications running in the same context you need
-         * to check that the request is associated with the application you are
-         * interested in. This can be done looking at the application parameter.
-         * 
-         * @param applcation
-         *            the Application object.
-         * @param transactionData
-         *            the Data identifying the transaction.
-         */
-        public void transactionEnd(Application application,
-                Object transactionData);
-
-    }
-}
index 0cacccd08aab3b68747fb8d3ba0803449dd97456..302b534d8ad47ccaa3572544e299ade5989d878e 100644 (file)
@@ -17,14 +17,13 @@ import javax.servlet.http.HttpSession;
 
 import junit.framework.TestCase;
 
+import org.easymock.EasyMock;
+
 import com.vaadin.Application;
 import com.vaadin.Application.ApplicationStartEvent;
-import com.vaadin.server.AbstractWebApplicationContext;
+import com.vaadin.server.ApplicationContext;
 import com.vaadin.server.DeploymentConfiguration;
 import com.vaadin.server.WebApplicationContext;
-import com.vaadin.service.ApplicationContext.TransactionListener;
-
-import org.easymock.EasyMock;
 
 public class TransactionListenersConcurrency extends TestCase {
 
@@ -90,9 +89,9 @@ public class TransactionListenersConcurrency extends TestCase {
                         // Call the transaction listener using reflection as
                         // startTransaction is protected.
 
-                        Method m = AbstractWebApplicationContext.class
-                                .getDeclaredMethod("startTransaction",
-                                        Application.class, Object.class);
+                        Method m = ApplicationContext.class.getDeclaredMethod(
+                                "startTransaction", Application.class,
+                                Object.class);
                         m.setAccessible(true);
                         m.invoke(context, app, null);
                     } catch (Exception e) {
@@ -167,7 +166,8 @@ public class TransactionListenersConcurrency extends TestCase {
      * transactionStart and transactionEnd.
      * 
      */
-    public static class DelayTransactionListener implements TransactionListener {
+    public static class DelayTransactionListener implements
+            ApplicationContext.TransactionListener {
 
         private int delay;
 
index f1730ed5f513cba054892fe7f706c7f754150127..5927e9c19f1014981748f4ad6c92b189f50e7e9d 100644 (file)
@@ -1,8 +1,8 @@
 package com.vaadin.tests.applicationcontext;
 
 import com.vaadin.Application;
-import com.vaadin.service.ApplicationContext;
-import com.vaadin.service.ApplicationContext.TransactionListener;
+import com.vaadin.server.ApplicationContext;
+import com.vaadin.server.ApplicationContext.TransactionListener;
 import com.vaadin.tests.components.TestBase;
 import com.vaadin.tests.util.Log;
 
index 406158e8e1f98ebc40953c9c13d27e33785eab0f..db17c67fddf7b2ae34c36bef3fe3ab35d674478f 100644 (file)
@@ -1,9 +1,8 @@
 package com.vaadin.tests.components;
 
 import com.vaadin.Application;
-import com.vaadin.server.AbstractWebApplicationContext;
+import com.vaadin.server.ApplicationContext;
 import com.vaadin.server.WebBrowser;
-import com.vaadin.service.ApplicationContext;
 
 public abstract class AbstractTestApplication extends Application {
     protected abstract String getTestDescription();
@@ -12,12 +11,7 @@ public abstract class AbstractTestApplication extends Application {
 
     protected WebBrowser getBrowser() {
         ApplicationContext context = getContext();
-        if (context instanceof AbstractWebApplicationContext) {
-            WebBrowser webBrowser = ((AbstractWebApplicationContext) context)
-                    .getBrowser();
-            return webBrowser;
-        }
-
-        return null;
+        WebBrowser webBrowser = context.getBrowser();
+        return webBrowser;
     }
 }
index 4e2ec1d935dda208a75da1aa6d150b04837371de..f51c74d4a86004eb0cc4b9989f15a0ac9358650e 100644 (file)
@@ -1,9 +1,8 @@
 package com.vaadin.tests.components;
 
 import com.vaadin.Application;
-import com.vaadin.server.AbstractWebApplicationContext;
+import com.vaadin.server.ApplicationContext;
 import com.vaadin.server.WebBrowser;
-import com.vaadin.service.ApplicationContext;
 
 public abstract class AbstractTestCase extends Application.LegacyApplication {
 
@@ -13,12 +12,8 @@ public abstract class AbstractTestCase extends Application.LegacyApplication {
 
     protected WebBrowser getBrowser() {
         ApplicationContext context = getContext();
-        if (context instanceof AbstractWebApplicationContext) {
-            WebBrowser webBrowser = ((AbstractWebApplicationContext) context)
-                    .getBrowser();
-            return webBrowser;
-        }
+        WebBrowser webBrowser = context.getBrowser();
+        return webBrowser;
 
-        return null;
     }
 }
index ff235c5d9f17d826bde2323ba27165be0cd024c6..21eda56891ddbcddf8cddc21a62fd3ef1095dfbd 100644 (file)
@@ -1,10 +1,9 @@
 package com.vaadin.tests.components;
 
 import com.vaadin.Application;
-import com.vaadin.server.AbstractWebApplicationContext;
+import com.vaadin.server.ApplicationContext;
 import com.vaadin.server.WebBrowser;
 import com.vaadin.server.WrappedRequest;
-import com.vaadin.service.ApplicationContext;
 import com.vaadin.shared.ui.label.ContentMode;
 import com.vaadin.ui.Component;
 import com.vaadin.ui.Label;
@@ -58,12 +57,8 @@ public abstract class AbstractTestUI extends UI {
 
     protected WebBrowser getBrowser() {
         ApplicationContext context = Application.getCurrent().getContext();
-        if (context instanceof AbstractWebApplicationContext) {
-            AbstractWebApplicationContext webContext = (AbstractWebApplicationContext) context;
-            return webContext.getBrowser();
-        }
-
-        return null;
+        ApplicationContext webContext = context;
+        return webContext.getBrowser();
     }
 
 }