Author: apetrelli
Date: Fri Jan 9 05:22:54 2009
New Revision: 733033
URL: http://svn.apache.org/viewvc?rev=733033&view=rev
Log:
TILES-346
The initializer can be made generic, not tied to Servlet environment.
Added:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/BasicTilesInitializer.java
- copied, changed from r732697,
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/BasicTilesServletInitializer.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/TilesInitializer.java
(contents, props changed)
- copied, changed from r732697,
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServletInitializer.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/package.html
(with props)
Removed:
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/BasicTilesServletInitializer.java
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServletInitializer.java
Modified:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesFilter.java
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesListener.java
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServlet.java
Modified:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java?rev=733033&r1=733032&r2=733033&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java
(original)
+++
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java
Fri Jan 9 05:22:54 2009
@@ -96,6 +96,48 @@
/**
* Configures the default container to be used in the application.
*
+ * @param context The Tiles application context object to use.
+ * @param container The container object to set.
+ * @throws TilesAccessException If something goes wrong during
manipulation of the
+ * context.
+ * @since 2.1.2
+ */
+ public static void setContainer(TilesApplicationContext context,
+ TilesContainer container) {
+ setContainer(context, container, CONTAINER_ATTRIBUTE);
+ }
+
+ /**
+ * Configures the container to be used in the application.
+ *
+ * @param context The Tiles application context object to use.
+ * @param container The container object to set.
+ * @param key The key under which the container will be stored.
+ * @throws TilesAccessException If something goes wrong during
manipulation of the
+ * context.
+ * @since 2.1.2
+ */
+ public static void setContainer(TilesApplicationContext context,
+ TilesContainer container, String key) {
+ if (key == null) {
+ key = CONTAINER_ATTRIBUTE;
+ }
+
+ if (container == null) {
+ if (LOG.isInfoEnabled()) {
+ LOG.info("Removing TilesContext for context: " +
context.getClass().getName());
+ }
+ context.getApplicationScope().remove(key);
+ }
+ if (container != null && LOG.isInfoEnabled()) {
+ LOG.info("Publishing TilesContext for context: " +
context.getClass().getName());
+ }
+ context.getApplicationScope().put(key, container);
+ }
+
+ /**
+ * Configures the default container to be used in the application.
+ *
* @param context The (application) context object to use.
* @param container The container object to set.
* @throws TilesAccessException If something goes wrong during
manipulation of the
Copied:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/BasicTilesInitializer.java
(from r732697,
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/BasicTilesServletInitializer.java)
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/BasicTilesInitializer.java?p2=tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/BasicTilesInitializer.java&p1=tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/BasicTilesServletInitializer.java&r1=732697&r2=733033&rev=733033&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/BasicTilesServletInitializer.java
(original)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/BasicTilesInitializer.java
Fri Jan 9 05:22:54 2009
@@ -18,9 +18,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.tiles.web.startup;
-
-import javax.servlet.ServletContext;
+package org.apache.tiles.startup;
import org.apache.tiles.Initializable;
import org.apache.tiles.TilesApplicationContext;
@@ -28,7 +26,6 @@
import org.apache.tiles.access.TilesAccess;
import org.apache.tiles.context.AbstractTilesApplicationContextFactory;
import org.apache.tiles.factory.AbstractTilesContainerFactory;
-import org.apache.tiles.servlet.context.ServletTilesApplicationContext;
/**
* Default Tiles initialization delegate implementation under a servlet
@@ -38,7 +35,7 @@
* @version $Rev: 531864 $ $Date: 2007-04-24 12:24:30 +0200 (mar, 24 apr 2007)
$
* @since 2.1.2
*/
-public class BasicTilesServletInitializer implements TilesServletInitializer {
+public class BasicTilesInitializer implements TilesInitializer {
/**
* Init parameter to define the key under which the container will be
@@ -50,32 +47,29 @@
"org.apache.tiles.web.startup.TilesServletInitializer.CONTAINER_KEY";
/** {...@inheritdoc} */
- public void initialize(ServletContext servletContext) {
- TilesApplicationContext applicationContext =
createTilesApplicationContext(servletContext);
+ public void initialize(TilesApplicationContext applicationContext) {
+ applicationContext = createTilesApplicationContext(applicationContext);
String key = getContainerKey(applicationContext);
TilesContainer container = createContainer(applicationContext);
- TilesAccess.setContainer(servletContext, container, key);
+ TilesAccess.setContainer(applicationContext, container, key);
}
/**
* Creates the Tiles application context, to be used across all the
* Tiles-based application.
*
- * @param context The Servlet context to use.
+ * @param preliminaryContext The preliminary application context to use.
* @return The Tiles application context.
* @since 2.1.2
*/
protected TilesApplicationContext createTilesApplicationContext(
- ServletContext context) {
- TilesApplicationContext applicationContext = new
ServletTilesApplicationContext(
- context);
+ TilesApplicationContext preliminaryContext) {
AbstractTilesApplicationContextFactory acFactory =
AbstractTilesApplicationContextFactory
- .createFactory(applicationContext);
+ .createFactory(preliminaryContext);
if (acFactory instanceof Initializable) {
- ((Initializable)
acFactory).init(applicationContext.getInitParams());
+ ((Initializable)
acFactory).init(preliminaryContext.getInitParams());
}
- applicationContext = acFactory.createApplicationContext(context);
- return applicationContext;
+ return
acFactory.createApplicationContext(preliminaryContext.getContext());
}
/**
@@ -87,7 +81,7 @@
*/
protected String getContainerKey(TilesApplicationContext
applicationContext) {
String key = applicationContext.getInitParams().get(
- BasicTilesServletInitializer.CONTAINER_KEY_INIT_PARAMETER);
+ CONTAINER_KEY_INIT_PARAMETER);
return key;
}
Copied:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/TilesInitializer.java
(from r732697,
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServletInitializer.java)
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/TilesInitializer.java?p2=tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/TilesInitializer.java&p1=tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServletInitializer.java&r1=732697&r2=733033&rev=733033&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServletInitializer.java
(original)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/TilesInitializer.java
Fri Jan 9 05:22:54 2009
@@ -18,21 +18,25 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.tiles.web.startup;
+package org.apache.tiles.startup;
-import javax.servlet.ServletContext;
+import org.apache.tiles.TilesApplicationContext;
/**
- * Tiles initialization delegate under a servlet environment.
+ * Tiles initialization delegate. It initializes Tiles container(s) and the
+ * application context to use across all the application.
*
* @version $Rev$ $Date$
*/
-public interface TilesServletInitializer {
+public interface TilesInitializer {
/**
* Initializes Tiles.
*
- * @param servletContext The servlet context to use.
+ * @param preliminaryContext The preliminary application context to use. It
+ * will be overwritten with the real instance later. Use a context usable
+ * under your current environment, like ServletTilesApplicationContext or
+ * PortletTilesApplicationContext.
*/
- void initialize(ServletContext servletContext);
+ void initialize(TilesApplicationContext preliminaryContext);
}
Propchange:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/TilesInitializer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/TilesInitializer.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/TilesInitializer.java
------------------------------------------------------------------------------
svn:mergeinfo =
Added:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/package.html
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/package.html?rev=733033&view=auto
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/package.html
(added)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/package.html
Fri Jan 9 05:22:54 2009
@@ -0,0 +1,32 @@
+<!--
+/*
+ * $Id$
+ *
+ * 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.
+ */
+-->
+<html>
+<head>
+ <title>Generic start-up classes</title>
+</head>
+<body>
+Classes to start the Tiles engine up. Use these classes in your environment by
+using a preliminary TilesApplicationContext that expose at least the needed
+initialization parameters.
+</body>
+</html>
\ No newline at end of file
Propchange:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/package.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/startup/package.html
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified:
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesFilter.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesFilter.java?rev=733033&r1=733032&r2=733033&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesFilter.java
(original)
+++
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesFilter.java
Fri Jan 9 05:22:54 2009
@@ -36,6 +36,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tiles.definition.util.DefinitionsFactoryUtil;
+import org.apache.tiles.startup.BasicTilesInitializer;
/**
* Processes Reloadable Tiles Definitions.
@@ -125,7 +126,7 @@
super.init(createServletConfig());
containerKey = filterConfig.getInitParameter(
- BasicTilesServletInitializer.CONTAINER_KEY_INIT_PARAMETER);
+ BasicTilesInitializer.CONTAINER_KEY_INIT_PARAMETER);
if (DEBUG) {
log("TilesDecorationFilter:Initializing filter");
Modified:
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesListener.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesListener.java?rev=733033&r1=733032&r2=733033&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesListener.java
(original)
+++
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesListener.java
Fri Jan 9 05:22:54 2009
@@ -22,10 +22,14 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.tiles.TilesApplicationContext;
import org.apache.tiles.TilesContainer;
import org.apache.tiles.TilesException;
import org.apache.tiles.access.TilesAccess;
+import org.apache.tiles.factory.AbstractTilesContainerFactory;
import org.apache.tiles.servlet.context.ServletTilesApplicationContext;
+import org.apache.tiles.startup.BasicTilesInitializer;
+import org.apache.tiles.startup.TilesInitializer;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
@@ -50,7 +54,7 @@
*
* @since 2.1.2
*/
- protected TilesServletInitializer initializer;
+ protected TilesInitializer initializer;
/**
* Constructor.
@@ -62,15 +66,6 @@
}
/**
- * Constructor with injected initializer.
- *
- * @param initializer The initializer to use.
- */
- public TilesListener(TilesServletInitializer initializer) {
- this.initializer = initializer;
- }
-
- /**
* Initialize the TilesContainer and place it
* into service.
*
@@ -78,7 +73,8 @@
*/
public void contextInitialized(ServletContextEvent event) {
ServletContext servletContext = event.getServletContext();
- initializer.initialize(servletContext);
+ initializer.initialize(new ServletTilesApplicationContext(
+ servletContext));
}
/**
@@ -96,13 +92,13 @@
}
/**
- * Creates a new instance of {...@link BasicTilesServletInitializer}.
Override it to use a different initializer.
+ * Creates a new instance of {...@link BasicTilesInitializer}. Override it
to use a different initializer.
*
* @return The Tiles servlet-based initializer.
* @since 2.1.2
*/
- protected TilesServletInitializer createTilesServletInitializer() {
- return new BasicTilesServletInitializer();
+ protected TilesInitializer createTilesServletInitializer() {
+ return new BasicTilesInitializer();
}
/**
@@ -110,11 +106,14 @@
*
* @param context The servlet context to use.
* @return The created container.
- * @deprecated Use {...@link
BasicTilesServletInitializer#createContainer(org.apache.tiles.TilesApplicationContext)}
+ * @deprecated Use {...@link
BasicTilesInitializer#createContainer(org.apache.tiles.TilesApplicationContext)}
* instead.
*/
protected TilesContainer createContainer(ServletContext context) {
- return new BasicTilesServletInitializer()
- .createContainer(new ServletTilesApplicationContext(context));
+ TilesApplicationContext applicationContext = new
ServletTilesApplicationContext(
+ context);
+ AbstractTilesContainerFactory factory = AbstractTilesContainerFactory
+ .getTilesContainerFactory(applicationContext);
+ return factory.createContainer(applicationContext);
}
}
Modified:
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServlet.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServlet.java?rev=733033&r1=733032&r2=733033&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServlet.java
(original)
+++
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServlet.java
Fri Jan 9 05:22:54 2009
@@ -24,9 +24,13 @@
import org.apache.commons.logging.LogFactory;
import org.apache.tiles.TilesException;
import org.apache.tiles.access.TilesAccess;
+import org.apache.tiles.servlet.context.ServletTilesApplicationContext;
+import org.apache.tiles.startup.BasicTilesInitializer;
+import org.apache.tiles.startup.TilesInitializer;
import org.apache.tiles.web.util.ServletContextAdapter;
import javax.servlet.http.HttpServlet;
+import javax.servlet.ServletContext;
import javax.servlet.ServletException;
/**
@@ -47,7 +51,7 @@
* The private listener instance, that is used to initialize Tiles
* container.
*/
- private TilesServletInitializer initializer;
+ private TilesInitializer initializer;
/**
* Constructor.
@@ -58,15 +62,6 @@
initializer = createTilesServletInitializer();
}
- /**
- * Constructor with injected initializer.
- *
- * @param initializer The initializer to use.
- */
- public TilesServlet(TilesServletInitializer initializer) {
- this.initializer = initializer;
- }
-
/** {...@inheritdoc} */
@Override
public void destroy() {
@@ -80,16 +75,20 @@
/** {...@inheritdoc} */
@Override
public void init() throws ServletException {
- initializer.initialize(new ServletContextAdapter(getServletConfig()));
+ ServletContext adaptedContext = new ServletContextAdapter(
+ getServletConfig());
+ ServletTilesApplicationContext preliminaryContext = new
ServletTilesApplicationContext(
+ adaptedContext);
+ initializer.initialize(preliminaryContext);
}
/**
- * Creates a new instance of {...@link BasicTilesServletInitializer}.
Override it to use a different initializer.
+ * Creates a new instance of {...@link BasicTilesInitializer}. Override it
to use a different initializer.
*
* @return The Tiles servlet-based initializer.
* @since 2.1.2
*/
- protected TilesServletInitializer createTilesServletInitializer() {
- return new BasicTilesServletInitializer();
+ protected TilesInitializer createTilesServletInitializer() {
+ return new BasicTilesInitializer();
}
}