summaryrefslogtreecommitdiffstats
path: root/server/src/com/vaadin/service/ApplicationContext.java
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/com/vaadin/service/ApplicationContext.java')
-rw-r--r--server/src/com/vaadin/service/ApplicationContext.java165
1 files changed, 165 insertions, 0 deletions
diff --git a/server/src/com/vaadin/service/ApplicationContext.java b/server/src/com/vaadin/service/ApplicationContext.java
new file mode 100644
index 0000000000..71bff7b865
--- /dev/null
+++ b/server/src/com/vaadin/service/ApplicationContext.java
@@ -0,0 +1,165 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.service;
+
+import java.io.File;
+import java.io.Serializable;
+import java.net.URL;
+import java.util.Collection;
+
+import com.vaadin.Application;
+import com.vaadin.terminal.ApplicationResource;
+import com.vaadin.terminal.gwt.server.AbstractCommunicationManager;
+
+/**
+ * <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.
+ * @version
+ * @VERSION@
+ * @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);
+
+ /**
+ * Generate a URL that can be used as the relative location of e.g. an
+ * {@link ApplicationResource}.
+ *
+ * This method should only be called from the processing of a UIDL request,
+ * not from a background thread. The return value is null if used outside a
+ * suitable request.
+ *
+ * @deprecated this method is intended for terminal implementation only and
+ * is subject to change/removal from the interface (to
+ * {@link AbstractCommunicationManager})
+ *
+ * @param resource
+ * @param urlKey
+ * a key for the resource that can later be extracted from a URL
+ * with {@link #getURLKey(URL, String)}
+ */
+ @Deprecated
+ public String generateApplicationResourceURL(ApplicationResource resource,
+ String urlKey);
+
+ /**
+ * Tests if a URL is for an application resource (APP/...).
+ *
+ * @deprecated this method is intended for terminal implementation only and
+ * is subject to change/removal from the interface (to
+ * {@link AbstractCommunicationManager})
+ *
+ * @param context
+ * @param relativeUri
+ * @return
+ */
+ @Deprecated
+ public boolean isApplicationResourceURL(URL context, String relativeUri);
+
+ /**
+ * Gets the identifier (key) from an application resource URL. This key is
+ * the one that was given to
+ * {@link #generateApplicationResourceURL(ApplicationResource, String)} when
+ * creating the URL.
+ *
+ * @deprecated this method is intended for terminal implementation only and
+ * is subject to change/removal from the interface (to
+ * {@link AbstractCommunicationManager})
+ *
+ *
+ * @param context
+ * @param relativeUri
+ * @return
+ */
+ @Deprecated
+ public String getURLKey(URL context, String relativeUri);
+
+ /**
+ * 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);
+
+ }
+}