JBoss Rich Faces SVN: r4965 - trunk/samples.
by richfaces-svn-commits@lists.jboss.org
Author: alexsmirnov
Date: 2007-12-21 19:32:17 -0500 (Fri, 21 Dec 2007)
New Revision: 4965
Modified:
trunk/samples/pom.xml
Log:
Temporary remove portlet sample.
Modified: trunk/samples/pom.xml
===================================================================
--- trunk/samples/pom.xml 2007-12-22 00:30:11 UTC (rev 4964)
+++ trunk/samples/pom.xml 2007-12-22 00:32:17 UTC (rev 4965)
@@ -449,7 +449,9 @@
<module>calendar-sample</module>
<module>treeModelDemo</module>
<module>local-value-demo</module>
- <module>ajaxPortlet</module>
+ <!--
+ <module>ajaxPortlet</module>
+ -->
<module>panelmenu-sample</module>
<module>rich-message-demo</module>
<!--
16 years, 10 months
JBoss Rich Faces SVN: r4964 - in trunk: extensions/portletbridge/portletbridge-impl and 7 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: alexsmirnov
Date: 2007-12-21 19:30:11 -0500 (Fri, 21 Dec 2007)
New Revision: 4964
Added:
trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/SeamExceptionHandlerImpl.java
trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/PortletExternalContextImpl.java
trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/RenderPortletExternalContextImpl.java
trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/ServletExternalContextImpl.java
Removed:
trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/PortletContextImpl.java
trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/PortletRenderContextImpl.java
trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/ServletContextImpl.java
Modified:
trunk/extensions/pom.xml
trunk/extensions/portletbridge/portletbridge-impl/pom.xml
trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/ExceptionHandlerImpl.java
trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/AbstractExternalContext.java
trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/FacesContextFactoryImpl.java
trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/lifecycle/PortalPhaseListener.java
trunk/extensions/portletbridge/portletbridge-impl/src/test/java/org/ajax4jsf/portlet/context/ContextFactoryTest.java
trunk/extensions/portletbridge/portletbridge-impl/src/test/java/org/ajax4jsf/portlet/context/FacesContextImplTest.java
trunk/extensions/portletbridge/portletbridge-impl/src/test/java/org/ajax4jsf/portlet/context/PortletExternalContextTest.java
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/ResourceLifecycle.java
trunk/samples/seamPortletEar/seamBooking/src/main/java/org/jboss/seam/example/booking/Booking.java
trunk/samples/seamPortletEar/seamBooking/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java
trunk/samples/seamPortletEar/seamBooking/src/main/java/org/jboss/seam/example/booking/User.java
trunk/samples/seamPortletEar/seamBookingPortlet/src/main/webapp/WEB-INF/pages.xml
Log:
Continue to resolve Seam <-> portal incompabilites
Modified: trunk/extensions/pom.xml
===================================================================
--- trunk/extensions/pom.xml 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/extensions/pom.xml 2007-12-22 00:30:11 UTC (rev 4964)
@@ -11,6 +11,6 @@
<name>Richfaces extensions for a different environments</name>
<packaging>pom</packaging>
<modules>
- <module>portletbridge</module>
+ <!-- module>portletbridge</module-->
</modules>
</project>
\ No newline at end of file
Modified: trunk/extensions/portletbridge/portletbridge-impl/pom.xml
===================================================================
--- trunk/extensions/portletbridge/portletbridge-impl/pom.xml 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/extensions/portletbridge/portletbridge-impl/pom.xml 2007-12-22 00:30:11 UTC (rev 4964)
@@ -37,5 +37,18 @@
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam</artifactId>
+ <version>2.0.1-SNAPSHOT</version>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>javax.transaction</groupId>
+ <artifactId>jta</artifactId>
+ <version>1.0.1B</version>
+ <optional>true</optional>
+ </dependency>
+
</dependencies>
</project>
\ No newline at end of file
Modified: trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/ExceptionHandlerImpl.java
===================================================================
--- trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/ExceptionHandlerImpl.java 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/ExceptionHandlerImpl.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -33,43 +33,7 @@
{
protected static final Log log = LogFactory.getLog(ExceptionHandlerImpl.class);
- private static final String seamPages = "WEB-INF/pages.xml";
- private Document getPagesDocument(String file)
- {
- Document document = null;
- InputStream stream = getResourceAsStream(file);
- if (stream == null)
- {
- log.info("no pages.xml file found: " + file);
- }
- else
- {
- log.debug("reading pages.xml file: " + file);
- try
- {
- //get the dom from pages.xml
- document = parse(stream);
- }
- catch (IOException ioe)
- {
- log.error("error reading pages.xml file:" + ioe);
- }
- catch (SAXException sax)
- {
- log.error("sax exception:" + sax);
- Exception embed = sax.getException();
- embed.printStackTrace();
- }
- catch (ParserConfigurationException pce)
- {
- log.error("parser configuration issue while reading pages.xml file:" + pce);
- }
-
- }
- return document;
- }
-
/* (non-Javadoc)
* @see org.ajax4jsf.portlet.ExceptionHandler#processActionException(javax.faces.context.FacesContext, org.ajax4jsf.portlet.application.PortletViewState, java.lang.Exception)
*/
@@ -86,100 +50,7 @@
public void processRenderException(FacesContext context,
PortletViewState windowState, Exception e) throws BridgeException
{
- Document seamPagesDoc = getPagesDocument(seamPages);
-
- if (seamPagesDoc != null)
- {
- try
- {
- //TODO
- context.getExternalContext().redirect(getExceptionViewId(seamPagesDoc, e));
- }
- catch (IOException e1)
- {
- e1.printStackTrace();
- }
- catch (XPathExpressionException e1)
- {
- e1.printStackTrace();
- }
-
- }
- else
- {
- log.info("seam pages.xml not installed");
- }
throw new BridgeException("Error processing render lifecycle", e);
}
- private Document parse(InputStream stream) throws IOException, SAXException, ParserConfigurationException
- {
- DocumentBuilderFactory factory =
- DocumentBuilderFactory.newInstance();
-
- DocumentBuilder builder = factory.newDocumentBuilder();
-
- return builder.parse(stream);
- }
-
- private String getExceptionViewId(Document document, Exception e) throws XPathExpressionException
- {
- XPathFactory xfactory = XPathFactory.newInstance();
- XPath xpath = xfactory.newXPath();
- NodeList nodes = document.getElementsByTagName("exception");
- String redirectViewId = null;
- boolean exceptionMatch = false;
-
- //atleast one exception is defined in xml
- if (nodes != null)
- {
- for (int i = 0; i < nodes.getLength(); i++)
- {
- Node node = nodes.item(i);
- String className = xpath.evaluate("@class", node);
- String loadedClassName = null;
-
-
- if (className.length() > 0)
- {
- //compare exception class names
- if (e.getClass().getName().equals(className))
- {
- return xpath.evaluate("redirect/@view-id", node);
- }
- }
- else
- {
- //no class was defined in attribute so check for general exception handler
- redirectViewId = xpath.evaluate("redirect/@view-id", node);
- }
-
- }
- }
- return redirectViewId;
- }
-
- static InputStream getResourceAsStream(String resource)
- {
- ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
- InputStream inputStream = null;
- if (classLoader != null)
- {
- inputStream = classLoader.getResourceAsStream(resource);
- }
- return inputStream;
- }
-
- public static Class classForName(String name) throws ClassNotFoundException
- {
- try
- {
- return Thread.currentThread().getContextClassLoader().loadClass(name);
- }
- catch (Exception e)
- {
- return Class.forName(name);
- }
- }
-
}
Added: trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/SeamExceptionHandlerImpl.java
===================================================================
--- trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/SeamExceptionHandlerImpl.java (rev 0)
+++ trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/SeamExceptionHandlerImpl.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -0,0 +1,143 @@
+/**
+ *
+ */
+package org.ajax4jsf.portlet;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.faces.context.FacesContext;
+import javax.portlet.faces.BridgeException;
+import javax.servlet.ServletException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.ajax4jsf.portlet.application.PortletViewState;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.seam.Seam;
+import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.contexts.FacesLifecycle;
+import org.jboss.seam.core.ConversationPropagation;
+import org.jboss.seam.core.Manager;
+import org.jboss.seam.exception.Exceptions;
+import org.jboss.seam.transaction.Transaction;
+import org.jboss.seam.transaction.UserTransaction;
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
+
+/**
+ * @author asmirnov
+ * @author <a href="mailto:whales@redhat.com">Wesley Hales</a>
+ */
+
+public class SeamExceptionHandlerImpl implements ExceptionHandler
+{
+ protected static final Log log = LogFactory.getLog(SeamExceptionHandlerImpl.class);
+
+
+ /* (non-Javadoc)
+ * @see org.ajax4jsf.portlet.ExceptionHandler#processActionException(javax.faces.context.FacesContext, org.ajax4jsf.portlet.application.PortletViewState, java.lang.Exception)
+ */
+ public void processActionException(FacesContext context,
+ PortletViewState windowState, Exception e) throws BridgeException
+ {
+ log.error("Error processing action lifecycle", e);
+ windowState.saveBeans(context);
+ windowState.saveMessages(context);
+ handleException(context, e);
+ windowState.setViewRoot(context.getViewRoot());
+ }
+
+ /* (non-Javadoc)
+ * @see org.ajax4jsf.portlet.ExceptionHandler#processRenderException(javax.faces.context.FacesContext, org.ajax4jsf.portlet.application.PortletViewState, java.lang.Exception)
+ */
+ public void processRenderException(FacesContext context,
+ PortletViewState windowState, Exception e) throws BridgeException
+ {
+ log.error("Error processing render lifecycle", e);
+ handleException(context, e);
+ }
+
+
+
+ public static Class classForName(String name) throws ClassNotFoundException
+ {
+ try
+ {
+ return Thread.currentThread().getContextClassLoader().loadClass(name);
+ }
+ catch (Exception e)
+ {
+ return Class.forName(name);
+ }
+ }
+
+ private void handleException(FacesContext facesContext, Exception e) throws BridgeException {
+ //if the event context was cleaned up, fish the conversation id
+ //directly out of the ServletRequest attributes, else get it from
+ //the event context
+ Manager manager = Contexts.isEventContextActive() ?
+ (Manager) Contexts.getEventContext().get(Manager.class) :
+ null;
+ String conversationId = manager==null ? null : manager.getCurrentConversationId();
+
+ //Initialize the temporary context objects
+ FacesLifecycle.beginExceptionRecovery( facesContext.getExternalContext() );
+
+ //If there is an existing long-running conversation on
+ //the failed request, propagate it
+ if (conversationId==null)
+ {
+ Manager.instance().initializeTemporaryConversation();
+ }
+ else
+ {
+ ConversationPropagation.instance().setConversationId(conversationId);
+ Manager.instance().restoreConversation();
+ }
+
+ //Now do the exception handling
+ try
+ {
+ rollbackTransactionIfNecessary();
+ Exceptions.instance().handle(e);
+ }
+ catch (Exception ehe)
+ {
+ throw new BridgeException(ehe);
+ }
+ finally
+ {
+ //Finally, clean up the contexts
+ try
+ {
+ FacesLifecycle.endRequest( facesContext.getExternalContext() );
+ log.debug("done running exception handlers");
+ }
+ catch (Exception ere)
+ {
+ log.error("could not destroy contexts", ere);
+ }
+ }
+
+ }
+
+ protected void rollbackTransactionIfNecessary()
+ {
+ try
+ {
+ UserTransaction transaction = Transaction.instance();
+ if ( transaction.isActiveOrMarkedRollback() || transaction.isRolledBack() )
+ {
+ log.debug("killing transaction");
+ transaction.rollback();
+ }
+ }
+ catch (Exception te)
+ {
+ log.error("could not roll back transaction", te);
+ }
+ }
+}
Property changes on: trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/SeamExceptionHandlerImpl.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author
Modified: trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/AbstractExternalContext.java
===================================================================
--- trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/AbstractExternalContext.java 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/AbstractExternalContext.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -534,4 +534,20 @@
}
protected abstract String encodeURL(String actionUrl);
+
+ public String encodeResourceURL(String url) {
+ try {
+ PortalActionURL portalUrl = new PortalActionURL(url);
+ boolean inContext = portalUrl
+ .isInContext(getRequestContextPath());
+ // For resources in the portlet application context add namespace as URL parameter, to restore portlet session.
+ if (inContext) {
+ portalUrl.addParameter(NAMESPACE_PARAMETER, getNamespace());
+ url=portalUrl.toString();
+ }
+ } catch (MalformedURLException e) {
+ throw new FacesException(e);
+ }
+ return encodeURL(url);
+ }
}
\ No newline at end of file
Modified: trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/FacesContextFactoryImpl.java
===================================================================
--- trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/FacesContextFactoryImpl.java 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/FacesContextFactoryImpl.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -92,7 +92,7 @@
* Hold <code>FacesContextFactory</code> from default implementation.
*
*/
- // private FacesContextFactory defaultFacesContextFactory;
+ private FacesContextFactory defaultFacesContextFactory;
private static final Log _log = LogFactory
.getLog(FacesContextFactoryImpl.class);
@@ -105,11 +105,11 @@
* Factory from JSF implementation.
*
*/
- public FacesContextFactoryImpl(/* FacesContextFactory defaultFactory */) {
+ public FacesContextFactoryImpl(FacesContextFactory defaultFactory) {
super();
- // if (this.defaultFacesContextFactory == null) {
- // this.defaultFacesContextFactory = defaultFactory;
- // }
+ if (this.defaultFacesContextFactory == null) {
+ this.defaultFacesContextFactory = defaultFactory;
+ }
if (_log.isDebugEnabled()) {
_log.debug("Portal - specific FacesContextFactory has initialised");
}
@@ -137,7 +137,7 @@
if ((context instanceof PortletContext)
&& (request instanceof ActionRequest)
&& (response instanceof ActionResponse)) {
- externalContext = new PortletContextImpl((PortletContext) context,
+ externalContext = new PortletExternalContextImpl((PortletContext) context,
(PortletRequest) request, (PortletResponse) response);
if (_log.isDebugEnabled()) {
_log
@@ -146,7 +146,7 @@
} else if ((context instanceof PortletContext)
&& (request instanceof RenderRequest)
&& (response instanceof RenderResponse)) {
- externalContext = new PortletRenderContextImpl((PortletContext) context,
+ externalContext = new RenderPortletExternalContextImpl((PortletContext) context,
(PortletRequest) request, (PortletResponse) response);
if (_log.isDebugEnabled()) {
_log
@@ -155,7 +155,8 @@
} else if ((context instanceof ServletContext)
&& (request instanceof HttpServletRequest)
&& (response instanceof HttpServletResponse)) {
- externalContext = new ServletContextImpl((ServletContext) context,
+ // TODO - if request don't contain namespace parameter, create default context instance.
+ externalContext = new ServletExternalContextImpl((ServletContext) context,
(HttpServletRequest) request,
(HttpServletResponse) response);
if (_log.isDebugEnabled()) {
Deleted: trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/PortletContextImpl.java
===================================================================
--- trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/PortletContextImpl.java 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/PortletContextImpl.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -1,365 +0,0 @@
-/**
- *
- */
-package org.ajax4jsf.portlet.context;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.security.Principal;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-import javax.faces.application.ViewHandler;
-import javax.faces.context.ExternalContext;
-import javax.faces.context.FacesContext;
-import javax.faces.context.FacesContextFactory;
-import javax.portlet.ActionRequest;
-import javax.portlet.ActionResponse;
-import javax.portlet.PortletContext;
-import javax.portlet.PortletException;
-import javax.portlet.PortletRequest;
-import javax.portlet.PortletRequestDispatcher;
-import javax.portlet.PortletResponse;
-import javax.portlet.PortletSession;
-import javax.portlet.RenderRequest;
-import javax.portlet.RenderResponse;
-import javax.portlet.PortletURL;
-import javax.portlet.faces.Bridge;
-
-import org.ajax4jsf.webapp.WebXml;
-
-/**
- * Version of the {@link ExternalContext} for a Portlet request.
- * {@link FacesContextFactory} will create instance of this class for a portal
- * <code>action</code> phase.
- *
- * @author asmirnov
- *
- */
-public class PortletContextImpl extends AbstractExternalContext {
-
- public static final String ACTION_URL_DO_NOTHITG = "/ajax4jsfPortletBridge/actionUrl/do/nothitg";
- private String namespace;
-
- public PortletContextImpl(PortletContext context, PortletRequest request,
- PortletResponse response) {
- super(context, request, response);
- WebXml webXml = (WebXml) context.getAttribute(WebXml.CONTEXT_ATTRIBUTE);
- if (null != webXml) {
- _servletPath = webXml.getFacesServletPrefix();
- }
- ArrayList excludedAttributes = Collections.list(request
- .getAttributeNames());
- request.setAttribute(EXCLUDED_PARAMETERS_ATTRIBUTE, excludedAttributes);
- }
-
- public void setResponseCharacterEncoding(String encoding) {
- // Do nothing
- }
-
- public String getResponseCharacterEncoding() {
- return null;
- }
-
- public String getResponseContentType() {
- return null;
- }
-
- public void setRequestCharacterEncoding(String encoding)
- throws UnsupportedEncodingException {
- try {
- ActionRequest actionRequest = (ActionRequest) getPortletRequest();
- actionRequest.setCharacterEncoding(encoding);
- } catch (IllegalStateException e) {
- // TODO: handle exception
- }
- }
-
- public String getRequestCharacterEncoding() {
- ActionRequest actionRequest = (ActionRequest) getPortletRequest();
- return actionRequest.getCharacterEncoding();
- }
-
- public String getRequestContentType() {
- return null;
- }
-
- protected PortletContext getPortletContext() {
- return (PortletContext) getContext();
- }
-
- protected PortletRequest getPortletRequest() {
- return (PortletRequest) getRequest();
- }
-
- protected PortletResponse getPortletResponse() {
- return (PortletResponse) getResponse();
- }
-
- public String getInitParameter(String name) {
- return getPortletContext().getInitParameter(name);
- }
-
- protected String getNamespace() {
- if (null == namespace) {
- namespace = (String) getRequestParameter(AbstractExternalContext.NAMESPACE_PARAMETER);
- if (null == namespace) {
- throw new IllegalStateException(
- "Can not determine portlet namespace");
- }
- }
- return namespace;
- }
-
- public URL getResource(String path) throws MalformedURLException {
- return getPortletContext().getResource(path);
- }
-
- public InputStream getResourceAsStream(String path) {
- return getPortletContext().getResourceAsStream(path);
- }
-
- public Set getResourcePaths(String path) {
- return getPortletContext().getResourcePaths(path);
- }
-
- protected Enumeration enumerateRequestParameterNames() {
- return getPortletRequest().getParameterNames();
- }
-
- protected Object getContextAttribute(String name) {
- return getPortletContext().getAttribute(name);
- }
-
- protected Enumeration getContextAttributeNames() {
- return getPortletContext().getAttributeNames();
- }
-
- protected Enumeration getInitParametersNames() {
- return getPortletContext().getInitParameterNames();
- }
-
- protected Object getRequestAttribute(String name) {
- return getPortletRequest().getAttribute(name);
- }
-
- protected Enumeration getRequestAttributeNames() {
- return getPortletRequest().getAttributeNames();
- }
-
- public Map getRequestParameterValuesMap() {
- return getPortletRequest().getParameterMap();
- }
-
- protected Object getRequestParameterValues(String name) {
- return getPortletRequest().getParameterValues(name);
- }
-
- protected Object getRequestHeader(String name) {
- return getPortletRequest().getProperty(name);
- }
-
- protected Enumeration getRequestHeaderNames() {
- return getPortletRequest().getPropertyNames();
- }
-
- protected String[] getRequestHeaderValues(String name) {
- Enumeration properties = getPortletRequest().getProperties(name);
- List values = new ArrayList();
- while (properties.hasMoreElements()) {
- Object value = (Object) properties.nextElement();
- values.add(value);
- }
- return (String[]) values.toArray(EMPTY_STRING_ARRAY);
- }
-
- protected Object getRequestParameter(String name) {
- return getPortletRequest().getParameter(name);
- }
-
- protected Object getSessionAttribute(String name) {
- return getPortletRequest().getPortletSession(true).getAttribute(name,
- PortletSession.PORTLET_SCOPE);
- }
-
- protected Enumeration getSessionAttributeNames() {
- return getPortletRequest().getPortletSession(true).getAttributeNames(
- PortletSession.PORTLET_SCOPE);
- }
-
- protected void removeContextAttribute(String name) {
- getPortletContext().removeAttribute(name);
- }
-
- protected void removeRequestAttribute(String name) {
- getPortletRequest().removeAttribute(name);
- }
-
- protected void removeSessionAttribute(String name) {
- getPortletRequest().getPortletSession(true).removeAttribute(name,
- PortletSession.PORTLET_SCOPE);
- }
-
- protected void setContextAttribute(String name, Object value) {
- getPortletContext().setAttribute(name, value);
- }
-
- protected void setRequestAttribute(String name, Object value) {
- getPortletRequest().setAttribute(name, value);
- }
-
- protected void setSessionAttribute(String name, Object value) {
- getPortletRequest().getPortletSession(true).setAttribute(name, value,
- PortletSession.PORTLET_SCOPE);
- }
-
- public void dispatch(String path) throws IOException {
- if (null == path) {
- throw new NullPointerException("Path to new view is null");
- }
- throw new IllegalStateException(
- "Dispatch to new view not at render phase");
- }
-
- private static final Pattern absoluteUrl = Pattern.compile("");
- private static final Pattern directLink = Pattern.compile("");
- private static final Pattern viewIdParam = Pattern.compile("");
-
- /**
- * @param parameters
- * @return
- */
- @Override
- protected String createActionUrl(Map<String, String> parameters) {
- String dummyActionURL = getRequestContextPath() + ACTION_URL_DO_NOTHITG;
- try {
- PortalActionURL actionUrl = new PortalActionURL(dummyActionURL);
- for (Iterator<Map.Entry<String, String>> param = parameters
- .entrySet().iterator(); param.hasNext();) {
- Map.Entry<String, String> parameter = param.next();
- actionUrl
- .addParameter(parameter.getKey(), parameter.getValue());
- }
- return actionUrl.toString();
- } catch (MalformedURLException e) {
-
- }
- return dummyActionURL;
- }
-
- public String encodeResourceURL(String url) {
- return encodeURL(url);
- }
-
- /**
- * @param url
- * @return
- */
- protected String encodeURL(String url) {
- return getPortletResponse().encodeURL(url);
- }
-
- public String getAuthType() {
- return getPortletRequest().getAuthType();
- }
-
- public String getRemoteUser() {
- return getPortletRequest().getRemoteUser();
- }
-
- public String getRequestContextPath() {
- return getPortletRequest().getContextPath();
- }
-
- public Locale getRequestLocale() {
- return getPortletRequest().getLocale();
- }
-
- public Iterator getRequestLocales() {
- return new EnumerationIterator(getPortletRequest().getLocales());
- }
-
- private String _pathInfo = null;
-
- public String getRequestPathInfo() {
- String pathInfo = (String) getRequestParameter(VIEW_ID_PARAMETER);
- if (null == pathInfo) {
- pathInfo = (String) getRequestAttribute(VIEW_ID_PARAMETER);
- }
- return pathInfo;
- }
-
- private String _servletPath = null;
-
- public String getRequestServletPath() {
- return _servletPath;
- }
-
- public Object getSession(boolean create) {
- return getPortletRequest().getPortletSession();
- }
-
- public Principal getUserPrincipal() {
- return getPortletRequest().getUserPrincipal();
- }
-
- public boolean isUserInRole(String role) {
- return getPortletRequest().isUserInRole(role);
- }
-
- public void log(String message) {
- getPortletContext().log(message);
- }
-
- public void log(String message, Throwable exception) {
- getPortletContext().log(message, exception);
- }
-
- public void redirect(String url) throws IOException {
- if (null == url || url.length() < 0) {
- throw new NullPointerException("Path to redirect is null");
- }
- PortalActionURL actionURL = new PortalActionURL(url);
- if (url.startsWith("#")
- || (!actionURL.isInContext(getRequestContextPath()))
- || "true".equalsIgnoreCase(actionURL
- .getParameter(Bridge.DIRECT_LINK))) {
- ((ActionResponse) getResponse()).sendRedirect(url);
- } else {
- internalRedirect(actionURL);
- }
- }
-
- /**
- * @param actionURL
- */
- protected void internalRedirect(PortalActionURL actionURL) {
- // Detect ViewId from URL and create new view for them.
- String viewId = actionURL.getParameter(VIEW_ID_PARAMETER);
- if (null != viewId) {
- try {
- viewId = URLDecoder.decode(viewId, "UTF8");
- FacesContext facesContext = FacesContext.getCurrentInstance();
- ViewHandler viewHandler = facesContext.getApplication()
- .getViewHandler();
- facesContext.setViewRoot(viewHandler.createView(facesContext,
- viewId));
- setHasNavigationRedirect(true);
- } catch (UnsupportedEncodingException e) {
- // Do nothing - UTF-8 encoding is a default.
- }
- }
- }
-}
Copied: trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/PortletExternalContextImpl.java (from rev 4938, trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/PortletContextImpl.java)
===================================================================
--- trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/PortletExternalContextImpl.java (rev 0)
+++ trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/PortletExternalContextImpl.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -0,0 +1,361 @@
+/**
+ *
+ */
+package org.ajax4jsf.portlet.context;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Pattern;
+
+import javax.faces.application.ViewHandler;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.FacesContextFactory;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletContext;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletRequestDispatcher;
+import javax.portlet.PortletResponse;
+import javax.portlet.PortletSession;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.PortletURL;
+import javax.portlet.faces.Bridge;
+
+import org.ajax4jsf.webapp.WebXml;
+
+/**
+ * Version of the {@link ExternalContext} for a Portlet request.
+ * {@link FacesContextFactory} will create instance of this class for a portal
+ * <code>action</code> phase.
+ *
+ * @author asmirnov
+ *
+ */
+public class PortletExternalContextImpl extends AbstractExternalContext {
+
+ public static final String ACTION_URL_DO_NOTHITG = "/ajax4jsfPortletBridge/actionUrl/do/nothitg";
+ private String namespace;
+
+ public PortletExternalContextImpl(PortletContext context, PortletRequest request,
+ PortletResponse response) {
+ super(context, request, response);
+ WebXml webXml = (WebXml) context.getAttribute(WebXml.CONTEXT_ATTRIBUTE);
+ if (null != webXml) {
+ _servletPath = webXml.getFacesServletPrefix();
+ }
+ ArrayList excludedAttributes = Collections.list(request
+ .getAttributeNames());
+ request.setAttribute(EXCLUDED_PARAMETERS_ATTRIBUTE, excludedAttributes);
+ }
+
+ public void setResponseCharacterEncoding(String encoding) {
+ // Do nothing
+ }
+
+ public String getResponseCharacterEncoding() {
+ return null;
+ }
+
+ public String getResponseContentType() {
+ return null;
+ }
+
+ public void setRequestCharacterEncoding(String encoding)
+ throws UnsupportedEncodingException {
+ try {
+ ActionRequest actionRequest = (ActionRequest) getPortletRequest();
+ actionRequest.setCharacterEncoding(encoding);
+ } catch (IllegalStateException e) {
+ // TODO: handle exception
+ }
+ }
+
+ public String getRequestCharacterEncoding() {
+ ActionRequest actionRequest = (ActionRequest) getPortletRequest();
+ return actionRequest.getCharacterEncoding();
+ }
+
+ public String getRequestContentType() {
+ return null;
+ }
+
+ protected PortletContext getPortletContext() {
+ return (PortletContext) getContext();
+ }
+
+ protected PortletRequest getPortletRequest() {
+ return (PortletRequest) getRequest();
+ }
+
+ protected PortletResponse getPortletResponse() {
+ return (PortletResponse) getResponse();
+ }
+
+ public String getInitParameter(String name) {
+ return getPortletContext().getInitParameter(name);
+ }
+
+ protected String getNamespace() {
+ if (null == namespace) {
+ namespace = (String) getRequestParameter(AbstractExternalContext.NAMESPACE_PARAMETER);
+ if (null == namespace) {
+ throw new IllegalStateException(
+ "Can not determine portlet namespace");
+ }
+ }
+ return namespace;
+ }
+
+ public URL getResource(String path) throws MalformedURLException {
+ return getPortletContext().getResource(path);
+ }
+
+ public InputStream getResourceAsStream(String path) {
+ return getPortletContext().getResourceAsStream(path);
+ }
+
+ public Set getResourcePaths(String path) {
+ return getPortletContext().getResourcePaths(path);
+ }
+
+ protected Enumeration enumerateRequestParameterNames() {
+ return getPortletRequest().getParameterNames();
+ }
+
+ protected Object getContextAttribute(String name) {
+ return getPortletContext().getAttribute(name);
+ }
+
+ protected Enumeration getContextAttributeNames() {
+ return getPortletContext().getAttributeNames();
+ }
+
+ protected Enumeration getInitParametersNames() {
+ return getPortletContext().getInitParameterNames();
+ }
+
+ protected Object getRequestAttribute(String name) {
+ return getPortletRequest().getAttribute(name);
+ }
+
+ protected Enumeration getRequestAttributeNames() {
+ return getPortletRequest().getAttributeNames();
+ }
+
+ public Map getRequestParameterValuesMap() {
+ return getPortletRequest().getParameterMap();
+ }
+
+ protected Object getRequestParameterValues(String name) {
+ return getPortletRequest().getParameterValues(name);
+ }
+
+ protected Object getRequestHeader(String name) {
+ return getPortletRequest().getProperty(name);
+ }
+
+ protected Enumeration getRequestHeaderNames() {
+ return getPortletRequest().getPropertyNames();
+ }
+
+ protected String[] getRequestHeaderValues(String name) {
+ Enumeration properties = getPortletRequest().getProperties(name);
+ List values = new ArrayList();
+ while (properties.hasMoreElements()) {
+ Object value = (Object) properties.nextElement();
+ values.add(value);
+ }
+ return (String[]) values.toArray(EMPTY_STRING_ARRAY);
+ }
+
+ protected Object getRequestParameter(String name) {
+ return getPortletRequest().getParameter(name);
+ }
+
+ protected Object getSessionAttribute(String name) {
+ return getPortletRequest().getPortletSession(true).getAttribute(name,
+ PortletSession.PORTLET_SCOPE);
+ }
+
+ protected Enumeration getSessionAttributeNames() {
+ return getPortletRequest().getPortletSession(true).getAttributeNames(
+ PortletSession.PORTLET_SCOPE);
+ }
+
+ protected void removeContextAttribute(String name) {
+ getPortletContext().removeAttribute(name);
+ }
+
+ protected void removeRequestAttribute(String name) {
+ getPortletRequest().removeAttribute(name);
+ }
+
+ protected void removeSessionAttribute(String name) {
+ getPortletRequest().getPortletSession(true).removeAttribute(name,
+ PortletSession.PORTLET_SCOPE);
+ }
+
+ protected void setContextAttribute(String name, Object value) {
+ getPortletContext().setAttribute(name, value);
+ }
+
+ protected void setRequestAttribute(String name, Object value) {
+ getPortletRequest().setAttribute(name, value);
+ }
+
+ protected void setSessionAttribute(String name, Object value) {
+ getPortletRequest().getPortletSession(true).setAttribute(name, value,
+ PortletSession.PORTLET_SCOPE);
+ }
+
+ public void dispatch(String path) throws IOException {
+ if (null == path) {
+ throw new NullPointerException("Path to new view is null");
+ }
+ throw new IllegalStateException(
+ "Dispatch to new view not at render phase");
+ }
+
+ private static final Pattern absoluteUrl = Pattern.compile("");
+ private static final Pattern directLink = Pattern.compile("");
+ private static final Pattern viewIdParam = Pattern.compile("");
+
+ /**
+ * @param parameters
+ * @return
+ */
+ @Override
+ protected String createActionUrl(Map<String, String> parameters) {
+ String dummyActionURL = getRequestContextPath() + ACTION_URL_DO_NOTHITG;
+ try {
+ PortalActionURL actionUrl = new PortalActionURL(dummyActionURL);
+ for (Iterator<Map.Entry<String, String>> param = parameters
+ .entrySet().iterator(); param.hasNext();) {
+ Map.Entry<String, String> parameter = param.next();
+ actionUrl
+ .addParameter(parameter.getKey(), parameter.getValue());
+ }
+ return actionUrl.toString();
+ } catch (MalformedURLException e) {
+
+ }
+ return dummyActionURL;
+ }
+
+ /**
+ * @param url
+ * @return
+ */
+ protected String encodeURL(String url) {
+ return getPortletResponse().encodeURL(url);
+ }
+
+ public String getAuthType() {
+ return getPortletRequest().getAuthType();
+ }
+
+ public String getRemoteUser() {
+ return getPortletRequest().getRemoteUser();
+ }
+
+ public String getRequestContextPath() {
+ return getPortletRequest().getContextPath();
+ }
+
+ public Locale getRequestLocale() {
+ return getPortletRequest().getLocale();
+ }
+
+ public Iterator getRequestLocales() {
+ return new EnumerationIterator(getPortletRequest().getLocales());
+ }
+
+ private String _pathInfo = null;
+
+ public String getRequestPathInfo() {
+ String pathInfo = (String) getRequestParameter(VIEW_ID_PARAMETER);
+ if (null == pathInfo) {
+ pathInfo = (String) getRequestAttribute(VIEW_ID_PARAMETER);
+ }
+ return pathInfo;
+ }
+
+ private String _servletPath = null;
+
+ public String getRequestServletPath() {
+ return _servletPath;
+ }
+
+ public Object getSession(boolean create) {
+ return getPortletRequest().getPortletSession();
+ }
+
+ public Principal getUserPrincipal() {
+ return getPortletRequest().getUserPrincipal();
+ }
+
+ public boolean isUserInRole(String role) {
+ return getPortletRequest().isUserInRole(role);
+ }
+
+ public void log(String message) {
+ getPortletContext().log(message);
+ }
+
+ public void log(String message, Throwable exception) {
+ getPortletContext().log(message, exception);
+ }
+
+ public void redirect(String url) throws IOException {
+ if (null == url || url.length() < 0) {
+ throw new NullPointerException("Path to redirect is null");
+ }
+ PortalActionURL actionURL = new PortalActionURL(url);
+ if (url.startsWith("#")
+ || (!actionURL.isInContext(getRequestContextPath()))
+ || "true".equalsIgnoreCase(actionURL
+ .getParameter(Bridge.DIRECT_LINK))) {
+ ((ActionResponse) getResponse()).sendRedirect(url);
+ } else {
+ internalRedirect(actionURL);
+ }
+ }
+
+ /**
+ * @param actionURL
+ */
+ protected void internalRedirect(PortalActionURL actionURL) {
+ // Detect ViewId from URL and create new view for them.
+ String viewId = actionURL.getParameter(VIEW_ID_PARAMETER);
+ if (null != viewId) {
+ try {
+ viewId = URLDecoder.decode(viewId, "UTF8");
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ ViewHandler viewHandler = facesContext.getApplication()
+ .getViewHandler();
+ facesContext.setViewRoot(viewHandler.createView(facesContext,
+ viewId));
+ setHasNavigationRedirect(true);
+ } catch (UnsupportedEncodingException e) {
+ // Do nothing - UTF-8 encoding is a default.
+ }
+ }
+ }
+}
Deleted: trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/PortletRenderContextImpl.java
===================================================================
--- trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/PortletRenderContextImpl.java 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/PortletRenderContextImpl.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -1,184 +0,0 @@
-/**
- *
- */
-package org.ajax4jsf.portlet.context;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.regex.Pattern;
-
-import javax.faces.FacesException;
-import javax.faces.render.ResponseStateManager;
-import javax.portlet.ActionRequest;
-import javax.portlet.ActionResponse;
-import javax.portlet.PortletConfig;
-import javax.portlet.PortletContext;
-import javax.portlet.PortletException;
-import javax.portlet.PortletRequest;
-import javax.portlet.PortletRequestDispatcher;
-import javax.portlet.PortletResponse;
-import javax.portlet.PortletURL;
-import javax.portlet.RenderRequest;
-import javax.portlet.RenderResponse;
-import javax.portlet.faces.Bridge;
-
-import org.ajax4jsf.portlet.application.PortletViewState;
-
-/**
- * @author asmirnov
- *
- */
-public class PortletRenderContextImpl extends PortletContextImpl {
-
- public String getResponseCharacterEncoding() {
- RenderResponse renderResponse = (RenderResponse) getPortletResponse();
- return renderResponse.getCharacterEncoding();
- }
-
- public String getResponseContentType() {
- RenderResponse renderResponse = (RenderResponse) getPortletResponse();
- return renderResponse.getContentType();
- }
-
- public void setRequestCharacterEncoding(String encoding)
- throws UnsupportedEncodingException {
- // Do nothing.
- }
-
- public String getRequestCharacterEncoding() {
- return null;
- }
-
- protected String getNamespace() {
- return ((RenderResponse) getPortletResponse()).getNamespace();
- }
-
- private Map<String, String[]> _requestParameters;
-
- public PortletRenderContextImpl(PortletContext context,
- PortletRequest request, PortletResponse response) {
- super(context, request, response);
- }
-
- protected Object getRequestParameter(String name) {
- Object[] values = (Object[]) getRequestParameterValues(name);
- if (null != values) {
- return values[0];
- } else {
- return null;
- }
- }
-
- protected Enumeration enumerateRequestParameterNames() {
- Map<String, String[]> requestParameters = getSavedRequestParameters();
- if (null != requestParameters) {
- return Collections.enumeration(requestParameters.keySet());
- } else {
- return Collections.enumeration(Collections.EMPTY_LIST);
- }
- }
-
- @Override
- public void redirect(String url) throws IOException {
- if (null == url) {
- throw new NullPointerException("Path to redirect is null");
- }
- PortalActionURL actionURL = new PortalActionURL(url);
- if((!actionURL.isInContext(getRequestContextPath()) && null == actionURL.getParameter(VIEW_ID_PARAMETER)) || "true".equalsIgnoreCase(actionURL.getParameter(Bridge.DIRECT_LINK))){
-// dispatch(url);
-
-// throw new IllegalStateException(
-// "Redirect to new url not at action phase");
- } else {
- // HACK - if page is in the context, just treat it as navigation case
- internalRedirect(actionURL);
- }
- }
-
- @Override
- protected String createActionUrl(Map<String, String> parameters) {
- RenderResponse renderResponse = (RenderResponse) getPortletResponse();
- PortletURL portletURL = renderResponse.createActionURL();
- portletURL.setParameter(AbstractExternalContext.NAMESPACE_PARAMETER,
- renderResponse.getNamespace());
- for (Iterator<Entry<String, String>> param = parameters.entrySet()
- .iterator(); param.hasNext();) {
- Entry<String, String> parameter = param.next();
- portletURL.setParameter(parameter.getKey(), parameter.getValue());
- }
- return portletURL.toString();
- }
-
- public void dispatch(String path) throws IOException {
- if (null == path) {
- throw new NullPointerException("Path to new view is null");
- }
- PortletRequestDispatcher dispatcher = getPortletContext()
- .getRequestDispatcher(path);
- if (null == dispatcher) {
- throw new IllegalStateException(
- "Dispatcher for render request is not created");
- }
- try {
- RenderRequest renderRequest = (RenderRequest) getPortletRequest();
- RenderResponse portletResponse = (RenderResponse) getPortletResponse();
- dispatcher.include(renderRequest, portletResponse);
- } catch (PortletException e) {
- throw new FacesException(e);
- }
- }
-
- /**
- * @return
- */
- @SuppressWarnings("unchecked")
- private Map<String, String[]> getSavedRequestParameters() {
- if (null == _requestParameters) {
- // Get parameters ( all or a View state only ) restored as requered
- // in the JSR 301 PLT 5.1
- Object preserveRequestAttr = Boolean.FALSE;
- PortletConfig portletConfig = (PortletConfig) getRequestAttribute(PORTLET_CONFIG_ATTRIBUTE);
- if (null != portletConfig) {
- String portletPreserveParamName = Bridge.PORTLET_ATTR_PREFIX
- + portletConfig.getPortletName()
- + Bridge.PRESERVE_ACTION_PARAM_ATTR_SUFFIX;
- preserveRequestAttr = getContextAttribute(portletPreserveParamName);
- }
- Map<String, String[]> parameters = (Map<String, String[]>) getRequestAttribute(PortletViewState.REQUEST_PARAMETERS_ATTRIBUTE);
- if (Boolean.TRUE.equals(preserveRequestAttr)) {
- _requestParameters = parameters;
- } else if (null != parameters) {
- _requestParameters = new HashMap<String, String[]>();
- String[] viewState = parameters
- .get(ResponseStateManager.VIEW_STATE_PARAM);
- if (null != viewState) {
- _requestParameters.put(
- ResponseStateManager.VIEW_STATE_PARAM, viewState);
-
- }
- String[] conversationId = parameters.get(CONVERSATION_ID_PARAMETER);
- if(null != conversationId){
- _requestParameters.put(CONVERSATION_ID_PARAMETER, conversationId);
- }
- }
- }
- return _requestParameters;
- }
-
- protected Object getRequestParameterValues(String name) {
- Map<String, String[]> requestParameters = getSavedRequestParameters();
- if (null != requestParameters) {
- return requestParameters.get(name);
- } else {
- return null;
- }
- }
-
-}
Copied: trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/RenderPortletExternalContextImpl.java (from rev 4944, trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/PortletRenderContextImpl.java)
===================================================================
--- trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/RenderPortletExternalContextImpl.java (rev 0)
+++ trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/RenderPortletExternalContextImpl.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -0,0 +1,184 @@
+/**
+ *
+ */
+package org.ajax4jsf.portlet.context;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.regex.Pattern;
+
+import javax.faces.FacesException;
+import javax.faces.render.ResponseStateManager;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletContext;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletRequestDispatcher;
+import javax.portlet.PortletResponse;
+import javax.portlet.PortletURL;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.faces.Bridge;
+
+import org.ajax4jsf.portlet.application.PortletViewState;
+
+/**
+ * @author asmirnov
+ *
+ */
+public class RenderPortletExternalContextImpl extends PortletExternalContextImpl {
+
+ public String getResponseCharacterEncoding() {
+ RenderResponse renderResponse = (RenderResponse) getPortletResponse();
+ return renderResponse.getCharacterEncoding();
+ }
+
+ public String getResponseContentType() {
+ RenderResponse renderResponse = (RenderResponse) getPortletResponse();
+ return renderResponse.getContentType();
+ }
+
+ public void setRequestCharacterEncoding(String encoding)
+ throws UnsupportedEncodingException {
+ // Do nothing.
+ }
+
+ public String getRequestCharacterEncoding() {
+ return null;
+ }
+
+ protected String getNamespace() {
+ return ((RenderResponse) getPortletResponse()).getNamespace();
+ }
+
+ private Map<String, String[]> _requestParameters;
+
+ public RenderPortletExternalContextImpl(PortletContext context,
+ PortletRequest request, PortletResponse response) {
+ super(context, request, response);
+ }
+
+ protected Object getRequestParameter(String name) {
+ Object[] values = (Object[]) getRequestParameterValues(name);
+ if (null != values) {
+ return values[0];
+ } else {
+ return null;
+ }
+ }
+
+ protected Enumeration enumerateRequestParameterNames() {
+ Map<String, String[]> requestParameters = getSavedRequestParameters();
+ if (null != requestParameters) {
+ return Collections.enumeration(requestParameters.keySet());
+ } else {
+ return Collections.enumeration(Collections.EMPTY_LIST);
+ }
+ }
+
+ @Override
+ public void redirect(String url) throws IOException {
+ if (null == url) {
+ throw new NullPointerException("Path to redirect is null");
+ }
+ PortalActionURL actionURL = new PortalActionURL(url);
+ if((!actionURL.isInContext(getRequestContextPath()) && null == actionURL.getParameter(VIEW_ID_PARAMETER)) || "true".equalsIgnoreCase(actionURL.getParameter(Bridge.DIRECT_LINK))){
+// dispatch(url);
+
+// throw new IllegalStateException(
+// "Redirect to new url not at action phase");
+ } else {
+ // HACK - if page is in the context, just treat it as navigation case
+ internalRedirect(actionURL);
+ }
+ }
+
+ @Override
+ protected String createActionUrl(Map<String, String> parameters) {
+ RenderResponse renderResponse = (RenderResponse) getPortletResponse();
+ PortletURL portletURL = renderResponse.createActionURL();
+ portletURL.setParameter(AbstractExternalContext.NAMESPACE_PARAMETER,
+ renderResponse.getNamespace());
+ for (Iterator<Entry<String, String>> param = parameters.entrySet()
+ .iterator(); param.hasNext();) {
+ Entry<String, String> parameter = param.next();
+ portletURL.setParameter(parameter.getKey(), parameter.getValue());
+ }
+ return portletURL.toString();
+ }
+
+ public void dispatch(String path) throws IOException {
+ if (null == path) {
+ throw new NullPointerException("Path to new view is null");
+ }
+ PortletRequestDispatcher dispatcher = getPortletContext()
+ .getRequestDispatcher(path);
+ if (null == dispatcher) {
+ throw new IllegalStateException(
+ "Dispatcher for render request is not created");
+ }
+ try {
+ RenderRequest renderRequest = (RenderRequest) getPortletRequest();
+ RenderResponse portletResponse = (RenderResponse) getPortletResponse();
+ dispatcher.include(renderRequest, portletResponse);
+ } catch (PortletException e) {
+ throw new FacesException(e);
+ }
+ }
+
+ /**
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ private Map<String, String[]> getSavedRequestParameters() {
+ if (null == _requestParameters) {
+ // Get parameters ( all or a View state only ) restored as requered
+ // in the JSR 301 PLT 5.1
+ Object preserveRequestAttr = Boolean.FALSE;
+ PortletConfig portletConfig = (PortletConfig) getRequestAttribute(PORTLET_CONFIG_ATTRIBUTE);
+ if (null != portletConfig) {
+ String portletPreserveParamName = Bridge.PORTLET_ATTR_PREFIX
+ + portletConfig.getPortletName()
+ + Bridge.PRESERVE_ACTION_PARAM_ATTR_SUFFIX;
+ preserveRequestAttr = getContextAttribute(portletPreserveParamName);
+ }
+ Map<String, String[]> parameters = (Map<String, String[]>) getRequestAttribute(PortletViewState.REQUEST_PARAMETERS_ATTRIBUTE);
+ if (Boolean.TRUE.equals(preserveRequestAttr)) {
+ _requestParameters = parameters;
+ } else if (null != parameters) {
+ _requestParameters = new HashMap<String, String[]>();
+ String[] viewState = parameters
+ .get(ResponseStateManager.VIEW_STATE_PARAM);
+ if (null != viewState) {
+ _requestParameters.put(
+ ResponseStateManager.VIEW_STATE_PARAM, viewState);
+
+ }
+ String[] conversationId = parameters.get(CONVERSATION_ID_PARAMETER);
+ if(null != conversationId){
+ _requestParameters.put(CONVERSATION_ID_PARAMETER, conversationId);
+ }
+ }
+ }
+ return _requestParameters;
+ }
+
+ protected Object getRequestParameterValues(String name) {
+ Map<String, String[]> requestParameters = getSavedRequestParameters();
+ if (null != requestParameters) {
+ return requestParameters.get(name);
+ } else {
+ return null;
+ }
+ }
+
+}
Deleted: trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/ServletContextImpl.java
===================================================================
--- trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/ServletContextImpl.java 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/ServletContextImpl.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -1,386 +0,0 @@
-/**
- *
- */
-package org.ajax4jsf.portlet.context;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.security.Principal;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.Map.Entry;
-
-import javax.faces.FacesException;
-import javax.faces.context.FacesContext;
-import javax.portlet.PortletSession;
-import javax.portlet.PortletSessionUtil;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-import org.ajax4jsf.context.AjaxContext;
-import org.ajax4jsf.portlet.AjaxPortletBridge;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * @author asmirnov
- *
- */
-public class ServletContextImpl extends AbstractExternalContext {
-
- private static final Log _log = LogFactory.getLog(ServletContextImpl.class);
-
- private String namespace;
-
- /**
- * @param context
- * @param request
- * @param response
- */
- public ServletContextImpl(ServletContext context,
- HttpServletRequest request, HttpServletResponse response) {
- super(context, request, response);
- ArrayList excludedAttributes = Collections.list(request.getAttributeNames());
- request.setAttribute(EXCLUDED_PARAMETERS_ATTRIBUTE, excludedAttributes);
- }
-
- public void setResponseCharacterEncoding(String encoding) {
-
- getHttpResponse().setCharacterEncoding(encoding);
- }
-
- public String getResponseCharacterEncoding() {
- return getHttpResponse().getCharacterEncoding();
- }
-
- public String getResponseContentType() {
- return getHttpResponse().getContentType();
- }
-
- public void setRequestCharacterEncoding(String encoding)
- throws UnsupportedEncodingException {
- getHttpRequest().setCharacterEncoding(encoding);
- }
-
- public String getRequestCharacterEncoding() {
- return getHttpRequest().getCharacterEncoding();
- }
-
- public String getRequestContentType() {
- return getHttpRequest().getContentType();
- }
-
- private HttpServletRequest getHttpRequest() {
- return (HttpServletRequest) getRequest();
- }
-
- private ServletContext getServletContext() {
- return (ServletContext) getContext();
- }
-
- private HttpServletResponse getHttpResponse() {
- return (HttpServletResponse) getResponse();
- }
-
- protected String getNamespace() {
- if (null == namespace) {
- Object requestParameter = getRequestParameter(NAMESPACE_PARAMETER);
- if (null != requestParameter) {
- namespace = (String) requestParameter;
- if (_log.isDebugEnabled()) {
- _log.debug("Namespace for a portlet instance is "
- + namespace);
- }
- } else {
- throw new FacesException(
- "AJAX call to portlet without namespace parameter");
- }
- }
- return namespace;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.faces.context.ExternalContext#getInitParameter(java.lang.String)
- */
- public String getInitParameter(String name) {
- return getServletContext().getInitParameter(name);
- }
-
- protected Enumeration getInitParametersNames() {
- return getServletContext().getInitParameterNames();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.faces.context.ExternalContext#getResource(java.lang.String)
- */
- public URL getResource(String path) throws MalformedURLException {
- return getServletContext().getResource(path);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.faces.context.ExternalContext#getResourceAsStream(java.lang.String)
- */
- public InputStream getResourceAsStream(String path) {
- return getServletContext().getResourceAsStream(path);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.faces.context.ExternalContext#getResourcePaths(java.lang.String)
- */
- public Set getResourcePaths(String path) {
- return getServletContext().getResourcePaths(path);
- }
-
- protected Object getContextAttribute(String name) {
- return getServletContext().getAttribute(name);
- }
-
- protected Enumeration getContextAttributeNames() {
- return getServletContext().getAttributeNames();
- }
-
- protected void setContextAttribute(String name, Object value) {
- getServletContext().setAttribute(name, value);
- }
-
- public String getAuthType() {
- return getHttpRequest().getAuthType();
- }
-
- public String getRemoteUser() {
- Principal userPrincipal = getUserPrincipal();
- if( null != userPrincipal){
- return userPrincipal.getName();
- }
- return getHttpRequest().getRemoteUser();
- }
-
- public String getRequestContextPath() {
- return getHttpRequest().getContextPath();
- }
-
- public String getRequestPathInfo() {
- return getHttpRequest().getPathInfo();
- }
-
- public String getRequestServletPath() {
- return getHttpRequest().getServletPath();
- }
-
- protected Enumeration enumerateRequestParameterNames() {
- return getHttpRequest().getParameterNames();
- }
-
- protected Object getRequestAttribute(String name) {
- return getHttpRequest().getAttribute(name);
- }
-
- protected Enumeration getRequestAttributeNames() {
- return getHttpRequest().getAttributeNames();
- }
-
- protected Object getRequestParameterValues(String name) {
- return getHttpRequest().getParameterValues(name);
- }
-
- protected Object getRequestHeader(String name) {
- return getHttpRequest().getHeader(name);
- }
-
- protected Enumeration getRequestHeaderNames() {
- return getHttpRequest().getHeaderNames();
- }
-
- protected String[] getRequestHeaderValues(String name) {
- Enumeration values = getHttpRequest().getHeaders(name);
- ArrayList valuesList = new ArrayList();
- while (values.hasMoreElements()) {
- valuesList.add(values.nextElement());
- }
- return (String[]) valuesList.toArray(EMPTY_STRING_ARRAY);
- }
-
- protected Object getRequestParameter(String name) {
- return getHttpRequest().getParameter(name);
- }
-
- private String sessionPrefix;
-
- private String getSessionPrefix() {
- if (sessionPrefix == null) {
- HttpSession session = getHttpRequest().getSession(false);
- String namespase = getNamespace();
- if (null == namespase || null == session) {
- throw new FacesException(
- "JSF request called without portlet namespace parameter");
- }
- Enumeration attributeNames = session.getAttributeNames();
- while (attributeNames.hasMoreElements() && null == sessionPrefix) {
- String name = (String) attributeNames.nextElement();
- Object attribute = session.getAttribute(name);
- if (PortletSessionUtil.decodeScope(name) == PortletSession.PORTLET_SCOPE
- && PortletSessionUtil.decodeAttributeName(name).equals(
- NAMESPACE_PARAMETER)
- && namespase.equals(attribute)) {
- sessionPrefix = name.substring(0, name.length()
- - NAMESPACE_PARAMETER.length());
- if (_log.isDebugEnabled()) {
- _log
- .debug("Prefix for a PORTLET_SCOPE session attributes: "
- + sessionPrefix);
- }
- }
- }
- if (null == sessionPrefix) {
- throw new FacesException(
- "Prefix for attributes in portlet session scope not found");
- }
- }
- return sessionPrefix;
- }
-
- protected Object getSessionAttribute(String name) {
- return getHttpRequest().getSession(true).getAttribute(
- getSessionPrefix() + name);
- }
-
- protected Enumeration getSessionAttributeNames() {
- return new SessionAttributesNames(getHttpRequest().getSession(true)
- .getAttributeNames(), getSessionPrefix());
- }
-
- protected void removeSessionAttribute(String name) {
- getHttpRequest().getSession(true).removeAttribute(
- getSessionPrefix() + name);
- }
-
- protected void setSessionAttribute(String name, Object value) {
- getHttpRequest().getSession(true).setAttribute(
- getSessionPrefix() + name, value);
- }
-
- protected void removeContextAttribute(String name) {
- getHttpRequest().getSession(true).removeAttribute(name);
- }
-
- protected void removeRequestAttribute(String name) {
- getHttpRequest().removeAttribute(name);
- }
-
- protected void setRequestAttribute(String name, Object value) {
- getHttpRequest().setAttribute(name, value);
- }
-
- public void dispatch(String path) throws IOException {
- RequestDispatcher requestDispatcher = getHttpRequest()
- .getRequestDispatcher(path);
- if (requestDispatcher == null) {
- (getHttpResponse()).sendError(HttpServletResponse.SC_NOT_FOUND);
- return;
- }
- try {
- requestDispatcher.forward(getHttpRequest(), getHttpResponse());
- } catch (IOException ioe) {
- throw ioe;
- } catch (ServletException se) {
- throw new FacesException(se);
- }
-
- }
-
- @Override
- protected String createActionUrl(Map<String, String> parameters) {
- String url = getHttpRequest().getParameter(ACTION__PARAMETER);
- if(null == url){
- throw new FacesException("No portal action url availible");
- }
- PortalActionURL portalUrl;
- try {
- portalUrl = new PortalActionURL(url);
- } catch (MalformedURLException e) {
- throw new FacesException("Malformed Portal Action URL "+url);
- }
- for (Entry<String, String> parameterEntry : parameters.entrySet()) {
- portalUrl.addParameter(parameterEntry.getKey(), parameterEntry.getValue());
- }
- return portalUrl.toString();
- }
-
- public String encodeResourceURL(String url) {
- return encodeURL(url);
- }
-
- /**
- * @param url
- * @return
- */
- protected String encodeURL(String url) {
- return getHttpResponse().encodeURL(url);
- }
-
- public Locale getRequestLocale() {
- return getHttpRequest().getLocale();
- }
-
- public Iterator getRequestLocales() {
- return new EnumerationIterator(getHttpRequest().getLocales());
- }
-
- public Object getSession(boolean create) {
- HttpSession session = getHttpRequest().getSession(create);
- if (null != session) {
- session = new ServletSessionWrapper(session, getSessionPrefix());
- }
- return session;
- }
-
- public Principal getUserPrincipal() {
- Principal userPrincipal = getHttpRequest().getUserPrincipal();
- HttpSession httpSession = getHttpRequest().getSession(false);
- if(null != httpSession){
- Principal portalPrincipal = (Principal) httpSession.getAttribute(PORTAL_USER_PRINCIPAL);
- if(null != portalPrincipal){
- userPrincipal = portalPrincipal;
- }
- }
- return userPrincipal;
- }
-
- public boolean isUserInRole(String role) {
- return getHttpRequest().isUserInRole(role);
- }
-
- public void log(String message) {
- getServletContext().log(message);
- }
-
- public void log(String message, Throwable exception) {
- getServletContext().log(message, exception);
- }
-
- public void redirect(String url) throws IOException {
- getHttpResponse().sendRedirect(url);
- FacesContext.getCurrentInstance().responseComplete();
- }
-
-}
Copied: trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/ServletExternalContextImpl.java (from rev 4938, trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/ServletContextImpl.java)
===================================================================
--- trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/ServletExternalContextImpl.java (rev 0)
+++ trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/context/ServletExternalContextImpl.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -0,0 +1,382 @@
+/**
+ *
+ */
+package org.ajax4jsf.portlet.context;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+
+import javax.faces.FacesException;
+import javax.faces.context.FacesContext;
+import javax.portlet.PortletSession;
+import javax.portlet.PortletSessionUtil;
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.ajax4jsf.context.AjaxContext;
+import org.ajax4jsf.portlet.AjaxPortletBridge;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * @author asmirnov
+ *
+ */
+public class ServletExternalContextImpl extends AbstractExternalContext {
+
+ private static final Log _log = LogFactory.getLog(ServletExternalContextImpl.class);
+
+ private String namespace;
+
+ /**
+ * @param context
+ * @param request
+ * @param response
+ */
+ public ServletExternalContextImpl(ServletContext context,
+ HttpServletRequest request, HttpServletResponse response) {
+ super(context, request, response);
+ ArrayList excludedAttributes = Collections.list(request.getAttributeNames());
+ request.setAttribute(EXCLUDED_PARAMETERS_ATTRIBUTE, excludedAttributes);
+ }
+
+ public void setResponseCharacterEncoding(String encoding) {
+
+ getHttpResponse().setCharacterEncoding(encoding);
+ }
+
+ public String getResponseCharacterEncoding() {
+ return getHttpResponse().getCharacterEncoding();
+ }
+
+ public String getResponseContentType() {
+ return getHttpResponse().getContentType();
+ }
+
+ public void setRequestCharacterEncoding(String encoding)
+ throws UnsupportedEncodingException {
+ getHttpRequest().setCharacterEncoding(encoding);
+ }
+
+ public String getRequestCharacterEncoding() {
+ return getHttpRequest().getCharacterEncoding();
+ }
+
+ public String getRequestContentType() {
+ return getHttpRequest().getContentType();
+ }
+
+ private HttpServletRequest getHttpRequest() {
+ return (HttpServletRequest) getRequest();
+ }
+
+ private ServletContext getServletContext() {
+ return (ServletContext) getContext();
+ }
+
+ private HttpServletResponse getHttpResponse() {
+ return (HttpServletResponse) getResponse();
+ }
+
+ protected String getNamespace() {
+ if (null == namespace) {
+ Object requestParameter = getRequestParameter(NAMESPACE_PARAMETER);
+ if (null != requestParameter) {
+ namespace = (String) requestParameter;
+ if (_log.isDebugEnabled()) {
+ _log.debug("Namespace for a portlet instance is "
+ + namespace);
+ }
+ } else {
+ throw new FacesException(
+ "AJAX call to portlet without namespace parameter");
+ }
+ }
+ return namespace;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.faces.context.ExternalContext#getInitParameter(java.lang.String)
+ */
+ public String getInitParameter(String name) {
+ return getServletContext().getInitParameter(name);
+ }
+
+ protected Enumeration getInitParametersNames() {
+ return getServletContext().getInitParameterNames();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.faces.context.ExternalContext#getResource(java.lang.String)
+ */
+ public URL getResource(String path) throws MalformedURLException {
+ return getServletContext().getResource(path);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.faces.context.ExternalContext#getResourceAsStream(java.lang.String)
+ */
+ public InputStream getResourceAsStream(String path) {
+ return getServletContext().getResourceAsStream(path);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.faces.context.ExternalContext#getResourcePaths(java.lang.String)
+ */
+ public Set getResourcePaths(String path) {
+ return getServletContext().getResourcePaths(path);
+ }
+
+ protected Object getContextAttribute(String name) {
+ return getServletContext().getAttribute(name);
+ }
+
+ protected Enumeration getContextAttributeNames() {
+ return getServletContext().getAttributeNames();
+ }
+
+ protected void setContextAttribute(String name, Object value) {
+ getServletContext().setAttribute(name, value);
+ }
+
+ public String getAuthType() {
+ return getHttpRequest().getAuthType();
+ }
+
+ public String getRemoteUser() {
+ Principal userPrincipal = getUserPrincipal();
+ if( null != userPrincipal){
+ return userPrincipal.getName();
+ }
+ return getHttpRequest().getRemoteUser();
+ }
+
+ public String getRequestContextPath() {
+ return getHttpRequest().getContextPath();
+ }
+
+ public String getRequestPathInfo() {
+ return getHttpRequest().getPathInfo();
+ }
+
+ public String getRequestServletPath() {
+ return getHttpRequest().getServletPath();
+ }
+
+ protected Enumeration enumerateRequestParameterNames() {
+ return getHttpRequest().getParameterNames();
+ }
+
+ protected Object getRequestAttribute(String name) {
+ return getHttpRequest().getAttribute(name);
+ }
+
+ protected Enumeration getRequestAttributeNames() {
+ return getHttpRequest().getAttributeNames();
+ }
+
+ protected Object getRequestParameterValues(String name) {
+ return getHttpRequest().getParameterValues(name);
+ }
+
+ protected Object getRequestHeader(String name) {
+ return getHttpRequest().getHeader(name);
+ }
+
+ protected Enumeration getRequestHeaderNames() {
+ return getHttpRequest().getHeaderNames();
+ }
+
+ protected String[] getRequestHeaderValues(String name) {
+ Enumeration values = getHttpRequest().getHeaders(name);
+ ArrayList valuesList = new ArrayList();
+ while (values.hasMoreElements()) {
+ valuesList.add(values.nextElement());
+ }
+ return (String[]) valuesList.toArray(EMPTY_STRING_ARRAY);
+ }
+
+ protected Object getRequestParameter(String name) {
+ return getHttpRequest().getParameter(name);
+ }
+
+ private String sessionPrefix;
+
+ private String getSessionPrefix() {
+ if (sessionPrefix == null) {
+ HttpSession session = getHttpRequest().getSession(false);
+ String namespase = getNamespace();
+ if (null == namespase || null == session) {
+ throw new FacesException(
+ "JSF request called without portlet namespace parameter");
+ }
+ Enumeration attributeNames = session.getAttributeNames();
+ while (attributeNames.hasMoreElements() && null == sessionPrefix) {
+ String name = (String) attributeNames.nextElement();
+ Object attribute = session.getAttribute(name);
+ if (PortletSessionUtil.decodeScope(name) == PortletSession.PORTLET_SCOPE
+ && PortletSessionUtil.decodeAttributeName(name).equals(
+ NAMESPACE_PARAMETER)
+ && namespase.equals(attribute)) {
+ sessionPrefix = name.substring(0, name.length()
+ - NAMESPACE_PARAMETER.length());
+ if (_log.isDebugEnabled()) {
+ _log
+ .debug("Prefix for a PORTLET_SCOPE session attributes: "
+ + sessionPrefix);
+ }
+ }
+ }
+ if (null == sessionPrefix) {
+ throw new FacesException(
+ "Prefix for attributes in portlet session scope not found");
+ }
+ }
+ return sessionPrefix;
+ }
+
+ protected Object getSessionAttribute(String name) {
+ return getHttpRequest().getSession(true).getAttribute(
+ getSessionPrefix() + name);
+ }
+
+ protected Enumeration getSessionAttributeNames() {
+ return new SessionAttributesNames(getHttpRequest().getSession(true)
+ .getAttributeNames(), getSessionPrefix());
+ }
+
+ protected void removeSessionAttribute(String name) {
+ getHttpRequest().getSession(true).removeAttribute(
+ getSessionPrefix() + name);
+ }
+
+ protected void setSessionAttribute(String name, Object value) {
+ getHttpRequest().getSession(true).setAttribute(
+ getSessionPrefix() + name, value);
+ }
+
+ protected void removeContextAttribute(String name) {
+ getHttpRequest().getSession(true).removeAttribute(name);
+ }
+
+ protected void removeRequestAttribute(String name) {
+ getHttpRequest().removeAttribute(name);
+ }
+
+ protected void setRequestAttribute(String name, Object value) {
+ getHttpRequest().setAttribute(name, value);
+ }
+
+ public void dispatch(String path) throws IOException {
+ RequestDispatcher requestDispatcher = getHttpRequest()
+ .getRequestDispatcher(path);
+ if (requestDispatcher == null) {
+ (getHttpResponse()).sendError(HttpServletResponse.SC_NOT_FOUND);
+ return;
+ }
+ try {
+ requestDispatcher.forward(getHttpRequest(), getHttpResponse());
+ } catch (IOException ioe) {
+ throw ioe;
+ } catch (ServletException se) {
+ throw new FacesException(se);
+ }
+
+ }
+
+ @Override
+ protected String createActionUrl(Map<String, String> parameters) {
+ String url = getHttpRequest().getParameter(ACTION__PARAMETER);
+ if(null == url){
+ throw new FacesException("No portal action url availible");
+ }
+ PortalActionURL portalUrl;
+ try {
+ portalUrl = new PortalActionURL(url);
+ } catch (MalformedURLException e) {
+ throw new FacesException("Malformed Portal Action URL "+url);
+ }
+ for (Entry<String, String> parameterEntry : parameters.entrySet()) {
+ portalUrl.addParameter(parameterEntry.getKey(), parameterEntry.getValue());
+ }
+ return portalUrl.toString();
+ }
+
+ /**
+ * @param url
+ * @return
+ */
+ protected String encodeURL(String url) {
+ return getHttpResponse().encodeURL(url);
+ }
+
+ public Locale getRequestLocale() {
+ return getHttpRequest().getLocale();
+ }
+
+ public Iterator getRequestLocales() {
+ return new EnumerationIterator(getHttpRequest().getLocales());
+ }
+
+ public Object getSession(boolean create) {
+ HttpSession session = getHttpRequest().getSession(create);
+ if (null != session) {
+ session = new ServletSessionWrapper(session, getSessionPrefix());
+ }
+ return session;
+ }
+
+ public Principal getUserPrincipal() {
+ Principal userPrincipal = getHttpRequest().getUserPrincipal();
+ HttpSession httpSession = getHttpRequest().getSession(false);
+ if(null != httpSession){
+ Principal portalPrincipal = (Principal) httpSession.getAttribute(PORTAL_USER_PRINCIPAL);
+ if(null != portalPrincipal){
+ userPrincipal = portalPrincipal;
+ }
+ }
+ return userPrincipal;
+ }
+
+ public boolean isUserInRole(String role) {
+ return getHttpRequest().isUserInRole(role);
+ }
+
+ public void log(String message) {
+ getServletContext().log(message);
+ }
+
+ public void log(String message, Throwable exception) {
+ getServletContext().log(message, exception);
+ }
+
+ public void redirect(String url) throws IOException {
+ getHttpResponse().sendRedirect(url);
+ FacesContext.getCurrentInstance().responseComplete();
+ }
+
+}
Modified: trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/lifecycle/PortalPhaseListener.java
===================================================================
--- trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/lifecycle/PortalPhaseListener.java 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/extensions/portletbridge/portletbridge-impl/src/main/java/org/ajax4jsf/portlet/lifecycle/PortalPhaseListener.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -38,8 +38,33 @@
if (phaseId.equals(PhaseId.RESTORE_VIEW)) {
Object portletPhase = context.getExternalContext().getRequestMap()
.get(Bridge.PORTLET_LIFECYCLE_PHASE);
- if (null == portletPhase) {
- // For a servlet phase, put all portlet-related parameters back to ajaxContext.
+ if (Bridge.PortletPhase.RenderPhase.equals(portletPhase)) {
+ context.renderResponse();
+ }
+ } else if (phaseId.equals(PhaseId.INVOKE_APPLICATION)
+ || (!phaseId.equals(PhaseId.RENDER_RESPONSE) && context
+ .getRenderResponse())) {
+ // save request scope variables and Faces Messages.
+ PortletViewState windowState = PortletStateHolder.getInstance(
+ context).getWindowState(context);
+ windowState.saveRequest(context);
+ }
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.faces.event.PhaseListener#beforePhase(javax.faces.event.PhaseEvent)
+ */
+ public void beforePhase(PhaseEvent event) {
+ PhaseId phaseId = event.getPhaseId();
+ FacesContext context = event.getFacesContext();
+ Object portletPhase = context.getExternalContext().getRequestMap().get(
+ Bridge.PORTLET_LIFECYCLE_PHASE);
+ if (null == portletPhase && phaseId.equals(PhaseId.RENDER_RESPONSE)) {
+ // For a servlet phase, put all portlet-related parameters
+ // back to ajaxContext.
Map<String, String> requestParameters = context
.getExternalContext().getRequestParameterMap();
@@ -69,37 +94,12 @@
AbstractExternalContext.PORTLET_NAME_PARAMETER,
requestParameters
.get(AbstractExternalContext.PORTLET_NAME_PARAMETER));
-
- } else if (Bridge.PortletPhase.RenderPhase.equals(portletPhase)) {
- context.renderResponse();
- }
- }
-
+ }
}
/*
* (non-Javadoc)
*
- * @see javax.faces.event.PhaseListener#beforePhase(javax.faces.event.PhaseEvent)
- */
- public void beforePhase(PhaseEvent event) {
- PhaseId phaseId = event.getPhaseId();
- FacesContext context = event.getFacesContext();
- if (phaseId.equals(PhaseId.RENDER_RESPONSE)) {
- Object portletPhase = context.getExternalContext().getRequestMap()
- .get(Bridge.PORTLET_LIFECYCLE_PHASE);
- if (null == portletPhase) {
- // save request scope variables and Faces Messages.
- PortletViewState windowState = PortletStateHolder.getInstance(
- context).getWindowState(context);
- windowState.saveRequest(context);
- }
- }
- }
-
- /*
- * (non-Javadoc)
- *
* @see javax.faces.event.PhaseListener#getPhaseId()
*/
public PhaseId getPhaseId() {
Modified: trunk/extensions/portletbridge/portletbridge-impl/src/test/java/org/ajax4jsf/portlet/context/ContextFactoryTest.java
===================================================================
--- trunk/extensions/portletbridge/portletbridge-impl/src/test/java/org/ajax4jsf/portlet/context/ContextFactoryTest.java 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/extensions/portletbridge/portletbridge-impl/src/test/java/org/ajax4jsf/portlet/context/ContextFactoryTest.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -47,11 +47,11 @@
* {@link org.ajax4jsf.portlet.context.FacesContextFactoryImpl#FacesContextFactoryImpl(javax.faces.context.FacesContextFactory)}.
*/
public void testFacesContextFactoryImpl() {
- FacesContextFactoryImpl factory = new FacesContextFactoryImpl();
+ FacesContextFactoryImpl factory = new FacesContextFactoryImpl(facesContextFactory);
FacesContext context = factory.getFacesContext(servletContext, request,
response, lifecycle);
assertTrue((context instanceof FacesContextImpl));
- assertTrue((context.getExternalContext() instanceof ServletContextImpl));
+ assertTrue((context.getExternalContext() instanceof AbstractExternalContext));
}
/**
@@ -59,7 +59,7 @@
* {@link org.ajax4jsf.portlet.context.FacesContextFactoryImpl#getFacesContext(java.lang.Object, java.lang.Object, java.lang.Object, javax.faces.lifecycle.Lifecycle)}.
*/
public void testGetFacesContextPortlet() {
- FacesContextFactoryImpl factory = new FacesContextFactoryImpl();
+ FacesContextFactoryImpl factory = new FacesContextFactoryImpl(facesContextFactory);
MockPortletContext portletContext = new MockPortletContext();
MockActionRequest portletRequest = new MockActionRequest();
MockActionResponse portletResponse = new MockActionResponse();
@@ -71,7 +71,7 @@
}
public void testIllegalEnvironment() throws Exception {
- FacesContextFactoryImpl factory = new FacesContextFactoryImpl();
+ FacesContextFactoryImpl factory = new FacesContextFactoryImpl(facesContextFactory);
try {
FacesContext context = factory.getFacesContext(null, request,
response, lifecycle);
Modified: trunk/extensions/portletbridge/portletbridge-impl/src/test/java/org/ajax4jsf/portlet/context/FacesContextImplTest.java
===================================================================
--- trunk/extensions/portletbridge/portletbridge-impl/src/test/java/org/ajax4jsf/portlet/context/FacesContextImplTest.java 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/extensions/portletbridge/portletbridge-impl/src/test/java/org/ajax4jsf/portlet/context/FacesContextImplTest.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -17,7 +17,7 @@
public class FacesContextImplTest extends AbstractAjax4JsfTestCase {
private static final String ID0 = "_id0";
protected FacesContextImpl portalFacesContext;
- protected ServletContextImpl servletContextImpl;
+ protected AbstractExternalContext servletContextImpl;
/**
* @param arg0
@@ -31,7 +31,7 @@
*/
public void setUp() throws Exception {
super.setUp();
- servletContextImpl = new ServletContextImpl(servletContext,request,response);
+ servletContextImpl = new ServletExternalContextImpl(servletContext,request,response);
portalFacesContext = new FacesContextImpl(servletContextImpl,lifecycle);
}
Modified: trunk/extensions/portletbridge/portletbridge-impl/src/test/java/org/ajax4jsf/portlet/context/PortletExternalContextTest.java
===================================================================
--- trunk/extensions/portletbridge/portletbridge-impl/src/test/java/org/ajax4jsf/portlet/context/PortletExternalContextTest.java 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/extensions/portletbridge/portletbridge-impl/src/test/java/org/ajax4jsf/portlet/context/PortletExternalContextTest.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -37,7 +37,7 @@
portletContext=new MockPortletContext();
portletRequest = new MockActionRequest();
portletResponse = new MockActionResponse();
- portletContextImpl = new PortletContextImpl(portletContext,portletRequest,portletResponse);
+ portletContextImpl = new PortletExternalContextImpl(portletContext,portletRequest,portletResponse);
portalFacesContext = new FacesContextImpl(portletContextImpl,lifecycle);
portalFacesContext.setViewRoot(facesContext.getViewRoot());
}
@@ -55,7 +55,7 @@
}
/**
- * Test method for {@link org.ajax4jsf.portlet.context.PortletContextImpl#getRequestParameterValuesMap()}.
+ * Test method for {@link org.ajax4jsf.portlet.context.PortletExternalContextImpl#getRequestParameterValuesMap()}.
*/
public final void testGetRequestParameterValuesMap() {
Map requestParameterValuesMap = portalFacesContext.getExternalContext().getRequestParameterValuesMap();
@@ -66,7 +66,7 @@
}
/**
- * Test method for {@link org.ajax4jsf.portlet.context.PortletContextImpl#getInitParameter(java.lang.String)}.
+ * Test method for {@link org.ajax4jsf.portlet.context.PortletExternalContextImpl#getInitParameter(java.lang.String)}.
*/
public final void testGetInitParameterString() {
assertNull(portalFacesContext.getExternalContext().getInitParameter("blabla"));
@@ -74,14 +74,14 @@
}
/**
- * Test method for {@link org.ajax4jsf.portlet.context.PortletContextImpl#getRequestLocales()}.
+ * Test method for {@link org.ajax4jsf.portlet.context.PortletExternalContextImpl#getRequestLocales()}.
*/
public final void testGetRequestLocales() {
// fail("Not yet implemented");
}
/**
- * Test method for {@link org.ajax4jsf.portlet.context.PortletContextImpl#getSession(boolean)}.
+ * Test method for {@link org.ajax4jsf.portlet.context.PortletExternalContextImpl#getSession(boolean)}.
*/
public final void testGetSessionBoolean() {
// fail("Not yet implemented");
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/resource/ResourceLifecycle.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/resource/ResourceLifecycle.java 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/resource/ResourceLifecycle.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -133,7 +133,11 @@
// create "dummy" viewRoot, to avoid problems in phase
// listeners.
UIViewRoot root = new UIViewRoot();
- root.setViewId(resource.getKey());
+ String key = resource.getKey();
+ if(null != key && !key.startsWith("/")){
+ key="/"+key;
+ }
+ root.setViewId(key);
root.setLocale(Locale.getDefault());
root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
facesContext.setViewRoot(root);
Modified: trunk/samples/seamPortletEar/seamBooking/src/main/java/org/jboss/seam/example/booking/Booking.java
===================================================================
--- trunk/samples/seamPortletEar/seamBooking/src/main/java/org/jboss/seam/example/booking/Booking.java 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/samples/seamPortletEar/seamBooking/src/main/java/org/jboss/seam/example/booking/Booking.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -87,7 +87,7 @@
this.hotel = hotel;
}
- @ManyToOne @NotNull
+// @ManyToOne @NotNull
public User getUser()
{
return user;
Modified: trunk/samples/seamPortletEar/seamBooking/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java
===================================================================
--- trunk/samples/seamPortletEar/seamBooking/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/samples/seamPortletEar/seamBooking/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -51,7 +51,7 @@
private boolean bookingValid;
-// @Begin
+ @Begin
public void selectHotel(Hotel selectedHotel)
{
hotel = em.merge(selectedHotel);
@@ -91,7 +91,7 @@
return bookingValid;
}
-// @End
+ @End
public void confirm()
{
em.persist(booking);
@@ -100,7 +100,7 @@
events.raiseTransactionSuccessEvent("bookingConfirmed");
}
-// @End
+ @End
public void cancel() {}
@Remove
Modified: trunk/samples/seamPortletEar/seamBooking/src/main/java/org/jboss/seam/example/booking/User.java
===================================================================
--- trunk/samples/seamPortletEar/seamBooking/src/main/java/org/jboss/seam/example/booking/User.java 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/samples/seamPortletEar/seamBooking/src/main/java/org/jboss/seam/example/booking/User.java 2007-12-22 00:30:11 UTC (rev 4964)
@@ -4,7 +4,10 @@
import static org.jboss.seam.ScopeType.SESSION;
import java.io.Serializable;
+import java.security.Principal;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@@ -15,10 +18,8 @@
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
-@Entity
@Name("user")
@Scope(SESSION)
-@Table(name="Customer")
public class User implements Serializable
{
private String username;
@@ -34,19 +35,23 @@
public User() {}
- @NotNull
- @Length(max=100)
public String getName()
{
- return name;
+ if (name == null) {
+ ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
+ Principal userPrincipal = externalContext.getUserPrincipal();
+ if(null != userPrincipal){
+ name = userPrincipal.getName();
+ username = userPrincipal.toString();
+ }
+ }
+ return name;
}
public void setName(String name)
{
this.name = name;
}
- @NotNull
- @Length(min=5, max=15)
public String getPassword()
{
return password;
@@ -56,9 +61,6 @@
this.password = password;
}
- @Id
- @Length(min=4, max=15)
- @Pattern(regex="^\\w*$", message="not a valid username")
public String getUsername()
{
return username;
Modified: trunk/samples/seamPortletEar/seamBookingPortlet/src/main/webapp/WEB-INF/pages.xml
===================================================================
--- trunk/samples/seamPortletEar/seamBookingPortlet/src/main/webapp/WEB-INF/pages.xml 2007-12-21 19:33:55 UTC (rev 4963)
+++ trunk/samples/seamPortletEar/seamBookingPortlet/src/main/webapp/WEB-INF/pages.xml 2007-12-22 00:30:11 UTC (rev 4964)
@@ -56,7 +56,7 @@
</page>
<page view-id="/hotel.xhtml"
- conversation-required="false"
+ conversation-required="true"
login-required="true">
<description>View hotel: #{hotel.name}</description>
@@ -68,7 +68,7 @@
</page>
<page view-id="/book.xhtml"
- conversation-required="false"
+ conversation-required="true"
login-required="true">
<description>Book hotel: #{hotel.name}</description>
@@ -82,7 +82,7 @@
</page>
<page view-id="/confirm.xhtml"
- conversation-required="false"
+ conversation-required="true"
login-required="true">
<description>Confirm booking: #{booking.description}</description>
16 years, 10 months
JBoss Rich Faces SVN: r4963 - trunk/sandbox/ui/combobox/src/main/java/org/richfaces/renderkit.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2007-12-21 14:33:55 -0500 (Fri, 21 Dec 2007)
New Revision: 4963
Removed:
trunk/sandbox/ui/combobox/src/main/java/org/richfaces/renderkit/ComboBoxBaseRenderer.java
Log:
Deleted: trunk/sandbox/ui/combobox/src/main/java/org/richfaces/renderkit/ComboBoxBaseRenderer.java
===================================================================
--- trunk/sandbox/ui/combobox/src/main/java/org/richfaces/renderkit/ComboBoxBaseRenderer.java 2007-12-21 19:33:11 UTC (rev 4962)
+++ trunk/sandbox/ui/combobox/src/main/java/org/richfaces/renderkit/ComboBoxBaseRenderer.java 2007-12-21 19:33:55 UTC (rev 4963)
@@ -1,14 +0,0 @@
-package org.richfaces.renderkit;
-
-import javax.faces.component.UIComponent;
-
-import org.ajax4jsf.renderkit.AjaxComponentRendererBase;
-import org.richfaces.component.UIComboBox;
-
-public class ComboBoxBaseRenderer extends AjaxComponentRendererBase {
-
- protected Class<? extends UIComponent> getComponentClass() {
- return UIComboBox.class;
- }
-
-}
16 years, 10 months
JBoss Rich Faces SVN: r4962 - in trunk/sandbox/ui/combobox: src/main/config/component and 1 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2007-12-21 14:33:11 -0500 (Fri, 21 Dec 2007)
New Revision: 4962
Modified:
trunk/sandbox/ui/combobox/pom.xml
trunk/sandbox/ui/combobox/src/main/config/component/combobox.xml
trunk/sandbox/ui/combobox/src/main/java/org/richfaces/component/UIComboBox.java
Log:
Modified: trunk/sandbox/ui/combobox/pom.xml
===================================================================
--- trunk/sandbox/ui/combobox/pom.xml 2007-12-21 19:15:11 UTC (rev 4961)
+++ trunk/sandbox/ui/combobox/pom.xml 2007-12-21 19:33:11 UTC (rev 4962)
@@ -8,7 +8,7 @@
<groupId>org.richfaces.sandbox.ui</groupId>
<artifactId>combobox</artifactId>
<name>combobox</name>
- <version>1.0-SNAPSHOT</version>
+ <version>3.2.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
@@ -46,5 +46,11 @@
<artifactId>richfaces-impl</artifactId>
<version>3.2.0-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.richfaces.ui</groupId>
+ <artifactId>suggestionbox</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ </dependency>
+
</dependencies>
</project>
\ No newline at end of file
Modified: trunk/sandbox/ui/combobox/src/main/config/component/combobox.xml
===================================================================
--- trunk/sandbox/ui/combobox/src/main/config/component/combobox.xml 2007-12-21 19:15:11 UTC (rev 4961)
+++ trunk/sandbox/ui/combobox/src/main/config/component/combobox.xml 2007-12-21 19:33:11 UTC (rev 4962)
@@ -9,7 +9,7 @@
</classname>
<superclass>org.richfaces.component.UIComboBox</superclass>
<test>
- <classname>org.richfaces.component.html.HtmlComboBoxBoxComponentTest</classname>
+ <classname>org.richfaces.component.html.HtmlComboBoxComponentTest</classname>
<superclassname>org.ajax4jsf.tests.AbstractAjax4JsfTestCase</superclassname>
</test>
<description>
@@ -17,71 +17,22 @@
</description>
<renderer generate="false" override="false">
- <name>org.richfaces.ComboBoxBox</name>
+ <name>org.richfaces.ComboBox</name>
<classname>
- org.richfaces.renderkit.html.ComboBoxBoxRenderer
- </classname>
+ org.richfaces.renderkit.html.ComboBoxRenderer
+ </classname>
</renderer>
-
- <tag>
- <name>ComboBox</name>
- <classname>org.richfaces.taglib.ComboBoxBoxTag</classname>
+
+ <tag>
+ <name>comboBox</name>
+ <classname>org.richfaces.taglib.ComboBoxTag</classname>
<superclass>
- org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
- </superclass>
- </tag>
- &ui_component_attributes;
- &ui_component_attributes;
- &ui_output_attributes;
- &ui_data_attributes;
- &ajax_component_attributes;
- &ui_for_attribute;
- &html_universal_attributes;
- &html_table_attributes;
-
- <property>
- <name>immediate</name>
- <classname>boolean</classname>
- <description>
- A flag indicating that this component value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until a Process Validations phase.
- </description>
- </property>
- <property required="true">
- <name>width</name>
- <classname>java.lang.String</classname>
- <description>
- Width of the pop-up window in pixels
- </description>
- <defaultvalue>"200"</defaultvalue>
- </property>
- <property required="true">
- <name>height</name>
- <classname>java.lang.String</classname>
- <description>
- Height of the pop-up window in pixels
- </description>
- <defaultvalue>"200"</defaultvalue>
- </property>
- <property hidden="true">
- <name>value</name>
- <classname>java.lang.Object</classname>
- <description>
- Supported types see JSF Spec 4.1.3
- </description>
- </property>
- <property>
- <name>shadowOpacity</name>
- <classname>java.lang.String</classname>
- <description>
- Attribute defines shadow opacity for suggestion content
- </description>
- </property>
- <property>
- <name>shadowDepth</name>
- <classname>java.lang.String</classname>
- <description>
- Pop-up shadow depth for suggestion content
- </description>
- </property>
+ org.richfaces.taglib.SuggestionBoxTag
+ </superclass>
+ </tag>
+
+
+
+
</component>
</components>
Modified: trunk/sandbox/ui/combobox/src/main/java/org/richfaces/component/UIComboBox.java
===================================================================
--- trunk/sandbox/ui/combobox/src/main/java/org/richfaces/component/UIComboBox.java 2007-12-21 19:15:11 UTC (rev 4961)
+++ trunk/sandbox/ui/combobox/src/main/java/org/richfaces/component/UIComboBox.java 2007-12-21 19:33:11 UTC (rev 4962)
@@ -3,7 +3,7 @@
*/
package org.richfaces.component;
-import javax.faces.component.UIData;
+import javax.faces.component.UIInput;
import org.ajax4jsf.component.AjaxComponent;
import org.ajax4jsf.event.AjaxListener;
@@ -14,7 +14,7 @@
* @author Anton Belevich
*
*/
-public abstract class UIComboBox extends UIData implements AjaxComponent, AjaxSource {
+public abstract class UIComboBox extends UIInput implements AjaxComponent, AjaxSource{
public void addAjaxListener(final AjaxListener listener) {
addFacesListener(listener);
16 years, 10 months
JBoss Rich Faces SVN: r4961 - in trunk: ui/assembly and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: alexsmirnov
Date: 2007-12-21 14:15:11 -0500 (Fri, 21 Dec 2007)
New Revision: 4961
Modified:
trunk/pom.xml
trunk/ui/assembly/pom.xml
Log:
Fix build errors
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2007-12-21 19:11:57 UTC (rev 4960)
+++ trunk/pom.xml 2007-12-21 19:15:11 UTC (rev 4961)
@@ -55,9 +55,9 @@
<module>cdk</module>
<module>framework</module>
<module>ui</module>
+ <module>extensions</module>
<module>docs</module>
<module>ui/assembly</module>
- <module>extensions</module>
<module>samples</module>
<!--
<module>sandbox</module>
Modified: trunk/ui/assembly/pom.xml
===================================================================
--- trunk/ui/assembly/pom.xml 2007-12-21 19:11:57 UTC (rev 4960)
+++ trunk/ui/assembly/pom.xml 2007-12-21 19:15:11 UTC (rev 4961)
@@ -119,7 +119,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
- <!--version>2.2</version-->
+ <version>2.2</version>
<executions>
<execution>
<id>attach-javadoc</id>
16 years, 10 months
JBoss Rich Faces SVN: r4960 - in trunk/ui/columns: src/main/config/component and 5 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2007-12-21 14:11:57 -0500 (Fri, 21 Dec 2007)
New Revision: 4960
Added:
trunk/ui/columns/src/main/java/org/richfaces/taglib/ColumnsTag.java
trunk/ui/columns/src/main/java/org/richfaces/taglib/ColumnsTagHandler.java
trunk/ui/columns/src/main/java/org/richfaces/taglib/IndexedValueExpression.java
trunk/ui/columns/src/main/java/org/richfaces/taglib/IteratedExpression.java
trunk/ui/columns/src/main/java/org/richfaces/taglib/TypedCollections.java
Removed:
trunk/ui/columns/src/main/java/org/richfaces/component/UIColumns.java
trunk/ui/columns/src/main/java/org/richfaces/tag/
trunk/ui/columns/src/main/java/org/richfaces/taglib/html/facelets/ColumnsHandler.java
Modified:
trunk/ui/columns/pom.xml
trunk/ui/columns/src/main/config/component/columns.xml
trunk/ui/columns/src/test/resources/org/richfaces/facelet/tag/columns.xml
Log:
http://jira.jboss.com/jira/browse/RF-1762
Modified: trunk/ui/columns/pom.xml
===================================================================
--- trunk/ui/columns/pom.xml 2007-12-21 18:18:36 UTC (rev 4959)
+++ trunk/ui/columns/pom.xml 2007-12-21 19:11:57 UTC (rev 4960)
@@ -49,7 +49,6 @@
<groupId>org.richfaces.ui</groupId>
<artifactId>dataTable</artifactId>
<version>${project.version}</version>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>el-impl</groupId>
Modified: trunk/ui/columns/src/main/config/component/columns.xml
===================================================================
--- trunk/ui/columns/src/main/config/component/columns.xml 2007-12-21 18:18:36 UTC (rev 4959)
+++ trunk/ui/columns/src/main/config/component/columns.xml 2007-12-21 19:11:57 UTC (rev 4960)
@@ -1,28 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN" "https://ajax4jsf.dev.java.net/nonav/dtds/component-config.dtd" >
<components>
- <component>
+ <component generate="false">
<name>org.richfaces.Column</name>
<family>org.richfaces.Column</family>
- <classname>org.richfaces.component.html.HtmlColumns</classname>
- <superclass>org.richfaces.component.UIColumns</superclass>
+ <classname>org.richfaces.component.html.HtmlColumn</classname>
<description>
<![CDATA[
- ]]>
+ ]]>
</description>
- <renderer>
- <name>org.richfaces.renderkit.CellRenderer</name>
- </renderer>
- <tag>
+ <tag generate="false">
<name>columns</name>
- <classname>org.richfaces.taglib.ColumnsTag</classname>
- <superclass>
- org.richfaces.tag.AbstractColumnsTag
- </superclass>
+ <classname>
+ org.richfaces.taglib.ColumnsTag
+ </classname>
<test/>
</tag>
<taghandler generate="false">
- <classname>org.richfaces.taglib.html.facelets.ColumnsHandler</classname>
+ <classname>org.richfaces.taglib.ColumnsTagHandler</classname>
</taghandler>
&ui_data_attributes;
&html_universal_attributes;
Deleted: trunk/ui/columns/src/main/java/org/richfaces/component/UIColumns.java
===================================================================
--- trunk/ui/columns/src/main/java/org/richfaces/component/UIColumns.java 2007-12-21 18:18:36 UTC (rev 4959)
+++ trunk/ui/columns/src/main/java/org/richfaces/component/UIColumns.java 2007-12-21 19:11:57 UTC (rev 4960)
@@ -1,40 +0,0 @@
-/**
- * License Agreement.
- *
- * JBoss RichFaces - Ajax4jsf Component Library
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.richfaces.component;
-
-import javax.faces.component.UIData;
-
-import org.richfaces.component.Column;
-
-
-
-/**
- * JSF component class
- *
- */
-public abstract class UIColumns extends UIData implements Column {
-
- public static final String COMPONENT_TYPE = "org.richfaces.Columns";
-
- public static final String COMPONENT_FAMILY = "org.richfaces.Column";
-
-}
Added: trunk/ui/columns/src/main/java/org/richfaces/taglib/ColumnsTag.java
===================================================================
--- trunk/ui/columns/src/main/java/org/richfaces/taglib/ColumnsTag.java (rev 0)
+++ trunk/ui/columns/src/main/java/org/richfaces/taglib/ColumnsTag.java 2007-12-21 19:11:57 UTC (rev 4960)
@@ -0,0 +1,1084 @@
+/*
+ * AbstractColumnsTag.java Date created: 26.11.2007
+ * Last modified by: $Author$
+ * $Revision$ $Date$
+ */
+
+package org.richfaces.taglib;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.el.ELException;
+import javax.el.ValueExpression;
+import javax.el.VariableMapper;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.webapp.UIComponentClassicTagBase;
+import javax.faces.webapp.UIComponentTag;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.JspTagException;
+import javax.servlet.jsp.PageContext;
+import javax.servlet.jsp.tagext.BodyContent;
+import javax.servlet.jsp.tagext.IterationTag;
+
+import org.richfaces.component.UIColumn;
+import org.richfaces.iterator.ForEachIterator;
+import org.richfaces.iterator.SimpleForEachIterator;
+
+/**
+ * Class provides implementation for columns tag
+ *
+ * @author "Andrey Markavtsov"
+ *
+ */
+public class ColumnsTag extends UIComponentClassicTagBase
+ implements IterationTag {
+
+ private static final String COLUMN_COMPONENT_TYPE = UIColumn.COMPONENT_TYPE;
+
+ /** Current column counter */
+ private Integer index = -1;
+
+ /** Data table */
+ private UIComponent dataTable;
+
+ /** Previous created column */
+ private UIComponent previous;
+
+ /**
+ * <p>
+ * The {@link UIComponent} that is being encoded by this tag, if any.
+ * </p>
+ */
+ private UIComponent component = null;
+
+ /** Flag indicates if columns are already created */
+ private boolean created = false;
+
+ /** Iterator for columns's tag value attribute */
+ protected ForEachIterator items; // our 'digested' items
+
+ /** Value attribute value */
+ protected Object rawItems; // our 'raw' items
+
+ /** End attribute - defines count of column if value attr hasn't been defined */
+ private ValueExpression columns;
+
+ /** Begin attribute - defines the first iteration item */
+ private ValueExpression begin;
+
+ /** Begin attribute - defines the last iteration item */
+ private ValueExpression end;
+
+ /** Index attr - defines page variable for current column counter */
+ private ValueExpression _index;
+
+ /** Var attr - defines page variable for current item */
+ private String indexId;
+
+ /** Integer value of end attr. */
+ private Integer _columns;
+
+ /** Integer value of begin attr. */
+ private Integer _begin;
+
+ /** Integer value of end attr. */
+ private Integer _end;
+
+ /** String value of var attr */
+ private String itemId = null;
+
+ /** Expression for var item */
+ private IteratedExpression iteratedExpression;
+
+ /**
+ * <p>
+ * The <code>Lst</code> of {@link UIComponent} ids created or located by
+ * nested {@link UIComponentTag}s while processing the current request.
+ * </p>
+ */
+ // public List<String> createdComponents = null;
+ /**
+ * Caches the nearest enclosing {@link UIComponentRichClassicTagBase} of
+ * this tag. This is used for duplicate id detection.
+ */
+ private UIComponentClassicTagBase parentTag = null;
+
+ /**
+ * <p>
+ * Return the {@link UIComponent} instance that is associated with this tag
+ * instance. This method is designed to be used by tags nested within this
+ * tag, and only returns useful results between the execution of
+ * <code>doStartTag()</code> and <code>doEndTag()</code> on this tag
+ * instance.
+ * </p>
+ */
+ public UIComponent getComponentInstance() {
+
+ return (this.component);
+
+ }
+
+ /**
+ * <p>
+ * The request scope attribute under which a component tag stack for the
+ * current request will be maintained.
+ * </p>
+ */
+ private static final String COMPONENT_TAG_STACK_ATTR = "javax.faces.webapp.COMPONENT_TAG_STACK";
+
+ /**
+ * <p>
+ * The value binding expression (if any) used to wire up this component to a
+ * {@link UIComponent} property of a JavaBean class.
+ * </p>
+ */
+ private ValueExpression binding = null;
+
+ /**
+ * <p>
+ * An override for the rendered attribute associated with our
+ * {@link UIComponent}.
+ * </p>
+ */
+ private ValueExpression rendered = null;
+
+ /**
+ * style CSS style(s) is/are to be applied when this component is rendered
+ */
+ private ValueExpression _style;
+
+ /**
+ * CSS style(s) is/are to be applied when this component is rendered Setter
+ * for style
+ *
+ * @param style -
+ * new value
+ */
+ public void setStyle(ValueExpression __style) {
+ this._style = __style;
+ }
+
+ /**
+ * breakBefore if "true" next column begins from the first row
+ */
+ private ValueExpression _breakBefore;
+
+ /**
+ * if "true" next column begins from the first row Setter for breakBefore
+ *
+ * @param breakBefore -
+ * new value
+ */
+ public void setBreakBefore(ValueExpression __breakBefore) {
+ this._breakBefore = __breakBefore;
+ }
+
+ /**
+ * colspan Corresponds to the HTML colspan attribute
+ */
+ private ValueExpression _colspan;
+
+ /**
+ * Corresponds to the HTML colspan attribute Setter for colspan
+ *
+ * @param colspan -
+ * new value
+ */
+ public void setColspan(ValueExpression __colspan) {
+ this._colspan = __colspan;
+ }
+
+ /**
+ * dir Direction indication for text that does not inherit directionality.
+ * Valid values are "LTR" (left-to-right) and "RTL" (right-to-left)
+ */
+ private ValueExpression _dir;
+
+ /**
+ * Direction indication for text that does not inherit directionality. Valid
+ * values are "LTR" (left-to-right) and "RTL" (right-to-left) Setter for dir
+ *
+ * @param dir -
+ * new value
+ */
+ public void setDir(ValueExpression __dir) {
+ this._dir = __dir;
+ }
+
+ /**
+ * first A zero-relative row number of the first row to display
+ */
+ private ValueExpression _first;
+
+ /**
+ * A zero-relative row number of the first row to display Setter for first
+ *
+ * @param first -
+ * new value
+ */
+ public void setFirst(ValueExpression __first) {
+ this._first = __first;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.faces.webapp.UIComponentClassicTagBase#createComponent(javax.faces.context.FacesContext,
+ * java.lang.String)
+ */
+ @Override
+ protected UIComponent createComponent(FacesContext context, String newId)
+ throws JspException {
+ // TODO Auto-generated method stub
+ return context.getApplication().createComponent(COLUMN_COMPONENT_TYPE);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.faces.webapp.UIComponentTagBase#getComponentType()
+ */
+ @Override
+ public String getComponentType() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.faces.webapp.UIComponentTagBase#getRendererType()
+ */
+ @Override
+ public String getRendererType() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * footerClass Space-separated list of CSS style class(es) that are be
+ * applied to any footer generated for this table
+ */
+ private ValueExpression _footerClass;
+
+ /**
+ * Space-separated list of CSS style class(es) that are be applied to any
+ * footer generated for this table Setter for footerClass
+ *
+ * @param footerClass -
+ * new value
+ */
+ public void setFooterClass(ValueExpression __footerClass) {
+ this._footerClass = __footerClass;
+ }
+
+ /**
+ * headerClass Space-separated list of CSS style class(es) that are be
+ * applied to any header generated for this table
+ */
+ private ValueExpression _headerClass;
+
+ /**
+ * Space-separated list of CSS style class(es) that are be applied to any
+ * header generated for this table Setter for headerClass
+ *
+ * @param headerClass -
+ * new value
+ */
+ public void setHeaderClass(ValueExpression __headerClass) {
+ this._headerClass = __headerClass;
+ }
+
+ /**
+ * lang Code describing the language used in the generated markup for this
+ * component
+ */
+ private ValueExpression _lang;
+
+ /**
+ * Code describing the language used in the generated markup for this
+ * component Setter for lang
+ *
+ * @param lang -
+ * new value
+ */
+ public void setLang(ValueExpression __lang) {
+ this._lang = __lang;
+ }
+
+ /**
+ * rows A number of rows to display, or zero for all remaining rows in the
+ * table
+ */
+ private ValueExpression _rows;
+
+ /**
+ * A number of rows to display, or zero for all remaining rows in the table
+ * Setter for rows
+ *
+ * @param rows -
+ * new value
+ */
+ public void setRows(ValueExpression __rows) {
+ this._rows = __rows;
+ }
+
+ /**
+ * rowspan Corresponds to the HTML rowspan attribute
+ */
+ private ValueExpression _rowspan;
+
+ /**
+ * Corresponds to the HTML rowspan attribute Setter for rowspan
+ *
+ * @param rowspan -
+ * new value
+ */
+ public void setRowspan(ValueExpression __rowspan) {
+ this._rowspan = __rowspan;
+ }
+
+ /**
+ * sortExpression Attribute defines a bean property which is used for
+ * sorting of a column
+ */
+ private ValueExpression _sortExpression;
+
+ /**
+ * Attribute defines a bean property which is used for sorting of a column
+ * Setter for sortExpression
+ *
+ * @param sortExpression -
+ * new value
+ */
+ public void setSortExpression(ValueExpression __sortExpression) {
+ this._sortExpression = __sortExpression;
+ }
+
+ /**
+ * sortable Boolean attribute. If "true" it's possible to sort the column
+ * content after click on the header. Default value is "true"
+ */
+ private ValueExpression _sortable;
+
+ /**
+ * Boolean attribute. If "true" it's possible to sort the column content
+ * after click on the header. Default value is "true" Setter for sortable
+ *
+ * @param sortable -
+ * new value
+ */
+ public void setSortable(ValueExpression __sortable) {
+ this._sortable = __sortable;
+ }
+
+ /**
+ * styleClass Corresponds to the HTML class attribute
+ */
+ private ValueExpression _styleClass;
+
+ /**
+ * Corresponds to the HTML class attribute Setter for styleClass
+ *
+ * @param styleClass -
+ * new value
+ */
+ public void setStyleClass(ValueExpression __styleClass) {
+ this._styleClass = __styleClass;
+ }
+
+ /**
+ * title Advisory title information about markup elements generated for this
+ * component
+ */
+ private ValueExpression _title;
+
+ /**
+ * Advisory title information about markup elements generated for this
+ * component Setter for title
+ *
+ * @param title -
+ * new value
+ */
+ public void setTitle(ValueExpression __title) {
+ this._title = __title;
+ }
+
+ /**
+ * value The current value for this component
+ */
+ private ValueExpression _value;
+
+ /**
+ * The current value for this component Setter for value
+ *
+ * @param value -
+ * new value
+ */
+ public void setValue(ValueExpression __value) {
+ this._value = __value;
+ }
+
+ /**
+ * var A request-scope attribute via which the data object for the current
+ * row will be used when iterating
+ */
+ private ValueExpression _var;
+
+ /**
+ * A request-scope attribute via which the data object for the current row
+ * will be used when iterating Setter for var
+ *
+ * @param var -
+ * new value
+ */
+ public void setVar(ValueExpression __var) {
+ this._var = __var;
+ }
+
+ /*
+ * width Attribute defines width of column. Default value is "100px".
+ */
+ private ValueExpression _width;
+
+ /**
+ * Attribute defines width of column. Default value is "100px". Setter for
+ * width
+ *
+ * @param width -
+ * new value
+ */
+ public void setWidth(ValueExpression __width) {
+ this._width = __width;
+ }
+
+ /**
+ * Default constructor for AbstractColumnsTag class
+ */
+ public ColumnsTag() {
+ super();
+ }
+
+ /**
+ * <p>
+ * Set an override for the rendered attribute.
+ * </p>
+ *
+ * @param rendered
+ * The new value for rendered attribute
+ */
+ public void setRendered(ValueExpression rendered) {
+ this.rendered = rendered;
+ }
+
+ /**
+ * <p>
+ * Set the value expression for our component.
+ * </p>
+ *
+ * @param binding
+ * The new value expression
+ *
+ * @throws JspException
+ * if an error occurs
+ */
+ public void setBinding(ValueExpression binding) throws JspException {
+ this.binding = binding;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.servlet.jsp.tagext.BodyTagSupport#doAfterBody()
+ */
+ @Override
+ public int doAfterBody() throws JspException {
+
+ if (hasNext()) {
+ loop();
+ } else
+ return EVAL_BODY_INCLUDE;
+
+ exposeVariables();
+
+ return EVAL_BODY_AGAIN;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.faces.webapp.UIComponentClassicTagBase#addFacet(java.lang.String)
+ */
+ protected void addFacet(String name) {
+ super.addFacet(name);
+
+ // add created component in facet in childrenList to reduce duplicated
+ // Id exp.
+ if (this.component != null && this.component.getFacets() != null) {
+ Map<String, UIComponent> facets = this.component.getFacets();
+ Iterator<UIComponent> it = facets.values().iterator();
+ while (it.hasNext()) {
+ super.addChild(it.next());
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.servlet.jsp.tagext.BodyTagSupport#doInitBody()
+ */
+ @Override
+ public void doInitBody() throws JspException {
+ // TODO Auto-generated method stub
+ super.doInitBody();
+
+ }
+
+ /**
+ * Removes any attributes that this LoopTagSupport set.
+ *
+ * <p>
+ * These attributes are intended to support scripting variables with NESTED
+ * scope, so we don't want to pollute attribute space by leaving them lying
+ * around.
+ */
+ public void doFinally() {
+ /*
+ * Make sure to un-expose variables, restoring them to their prior
+ * values, if applicable.
+ */
+ unExposeVariables();
+ }
+
+ /**
+ * Removes page attributes that we have exposed and, if applicable, restores
+ * them to their prior values (and scopes).
+ */
+ private void unExposeVariables() {
+ // "nested" variables are now simply removed
+ if (itemId != null) {
+ pageContext.removeAttribute(itemId, PageContext.PAGE_SCOPE);
+ VariableMapper vm = pageContext.getELContext().getVariableMapper();
+ if (vm != null)
+ vm.setVariable(itemId, null);
+ }
+ if (indexId != null) {
+ pageContext.removeAttribute(indexId, PageContext.PAGE_SCOPE);
+ VariableMapper vm = pageContext.getELContext().getVariableMapper();
+ if (vm != null)
+ vm.setVariable(indexId, null);
+ }
+ }
+
+ /**
+ * Method is invoking by each iteration of body again rendering
+ *
+ * @throws JspTagException
+ */
+ private void loop() throws JspTagException {
+ if (!atFirst()) {
+ popUIComponentClassicTagBase();
+ }
+ UIComponent component = createColumn();
+ pushUIComponentClassicTagBase(this);
+ dataTable.getChildren().add(component);
+
+ next();
+ }
+
+ /**
+ * Creates column instance
+ *
+ * @return
+ */
+ private UIComponent createColumn() {
+ UIComponent component = getFacesContext().getApplication()
+ .createComponent(COLUMN_COMPONENT_TYPE);
+ component.setId(getFacesContext().getViewRoot().createUniqueId());
+
+ initColumnByThis(component);
+
+ this.component = component;
+ this.parentTag = getParentUIComponentClassicTagBase(pageContext);
+ this.previous = component;
+
+ return component;
+ }
+
+ /**
+ * Inits column component by columns tag attrs
+ *
+ * @param column
+ */
+ void initColumnByThis(UIComponent column) {
+ column.setValueExpression("style", _style);
+ column.setValueExpression("styleClass", _styleClass);
+ column.setValueExpression("colspan", _colspan);
+ column.setValueExpression("rowspan", _rowspan);
+ column.setValueExpression("breakBefore", _breakBefore);
+ column.setValueExpression("headerClass", _headerClass);
+ column.setValueExpression("footerClass", _footerClass);
+ column.setValueExpression("width", _width);
+ column.setValueExpression("sortable", _sortable);
+ column.setValueExpression("sortExpression", _sortExpression);
+ column.setValueExpression("rendered", rendered);
+ }
+
+ /**
+ * Returns true if this is the first loop of columns tag
+ *
+ * @return
+ */
+ private boolean atFirst() {
+ return (index == -1);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.servlet.jsp.tagext.BodyTagSupport#doStartTag()
+ */
+ @Override
+ public int doStartTag() throws JspException {
+
+ prepare();
+
+ if (created) {
+ dataTable.getChildren().clear();
+ created = false;
+ }
+
+ // get the item we're interested in
+ if (!hasNext()) {
+ return SKIP_BODY;
+ }
+
+ loop();
+
+ exposeVariables();
+
+ return EVAL_BODY_INCLUDE;
+ }
+
+ /**
+ * Method prepares all we need for starting of tag rendering
+ *
+ * @throws JspTagException
+ */
+ private void prepare() throws JspTagException {
+ dataTable = getParentUIComponentClassicTagBase(pageContext)
+ .getComponentInstance();
+ created = (dataTable.getChildCount() > 0);
+
+ initVariables();
+
+ // produce the right sort of ForEachIterator
+ if (_value != null) {
+ // If this is a deferred expression, make a note and get
+ // the 'items' instance.
+ if (_value instanceof ValueExpression) {
+ rawItems = _value.getValue(pageContext.getELContext());
+ }
+ // extract an iterator over the 'items' we've got
+ items = SimpleForEachIterator
+ .supportedTypeForEachIterator(rawItems);
+ } else {
+ // no 'items', so use 'begin' and 'end'
+ items = SimpleForEachIterator.beginEndForEachIterator(_columns - 1);
+ }
+
+ correctFirst();
+
+ /*
+ * ResultSet no more supported in <c:forEach> // step must be 1 when
+ * ResultSet is passed in if (rawItems instanceof ResultSet && step !=
+ * 1) throw new JspTagException(
+ * Resources.getMessage("FOREACH_STEP_NO_RESULTSET"));
+ */
+
+ }
+
+ /**
+ * Extracts integer value from end attr
+ */
+ private void initColumnsCount() {
+ if (columns != null) {
+ if (columns instanceof ValueExpression)
+ try {
+ String t = (String) columns.getValue(getELContext());
+ _columns = Integer.parseInt(t);
+ if (_columns < 0) {
+ _columns = 0; // If end is negative set up zero
+ }
+ } catch (Exception e) {
+ _columns = 0;
+ }
+ } else {
+ _columns = 0;
+ }
+ }
+
+ /**
+ * Extracts string value from var attr
+ */
+ private void initVar() {
+ if (_var != null) {
+ try {
+ itemId = (String) _var.getValue(getELContext());
+ } catch (ClassCastException e) {
+ itemId = null;
+ }
+
+ }
+ }
+
+ /**
+ * Extracts string value from index attr
+ */
+ private void initIndex() {
+ if (_index != null) {
+ try {
+ indexId = (String) _index.getValue(getELContext());
+ } catch (ClassCastException e) {
+ indexId = null;
+ }
+
+ }
+ }
+
+ /**
+ * Extracts string value from index attr
+ */
+ private void initBegin() {
+ _begin = 0;
+ if (begin != null) {
+ try {
+ String t = (String) begin.getValue(getELContext());
+ _begin = Integer.parseInt(t);
+ _begin--; // correct begin value
+ if (_begin < 0) {
+ _begin = 0;
+ }
+ } catch (ClassCastException e) {
+ _begin = 0;
+ }
+
+ }
+ }
+
+ /**
+ * Extracts string value from index attr
+ */
+ private void initEnd() {
+ _end = 0;
+ if (end != null) {
+ try {
+ String t = (String) end.getValue(getELContext());
+ _end = Integer.parseInt(t);
+ if (_end < 0) {
+ _end = 0;
+ }
+ } catch (ClassCastException e) {
+ _end = 0;
+ }
+
+ }
+ }
+
+ /**
+ * Extracts tags attributes values
+ */
+ private void initVariables() {
+ initColumnsCount();
+ initIndex();
+ initVar();
+ initBegin();
+ initEnd();
+ }
+
+ /**
+ * Return true if we didn't complete column's count
+ *
+ * @return
+ * @throws JspTagException
+ */
+ private boolean hasNext() throws JspTagException {
+ if (_end != 0) {
+ return (index < (_end - 1)) ? items.hasNext() : false;
+ } else {
+ return items.hasNext();
+ }
+ }
+
+ /**
+ * Iterate to next column
+ *
+ * @return
+ * @throws JspTagException
+ */
+ private Object next() throws JspTagException {
+ Object o = items.next();
+ index++;
+ return o;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.servlet.jsp.tagext.BodyTagSupport#getBodyContent()
+ */
+ @Override
+ public BodyContent getBodyContent() {
+ // TODO Auto-generated method stub
+ return super.getBodyContent();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.faces.webapp.UIComponentClassicTagBase#setProperties(javax.faces.component.UIComponent)
+ */
+ protected void setProperties(UIComponent component) {
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.faces.webapp.UIComponentClassicTagBase#hasBinding()
+ */
+ protected boolean hasBinding() {
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.faces.webapp.UIComponentClassicTagBase#doEndTag()
+ */
+ @Override
+ public int doEndTag() throws JspException {
+ if (!atFirst()) {
+ popUIComponentClassicTagBase();
+ }
+ return EVAL_PAGE;
+ }
+
+ /**
+ * Sets page request variables
+ *
+ * @throws JspTagException
+ */
+ private void exposeVariables() throws JspTagException {
+
+ /*
+ * We need to support null items returned from next(); we do this simply
+ * by passing such non-items through to the scoped variable as
+ * effectively 'null' (that is, by calling removeAttribute()).
+ *
+ * Also, just to be defensive, we handle the case of a null 'status'
+ * object as well.
+ *
+ * We call getCurrent() and getLoopStatus() (instead of just using
+ * 'item' and 'status') to bridge to subclasses correctly. A subclass
+ * can override getCurrent() or getLoopStatus() but still depend on our
+ * doStartTag() and doAfterBody(), which call this method
+ * (exposeVariables()), to expose 'item' and 'status' correctly.
+ */
+
+ // Set up var variable
+ if (itemId != null) {
+ if (index == null)
+ pageContext.removeAttribute(itemId, PageContext.PAGE_SCOPE);
+ else if (_value != null) {
+ VariableMapper vm = pageContext.getELContext()
+ .getVariableMapper();
+ if (vm != null) {
+ ValueExpression ve = getVarExpression(_value);
+ vm.setVariable(itemId, ve);
+ }
+ } else
+ pageContext.setAttribute(itemId, index);
+ }
+
+ // Set up index variable
+
+ if (indexId != null) {
+ if (index == null)
+ pageContext.removeAttribute(indexId, PageContext.PAGE_SCOPE);
+ else {
+ IteratedIndexExpression indexExpression = new IteratedIndexExpression(
+ index - _begin);
+ VariableMapper vm = pageContext.getELContext()
+ .getVariableMapper();
+ if (vm != null) {
+ vm.setVariable(indexId, indexExpression);
+ }
+ pageContext.setAttribute(indexId, index - _begin);
+ }
+ }
+
+ }
+
+ /**
+ * Return expression for page variables
+ *
+ * @param expr
+ * @return
+ */
+ private ValueExpression getVarExpression(ValueExpression expr) {
+ Object o = expr.getValue(pageContext.getELContext());
+ if (o.getClass().isArray() || o instanceof List) {
+ return new IndexedValueExpression(_value, index);
+ }
+
+ if (o instanceof Collection || o instanceof Iterator
+ || o instanceof Enumeration || o instanceof Map
+ || o instanceof String) {
+
+ if (iteratedExpression == null) {
+ iteratedExpression = new IteratedExpression(_value, getDelims());
+ }
+ return new IteratedValueExpression(iteratedExpression, index);
+ }
+
+ throw new ELException("FOREACH_BAD_ITEMS");
+ }
+
+ /*
+ * Get the delimiter for string tokens. Used only for constructing the
+ * deferred expression for it.
+ */
+ protected String getDelims() {
+ return ",";
+ }
+
+ /**
+ * Inits first iteration item
+ */
+ private void correctFirst() {
+ try {
+ if (items != null) {
+ if (_begin > 0 && (index < (_begin - 1))) {
+ while ((index < (_begin - 1)) && hasNext()) {
+ next();
+ }
+ }
+ }
+ } catch (Exception e) {
+ // TODO: handle exception
+ }
+ }
+
+ /**
+ * <p>
+ * Pop the top {@link UIComponentTag} instance off of our component tag
+ * stack, deleting the stack if this was the last entry.
+ * </p>
+ */
+ private void popUIComponentClassicTagBase() {
+ FacesContext context = FacesContext.getCurrentInstance();
+ Map<String, Object> requestMap = context.getExternalContext()
+ .getRequestMap();
+ List list = (List) requestMap.get(COMPONENT_TAG_STACK_ATTR);
+ if (list != null) {
+ list.remove(list.size() - 1);
+ if (list.size() < 1) {
+ requestMap.remove(COMPONENT_TAG_STACK_ATTR);
+ }
+ }
+
+ }
+
+ /**
+ * <p>
+ * Push the specified {@link UIComponentTag} instance onto our component tag
+ * stack, creating a stack if necessary.
+ * </p>
+ */
+ private void pushUIComponentClassicTagBase(UIComponentClassicTagBase tag) {
+ FacesContext context = FacesContext.getCurrentInstance();
+ Map<String, Object> requestMap = context.getExternalContext()
+ .getRequestMap();
+ List<UIComponentClassicTagBase> list = TypedCollections
+ .dynamicallyCastList((List) requestMap
+ .get(COMPONENT_TAG_STACK_ATTR),
+ UIComponentClassicTagBase.class);
+ if (list == null) {
+ // noinspection CollectionWithoutInitialCapacity
+ list = new ArrayList<UIComponentClassicTagBase>();
+ requestMap.put(COMPONENT_TAG_STACK_ATTR, list);
+ }
+ list.add(tag);
+
+ }
+
+ /**
+ * @return the begin
+ */
+ public ValueExpression getBegin() {
+ return begin;
+ }
+
+ /**
+ * @param begin
+ * the begin to set
+ */
+ public void setBegin(ValueExpression begin) {
+ this.begin = begin;
+ }
+
+ /**
+ * @return the columns
+ */
+ public ValueExpression getColumns() {
+ return columns;
+ }
+
+ /**
+ * @param columns
+ * the columns to set
+ */
+ public void setColumns(ValueExpression columns) {
+ this.columns = columns;
+ }
+
+ /**
+ * @return the index
+ */
+ public ValueExpression getIndex() {
+ return _index;
+ }
+
+ /**
+ * @param index
+ * the index to set
+ */
+ public void setIndex(ValueExpression index) {
+ this._index = index;
+ }
+
+ /**
+ * @return the end
+ */
+ public ValueExpression getEnd() {
+ return end;
+ }
+
+ /**
+ * @param end
+ * the end to set
+ */
+ public void setEnd(ValueExpression end) {
+ this.end = end;
+ }
+
+}
+
Added: trunk/ui/columns/src/main/java/org/richfaces/taglib/ColumnsTagHandler.java
===================================================================
--- trunk/ui/columns/src/main/java/org/richfaces/taglib/ColumnsTagHandler.java (rev 0)
+++ trunk/ui/columns/src/main/java/org/richfaces/taglib/ColumnsTagHandler.java 2007-12-21 19:11:57 UTC (rev 4960)
@@ -0,0 +1,455 @@
+/*
+ * ColumnsHandler.java Date created: 07.12.2007
+ * Last modified by: $Author$
+ * $Revision$ $Date$
+ */
+
+package org.richfaces.taglib;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.el.ELException;
+import javax.el.ValueExpression;
+import javax.el.VariableMapper;
+import javax.faces.FacesException;
+import javax.faces.component.UIComponent;
+import javax.servlet.jsp.JspTagException;
+
+import org.richfaces.iterator.ForEachIterator;
+import org.richfaces.iterator.SimpleForEachIterator;
+
+import com.sun.facelets.FaceletContext;
+import com.sun.facelets.tag.TagAttribute;
+import com.sun.facelets.tag.jsf.ComponentConfig;
+import com.sun.facelets.tag.jsf.ComponentHandler;
+
+/**
+ * TODO Class description goes here.
+ *
+ * @author "Andrey Markavtsov"
+ *
+ */
+public class ColumnsTagHandler extends ComponentHandler {
+
+ /** value attribute */
+ private TagAttribute value;
+
+ /** end attribute */
+ private TagAttribute columns;
+
+ /** begin attribute */
+ private TagAttribute begin;
+
+ /** var attribute */
+ private TagAttribute var;
+
+ /** index attribute */
+ private TagAttribute index;
+
+ /** end attribute */
+ private TagAttribute end;
+
+ /** Iterator for columns's tag value attribute */
+ protected ForEachIterator items; // our 'digested' items
+
+ /** Value attribute value */
+ protected Object rawItems; // our 'raw' items
+
+ /** Var attr - defines page variable for current item */
+ private String _indexId;
+
+ /** Integer value begin attr */
+ private Integer _begin;
+
+ /** Integer value end attr */
+ private Integer _end;
+
+ /** Integer value of end attr. */
+ private Integer _columns;
+
+ /** String value of var attr */
+ private String _itemId = null;
+
+ /** Current column counter */
+ private Integer _index = 0;
+
+ /** Prepared flag */
+ private boolean prepared = false;
+
+ /** Variables counter */
+ private int vCounter;
+
+ /** Expression for var item */
+ private IteratedExpression iteratedExpression;
+
+ /**
+ * TODO Description goes here.
+ *
+ * @param config
+ */
+ public ColumnsTagHandler(ComponentConfig config) {
+ super(config);
+
+ }
+
+ /**
+ * Extracts tags attributes values
+ */
+ private void initVariables(FaceletContext ctx) {
+ initColumnsCount(ctx);
+ initIndex(ctx);
+ initVar(ctx);
+ initBegin(ctx);
+ initEnd(ctx);
+ }
+
+ /**
+ * Method prepares all we need for starting of tag rendering
+ *
+ * @throws JspTagException
+ */
+ private void prepare(FaceletContext ctx) {
+
+ initVariables(ctx);
+
+ try {
+
+ this.value = getAttribute("value");
+
+ // produce the right sort of ForEachIterator
+ if (value != null) {
+ // If this is a deferred expression, make a note and get
+ // the 'items' instance.
+
+ rawItems = value.getObject(ctx);
+
+ // extract an iterator over the 'items' we've got
+ items = SimpleForEachIterator
+ .supportedTypeForEachIterator(rawItems);
+ } else {
+ // no 'items', so use 'begin' and 'end'
+ items = SimpleForEachIterator
+ .beginEndForEachIterator(_columns - 1);
+ }
+ } catch (Exception e) {
+ // TODO: handle exception
+ }
+
+ correctFirst(ctx);
+
+ if (hasNext()) {
+ exposeVariables(ctx, 0);
+ next(ctx);
+ }
+
+ }
+
+ /**
+ * Inits first iteration item
+ */
+ private void correctFirst(FaceletContext ctx) {
+ if (items != null) {
+ if (_begin > 0 && (_index < _begin)) {
+ while ((_index < _begin && hasNext())) {
+ next(ctx);
+ }
+ if (!hasNext()) {
+ _index = 0;
+ }
+ }
+ }
+ }
+
+ /**
+ * Return true if we didn't complete column's count
+ *
+ * @return
+ * @throws JspTagException
+ */
+ private boolean hasNext() {
+ try {
+ if (_end != 0) {
+ return (_index < _end) ? items.hasNext() : false;
+ } else {
+ return items.hasNext();
+ }
+ } catch (Exception e) {
+ return false;
+ }
+
+ }
+
+ /**
+ * Iterate to next column
+ *
+ * @return
+ * @throws JspTagException
+ */
+ private Object next(FaceletContext ctx) {
+ try {
+ Object o = items.next();
+ _index++;
+ return o;
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ /**
+ * Extracts integer value from end attr
+ */
+ private void initColumnsCount(FaceletContext ctx) {
+ this.columns = getAttribute("columns");
+ if (columns != null) {
+ try {
+ _columns = Integer.parseInt((String) columns.getObject(ctx));
+ if (_columns < 0) {
+ _columns = 0; // If end is negative set up zero
+ }
+ } catch (Exception e) {
+ _columns = 0;
+ }
+ } else {
+ _columns = 0;
+ }
+ }
+
+ /**
+ * Extracts integer value from begin attr
+ */
+ private void initBegin(FaceletContext ctx) {
+ this.begin = getAttribute("begin");
+ if (begin != null) {
+ try {
+ _begin = Integer.parseInt((String) begin.getObject(ctx));
+ _begin--; // - 1
+ if (_begin < 0) {
+ _begin = 0; // If end is negative set up zero
+ }
+ } catch (Exception e) {
+ _begin = 0;
+ }
+ } else {
+ _begin = 0;
+ }
+ }
+
+ /**
+ * Extracts integer value from end attr
+ */
+ private void initEnd(FaceletContext ctx) {
+ this.end = getAttribute("end");
+ if (end != null) {
+ try {
+ _end = Integer.parseInt((String) end.getObject(ctx));
+ if (_end < 0) {
+ _end = 0; // If end is negative set up zero
+ }
+ } catch (Exception e) {
+ _end = 0;
+ }
+ } else {
+ _end = 0;
+ }
+ }
+
+ /**
+ * Extracts string value from var attr
+ */
+ private void initVar(FaceletContext ctx) {
+ this.var = getAttribute("var");
+ if (var != null) {
+ try {
+ _itemId = (String) var.getObject(ctx);
+ } catch (ClassCastException e) {
+ _itemId = null;
+ }
+
+ }
+ }
+
+ /**
+ * Extracts string value from index attr
+ */
+ private void initIndex(FaceletContext ctx) {
+ this.index = getAttribute("index");
+ if (index != null) {
+ try {
+ _indexId = (String) index.getObject(ctx);
+ } catch (ClassCastException e) {
+ _indexId = null;
+ }
+
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.sun.facelets.tag.jsf.ComponentHandler#applyNextHandler(com.sun.facelets.FaceletContext,
+ * javax.faces.component.UIComponent)
+ */
+ @Override
+ protected void applyNextHandler(FaceletContext ctx, UIComponent c)
+ throws IOException, FacesException, ELException {
+ // TODO Auto-generated method stub
+ super.applyNextHandler(ctx, c);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.sun.facelets.tag.jsf.ComponentHandler#onComponentCreated(com.sun.facelets.FaceletContext,
+ * javax.faces.component.UIComponent,
+ * javax.faces.component.UIComponent)
+ */
+ @Override
+ protected void onComponentCreated(FaceletContext ctx, UIComponent c,
+ UIComponent parent) {
+ // prepare if did not
+ if (!prepared) {
+ prepare(ctx);
+ prepared = true;
+ }
+
+ // for each
+ try {
+ if (hasNext()) {
+ next(ctx);
+ super.apply(ctx, parent);
+ } else {
+ vCounter = 1;
+ }
+ } catch (Exception e) {
+ // TODO: handle exception
+ }
+ }
+
+ /**
+ * Sets page request variables
+ *
+ * @throws JspTagException
+ */
+ private void exposeVariables(FaceletContext ctx, int k) {
+
+ VariableMapper vm = ctx.getVariableMapper();
+
+ if (_itemId != null) {
+ if (vm != null) {
+ if (value != null) {
+ ValueExpression srcVE = value.getValueExpression(ctx,
+ Object.class);
+ ValueExpression ve = getVarExpression(ctx, srcVE, k
+ + _begin);
+ vm.setVariable(_itemId, ve);
+ }
+ }
+
+ }
+
+ // Set up index variable
+
+ if (_indexId != null) {
+ if (vm != null) {
+ ValueExpression ve = new IteratedIndexExpression(k);
+ vm.setVariable(_indexId, ve);
+ }
+
+ }
+
+ }
+
+ /**
+ * Removes page attributes that we have exposed and, if applicable, restores
+ * them to their prior values (and scopes).
+ */
+ private void unExposeVariables(FaceletContext ctx) {
+ VariableMapper vm = ctx.getVariableMapper();
+ // "nested" variables are now simply removed
+ if (_itemId != null) {
+ if (vm != null)
+ vm.setVariable(_itemId, null);
+ }
+ if (_indexId != null) {
+ if (vm != null)
+ vm.setVariable(_indexId, null);
+ }
+ }
+
+ /**
+ * Return expression for page variables
+ *
+ * @param expr
+ * @return
+ */
+ private ValueExpression getVarExpression(FaceletContext ctx,
+ ValueExpression expr, int k) {
+ Object o = expr.getValue(ctx.getFacesContext().getELContext());
+ if (o.getClass().isArray() || o instanceof List) {
+ return new IndexedValueExpression(expr, k);
+ }
+
+ if (o instanceof Collection || o instanceof Iterator
+ || o instanceof Enumeration || o instanceof Map
+ || o instanceof String) {
+
+ if (iteratedExpression == null) {
+ iteratedExpression = new IteratedExpression(expr, ",");
+ }
+ return new IteratedValueExpression(iteratedExpression, k);
+ }
+
+ throw new ELException("FOREACH_BAD_ITEMS");
+ }
+
+ /**
+ * Returns true if this is the first loop of columns tag
+ *
+ * @return
+ */
+ private boolean atFirst() {
+ return (_index == 0);
+ }
+
+ /**
+ * Release iteration variables
+ */
+ private void release() {
+ this.items = null;
+ this._index = 0;
+ this.prepared = false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.sun.facelets.tag.jsf.ComponentHandler#onComponentPopulated(com.sun.facelets.FaceletContext,
+ * javax.faces.component.UIComponent,
+ * javax.faces.component.UIComponent)
+ */
+ @Override
+ protected void onComponentPopulated(FaceletContext ctx, UIComponent c,
+ UIComponent parent) {
+
+ // remove created component if columns count is zero
+ if (atFirst()) {
+ c.setRendered(false);
+ }
+
+ if ((vCounter == (_index - _begin)) || atFirst()) {
+ release();
+ unExposeVariables(ctx);
+ return;
+ }
+
+ exposeVariables(ctx, vCounter);
+ vCounter++;
+
+ }
+
+}
Added: trunk/ui/columns/src/main/java/org/richfaces/taglib/IndexedValueExpression.java
===================================================================
--- trunk/ui/columns/src/main/java/org/richfaces/taglib/IndexedValueExpression.java (rev 0)
+++ trunk/ui/columns/src/main/java/org/richfaces/taglib/IndexedValueExpression.java 2007-12-21 19:11:57 UTC (rev 4960)
@@ -0,0 +1,130 @@
+package org.richfaces.taglib;
+
+import javax.el.ELContext;
+import javax.el.ValueExpression;
+
+/**
+ * @author Jacob Hookom
+ * @version $Id: IndexedValueExpression.java,v 1.3 2005/08/24 04:38:52 jhook Exp $
+ */
+final class IndexedValueExpression extends ValueExpression {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ private final Integer i;
+
+ private final ValueExpression orig;
+
+ /**
+ *
+ */
+ public IndexedValueExpression(ValueExpression orig, int i) {
+ this.i = new Integer(i);
+ this.orig = orig;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.el.ValueExpression#getValue(javax.el.ELContext)
+ */
+ public Object getValue(ELContext context) {
+ Object base = this.orig.getValue(context);
+ if (base != null) {
+ context.setPropertyResolved(false);
+ return context.getELResolver().getValue(context, base, i);
+ }
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.el.ValueExpression#setValue(javax.el.ELContext,
+ * java.lang.Object)
+ */
+ public void setValue(ELContext context, Object value) {
+ Object base = this.orig.getValue(context);
+ if (base != null) {
+ context.setPropertyResolved(false);
+ context.getELResolver().setValue(context, base, i, value);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.el.ValueExpression#isReadOnly(javax.el.ELContext)
+ */
+ public boolean isReadOnly(ELContext context) {
+ Object base = this.orig.getValue(context);
+ if (base != null) {
+ context.setPropertyResolved(false);
+ return context.getELResolver().isReadOnly(context, base, i);
+ }
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.el.ValueExpression#getType(javax.el.ELContext)
+ */
+ public Class getType(ELContext context) {
+ Object base = this.orig.getValue(context);
+ if (base != null) {
+ context.setPropertyResolved(false);
+ return context.getELResolver().getType(context, base, i);
+ }
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.el.ValueExpression#getExpectedType()
+ */
+ public Class getExpectedType() {
+ return Object.class;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.el.Expression#getExpressionString()
+ */
+ public String getExpressionString() {
+ return this.orig.getExpressionString();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.el.Expression#equals(java.lang.Object)
+ */
+ public boolean equals(Object obj) {
+ return this.orig.equals(obj);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.el.Expression#hashCode()
+ */
+ public int hashCode() {
+ return this.orig.hashCode();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.el.Expression#isLiteralText()
+ */
+ public boolean isLiteralText() {
+ return false;
+ }
+
+}
Added: trunk/ui/columns/src/main/java/org/richfaces/taglib/IteratedExpression.java
===================================================================
--- trunk/ui/columns/src/main/java/org/richfaces/taglib/IteratedExpression.java (rev 0)
+++ trunk/ui/columns/src/main/java/org/richfaces/taglib/IteratedExpression.java 2007-12-21 19:11:57 UTC (rev 4960)
@@ -0,0 +1,206 @@
+package org.richfaces.taglib;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import javax.el.ELContext;
+import javax.el.ELException;
+import javax.el.ValueExpression;
+
+/**
+ * @author Kin-man Chung
+ * @version $Id: IteratedExpression.java,v 1.3 2005/12/08 01:20:43 kchung Exp $
+ */
+final class IteratedExpression {
+ private static final long serialVersionUID = 1L;
+ protected final ValueExpression orig;
+ protected final String delims;
+
+ private Object base;
+ private int index;
+ private Iterator iter;
+
+ public IteratedExpression(ValueExpression orig, String delims) {
+ this.orig = orig;
+ this.delims = delims;
+ }
+
+ /**
+ * Evaluates the stored ValueExpression and return the indexed item.
+ *
+ * @param context
+ * The ELContext used to evaluate the ValueExpression
+ * @param i
+ * The index of the item to be retrieved
+ */
+ public Object getItem(ELContext context, int i) {
+
+ if (base == null) {
+ base = orig.getValue(context);
+ if (base == null) {
+ return null;
+ }
+ iter = toIterator(base);
+ index = 0;
+ }
+ if (index > i) {
+ // Restart from index 0
+ iter = toIterator(base);
+ index = 0;
+ }
+ while (iter.hasNext()) {
+ Object item = iter.next();
+ if (index++ == i) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ public ValueExpression getValueExpression() {
+ return orig;
+ }
+
+ private Iterator toIterator(final Object obj) {
+
+ Iterator iter;
+ if (obj instanceof String) {
+ iter = toIterator(new StringTokenizer((String) obj, delims));
+ } else if (obj instanceof Iterator) {
+ iter = (Iterator) obj;
+ } else if (obj instanceof Collection) {
+ iter = toIterator(((Collection) obj).iterator());
+ } else if (obj instanceof Enumeration) {
+ iter = toIterator((Enumeration) obj);
+ } else if (obj instanceof Map) {
+ iter = ((Map) obj).entrySet().iterator();
+ } else {
+ throw new ELException("Bad items");
+ }
+ return iter;
+ }
+
+ private Iterator toIterator(final Enumeration obj) {
+ return new Iterator() {
+ public boolean hasNext() {
+ return obj.hasMoreElements();
+ }
+
+ public Object next() {
+ return obj.nextElement();
+ }
+
+ public void remove() {
+ }
+ };
+ }
+}
+
+/**
+ * @author Kin-man Chung
+ * @version $Id: IteratedValueExpression.java,v 1.2 2005/12/08 01:20:43 kchung
+ * Exp $
+ */
+final class IteratedValueExpression extends ValueExpression implements
+ Serializable {
+
+ private static final long serialVersionUID = 1L;
+ protected final int i;
+ protected final IteratedExpression iteratedExpression;
+
+ public IteratedValueExpression(IteratedExpression iteratedExpr, int i) {
+ this.i = i;
+ this.iteratedExpression = iteratedExpr;
+ }
+
+ public Object getValue(ELContext context) {
+ return iteratedExpression.getItem(context, i);
+ }
+
+ public void setValue(ELContext context, Object value) {
+ }
+
+ public boolean isReadOnly(ELContext context) {
+ return true;
+ }
+
+ public Class getType(ELContext context) {
+ return null;
+ }
+
+ public Class getExpectedType() {
+ return Object.class;
+ }
+
+ public String getExpressionString() {
+ return iteratedExpression.getValueExpression().getExpressionString();
+ }
+
+ public boolean equals(Object obj) {
+ return iteratedExpression.getValueExpression().equals(obj);
+ }
+
+ public int hashCode() {
+ return iteratedExpression.getValueExpression().hashCode();
+ }
+
+ public boolean isLiteralText() {
+ return false;
+ }
+}
+
+/**
+ * @author Andrey Markavtsov
+ * @version $Id: IteratedIndexExpression.java,v 1.2 2007/12/06 01:20:43
+ *
+ */
+final class IteratedIndexExpression extends ValueExpression implements
+ Serializable {
+
+ private static final long serialVersionUID = 1L;
+ protected final Integer i;
+
+ public IteratedIndexExpression(int i) {
+ this.i = i;
+ }
+
+ public Object getValue(ELContext context) {
+ return i;
+ }
+
+ public void setValue(ELContext context, Object value) {
+ }
+
+ public boolean isReadOnly(ELContext context) {
+ return true;
+ }
+
+ public Class getType(ELContext context) {
+ return null;
+ }
+
+ public Class getExpectedType() {
+ return Object.class;
+ }
+
+ public String getExpressionString() {
+ return i.toString();
+ }
+
+ public boolean equals(Object obj) {
+ return i.equals(obj);
+ }
+
+ public int hashCode() {
+ return i.hashCode();
+ }
+
+ public boolean isLiteralText() {
+ return false;
+ }
+}
+
Added: trunk/ui/columns/src/main/java/org/richfaces/taglib/TypedCollections.java
===================================================================
--- trunk/ui/columns/src/main/java/org/richfaces/taglib/TypedCollections.java (rev 0)
+++ trunk/ui/columns/src/main/java/org/richfaces/taglib/TypedCollections.java 2007-12-21 19:11:57 UTC (rev 4960)
@@ -0,0 +1,117 @@
+package org.richfaces.taglib;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+class TypedCollections {
+
+ /**
+ * Dynamically check that the members of the collection are all instances of
+ * the given type (or null).
+ */
+ private static boolean checkCollectionMembers(Collection<?> c, Class<?> type) {
+ for (Object element : c) {
+ if (element != null && !type.isInstance(element)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Dynamically check that the members of the collection are all instances of
+ * the given type (or null), and that the collection itself is of the given
+ * collection type.
+ *
+ * @param <E>
+ * the collection's element type
+ * @param c
+ * the collection to cast
+ * @param type
+ * the class of the collection's element type.
+ * @return the dynamically-type checked collection.
+ * @throws java.lang.ClassCastException
+ */
+ @SuppressWarnings("unchecked")
+ static <E, TypedC extends Collection<E>> TypedC dynamicallyCastCollection(
+ Collection<?> c, Class<E> type, Class<TypedC> collectionType) {
+ if (c == null)
+ return null;
+ if (!collectionType.isInstance(c))
+ throw new ClassCastException(c.getClass().getName());
+ assert checkCollectionMembers(c, type) : "The collection contains members with a type other than "
+ + type.getName();
+
+ return collectionType.cast(c);
+ }
+
+ /**
+ * Dynamically check that the members of the list are all instances of the
+ * given type (or null).
+ *
+ * @param <E>
+ * the list's element type
+ * @param list
+ * the list to cast
+ * @param type
+ * the class of the list's element type.
+ * @return the dynamically-type checked list.
+ * @throws java.lang.ClassCastException
+ */
+ @SuppressWarnings("unchecked")
+ static <E> List<E> dynamicallyCastList(List<?> list, Class<E> type) {
+ return dynamicallyCastCollection(list, type, List.class);
+ }
+
+ /**
+ * Dynamically check that the members of the set are all instances of the
+ * given type (or null).
+ *
+ * @param <E>
+ * the set's element type
+ * @param set
+ * the set to cast
+ * @param type
+ * the class of the set's element type.
+ * @return the dynamically-type checked set.
+ * @throws java.lang.ClassCastException
+ */
+ @SuppressWarnings("unchecked")
+ static <E> Set<E> dynamicallyCastSet(Set<?> set, Class<E> type) {
+ return dynamicallyCastCollection(set, type, Set.class);
+ }
+
+ /**
+ * Dynamically check that the keys and values in the map are all instances
+ * of the correct types (or null).
+ *
+ * @param <K>
+ * the map's key type
+ * @param <V>
+ * the map's value type
+ * @param map
+ * the map to cast
+ * @param keyType
+ * the class of the map's key type.
+ * @param keyType
+ * the class of the map's key type.
+ * @return the dynamically-type checked map.
+ * @throws java.lang.ClassCastException
+ */
+ @SuppressWarnings("unchecked")
+ static <K, V> Map<K, V> dynamicallyCastMap(Map<?, ?> map, Class<K> keyType,
+ Class<V> valueType) {
+ if (map == null) {
+ return null;
+ }
+ assert checkCollectionMembers(map.keySet(), keyType) : "The map contains keys with a type other than "
+ + keyType.getName();
+ assert checkCollectionMembers(map.values(), valueType) : "The map contains values with a type other than "
+ + valueType.getName();
+
+ return (Map<K, V>) map;
+ }
+}
+
Deleted: trunk/ui/columns/src/main/java/org/richfaces/taglib/html/facelets/ColumnsHandler.java
===================================================================
--- trunk/ui/columns/src/main/java/org/richfaces/taglib/html/facelets/ColumnsHandler.java 2007-12-21 18:18:36 UTC (rev 4959)
+++ trunk/ui/columns/src/main/java/org/richfaces/taglib/html/facelets/ColumnsHandler.java 2007-12-21 19:11:57 UTC (rev 4960)
@@ -1,780 +0,0 @@
-/*
- * ColumnsHandler.java Date created: 07.12.2007
- * Last modified by: $Author$
- * $Revision$ $Date$
- */
-
-package org.richfaces.taglib.html.facelets;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.ValueExpression;
-import javax.el.VariableMapper;
-import javax.faces.FacesException;
-import javax.faces.component.UIComponent;
-import javax.servlet.jsp.JspTagException;
-import javax.servlet.jsp.PageContext;
-
-import org.richfaces.iterator.ForEachIterator;
-import org.richfaces.iterator.SimpleForEachIterator;
-
-import com.sun.facelets.FaceletContext;
-import com.sun.facelets.tag.TagAttribute;
-import com.sun.facelets.tag.jsf.ComponentConfig;
-import com.sun.facelets.tag.jsf.ComponentHandler;
-
-/**
- * TODO Class description goes here.
- *
- * @author "Andrey Markavtsov"
- *
- */
-public class ColumnsHandler extends ComponentHandler {
-
- /** value attribute */
- private TagAttribute value;
-
- /** end attribute */
- private TagAttribute columns;
-
- /** begin attribute */
- private TagAttribute begin;
-
- /** var attribute */
- private TagAttribute var;
-
- /** index attribute */
- private TagAttribute index;
-
- /** end attribute */
- private TagAttribute end;
-
- /** Iterator for columns's tag value attribute */
- protected ForEachIterator items; // our 'digested' items
-
- /** Value attribute value */
- protected Object rawItems; // our 'raw' items
-
- /** Var attr - defines page variable for current item */
- private String _indexId;
-
- /** Integer value begin attr */
- private Integer _begin;
-
- /** Integer value end attr */
- private Integer _end;
-
- /** Integer value of end attr. */
- private Integer _columns;
-
- /** String value of var attr */
- private String _itemId = null;
-
- /** Current column counter */
- private Integer _index = 0;
-
- /** Prepared flag */
- private boolean prepared = false;
-
- /** Variables counter */
- private int vCounter;
-
- /** Expression for var item */
- private IteratedExpression iteratedExpression;
-
- /**
- * TODO Description goes here.
- *
- * @param config
- */
- public ColumnsHandler(ComponentConfig config) {
- super(config);
-
- }
-
- /**
- * Extracts tags attributes values
- */
- private void initVariables(FaceletContext ctx) {
- initColumnsCount(ctx);
- initIndex(ctx);
- initVar(ctx);
- initBegin(ctx);
- initEnd(ctx);
- }
-
- /**
- * Method prepares all we need for starting of tag rendering
- *
- * @throws JspTagException
- */
- private void prepare(FaceletContext ctx) {
-
- initVariables(ctx);
-
- try {
-
- this.value = getAttribute("value");
-
- // produce the right sort of ForEachIterator
- if (value != null) {
- // If this is a deferred expression, make a note and get
- // the 'items' instance.
-
- rawItems = value.getObject(ctx);
-
- // extract an iterator over the 'items' we've got
- items = SimpleForEachIterator
- .supportedTypeForEachIterator(rawItems);
- } else {
- // no 'items', so use 'begin' and 'end'
- items = SimpleForEachIterator
- .beginEndForEachIterator(_columns - 1);
- }
- } catch (Exception e) {
- // TODO: handle exception
- }
-
- correctFirst(ctx);
-
- if (hasNext()) {
- exposeVariables(ctx, 0);
- next(ctx);
- }
-
- }
-
- /**
- * Inits first iteration item
- */
- private void correctFirst(FaceletContext ctx) {
- if (items != null) {
- if (_begin > 0 && (_index < _begin)) {
- while ((_index < _begin && hasNext())) {
- next(ctx);
- }
- if (!hasNext()) {
- _index = 0;
- }
- }
- }
- }
-
- /**
- * Return true if we didn't complete column's count
- *
- * @return
- * @throws JspTagException
- */
- private boolean hasNext() {
- try {
- if (_end != 0) {
- return (_index < _end) ? items.hasNext() : false;
- } else {
- return items.hasNext();
- }
- } catch (Exception e) {
- return false;
- }
-
- }
-
- /**
- * Iterate to next column
- *
- * @return
- * @throws JspTagException
- */
- private Object next(FaceletContext ctx) {
- try {
- Object o = items.next();
- _index++;
- return o;
- } catch (Exception e) {
- return null;
- }
- }
-
- /**
- * Extracts integer value from end attr
- */
- private void initColumnsCount(FaceletContext ctx) {
- this.columns = getAttribute("columns");
- if (columns != null) {
- try {
- _columns = Integer.parseInt((String) columns.getObject(ctx));
- if (_columns < 0) {
- _columns = 0; // If end is negative set up zero
- }
- } catch (Exception e) {
- _columns = 0;
- }
- } else {
- _columns = 0;
- }
- }
-
- /**
- * Extracts integer value from begin attr
- */
- private void initBegin(FaceletContext ctx) {
- this.begin = getAttribute("begin");
- if (begin != null) {
- try {
- _begin = Integer.parseInt((String) begin.getObject(ctx));
- _begin--; // - 1
- if (_begin < 0) {
- _begin = 0; // If end is negative set up zero
- }
- } catch (Exception e) {
- _begin = 0;
- }
- } else {
- _begin = 0;
- }
- }
-
- /**
- * Extracts integer value from end attr
- */
- private void initEnd(FaceletContext ctx) {
- this.end = getAttribute("end");
- if (end != null) {
- try {
- _end = Integer.parseInt((String) end.getObject(ctx));
- if (_end < 0) {
- _end = 0; // If end is negative set up zero
- }
- } catch (Exception e) {
- _end = 0;
- }
- } else {
- _end = 0;
- }
- }
-
- /**
- * Extracts string value from var attr
- */
- private void initVar(FaceletContext ctx) {
- this.var = getAttribute("var");
- if (var != null) {
- try {
- _itemId = (String) var.getObject(ctx);
- } catch (ClassCastException e) {
- _itemId = null;
- }
-
- }
- }
-
- /**
- * Extracts string value from index attr
- */
- private void initIndex(FaceletContext ctx) {
- this.index = getAttribute("index");
- if (index != null) {
- try {
- _indexId = (String) index.getObject(ctx);
- } catch (ClassCastException e) {
- _indexId = null;
- }
-
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see com.sun.facelets.tag.jsf.ComponentHandler#applyNextHandler(com.sun.facelets.FaceletContext,
- * javax.faces.component.UIComponent)
- */
- @Override
- protected void applyNextHandler(FaceletContext ctx, UIComponent c)
- throws IOException, FacesException, ELException {
- // TODO Auto-generated method stub
- super.applyNextHandler(ctx, c);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see com.sun.facelets.tag.jsf.ComponentHandler#onComponentCreated(com.sun.facelets.FaceletContext,
- * javax.faces.component.UIComponent,
- * javax.faces.component.UIComponent)
- */
- @Override
- protected void onComponentCreated(FaceletContext ctx, UIComponent c,
- UIComponent parent) {
- // prepare if did not
- if (!prepared) {
- prepare(ctx);
- prepared = true;
- }
-
- // for each
- try {
- if (hasNext()) {
- next(ctx);
- super.apply(ctx, parent);
- } else {
- vCounter = 1;
- }
- } catch (Exception e) {
- // TODO: handle exception
- }
- }
-
- /**
- * Sets page request variables
- *
- * @throws JspTagException
- */
- private void exposeVariables(FaceletContext ctx, int k) {
-
- VariableMapper vm = ctx.getVariableMapper();
-
- if (_itemId != null) {
- if (vm != null) {
- if (value != null) {
- ValueExpression srcVE = value.getValueExpression(ctx,
- Object.class);
- ValueExpression ve = getVarExpression(ctx, srcVE, k
- + _begin);
- vm.setVariable(_itemId, ve);
- }
- }
-
- }
-
- // Set up index variable
-
- if (_indexId != null) {
- if (vm != null) {
- ValueExpression ve = new IteratedIndexExpression(k);
- vm.setVariable(_indexId, ve);
- }
-
- }
-
- }
-
- /**
- * Removes page attributes that we have exposed and, if applicable, restores
- * them to their prior values (and scopes).
- */
- private void unExposeVariables(FaceletContext ctx) {
- VariableMapper vm = ctx.getVariableMapper();
- // "nested" variables are now simply removed
- if (_itemId != null) {
- if (vm != null)
- vm.setVariable(_itemId, null);
- }
- if (_indexId != null) {
- if (vm != null)
- vm.setVariable(_indexId, null);
- }
- }
-
- /**
- * Return expression for page variables
- *
- * @param expr
- * @return
- */
- private ValueExpression getVarExpression(FaceletContext ctx,
- ValueExpression expr, int k) {
- Object o = expr.getValue(ctx.getFacesContext().getELContext());
- if (o.getClass().isArray() || o instanceof List) {
- return new IndexedValueExpression(expr, k);
- }
-
- if (o instanceof Collection || o instanceof Iterator
- || o instanceof Enumeration || o instanceof Map
- || o instanceof String) {
-
- if (iteratedExpression == null) {
- iteratedExpression = new IteratedExpression(expr, ",");
- }
- return new IteratedValueExpression(iteratedExpression, k);
- }
-
- throw new ELException("FOREACH_BAD_ITEMS");
- }
-
- /**
- * Returns true if this is the first loop of columns tag
- *
- * @return
- */
- private boolean atFirst() {
- return (_index == 0);
- }
-
- /**
- * Release iteration variables
- */
- private void release() {
- this.items = null;
- this._index = 0;
- this.prepared = false;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see com.sun.facelets.tag.jsf.ComponentHandler#onComponentPopulated(com.sun.facelets.FaceletContext,
- * javax.faces.component.UIComponent,
- * javax.faces.component.UIComponent)
- */
- @Override
- protected void onComponentPopulated(FaceletContext ctx, UIComponent c,
- UIComponent parent) {
-
- // remove created component if columns count is zero
- if (atFirst()) {
- c.setRendered(false);
- }
-
- if ((vCounter == (_index - _begin)) || atFirst()) {
- release();
- unExposeVariables(ctx);
- return;
- }
-
- exposeVariables(ctx, vCounter);
- vCounter++;
-
- }
-
-}
-
-/**
- * @author Kin-man Chung
- * @version $Id: IteratedExpression.java,v 1.3 2005/12/08 01:20:43 kchung Exp $
- */
-final class IteratedExpression implements Serializable {
-
- private static final long serialVersionUID = 1L;
- protected final ValueExpression orig;
- protected final String delims;
-
- private Object base;
- private int index;
- private Iterator iter;
-
- public IteratedExpression(ValueExpression orig, String delims) {
- this.orig = orig;
- this.delims = delims;
- }
-
- /**
- * Evaluates the stored ValueExpression and return the indexed item.
- *
- * @param context
- * The ELContext used to evaluate the ValueExpression
- * @param i
- * The index of the item to be retrieved
- */
- public Object getItem(ELContext context, int i) {
-
- if (base == null) {
- base = orig.getValue(context);
- if (base == null) {
- return null;
- }
- iter = toIterator(base);
- index = 0;
- }
- if (index > i) {
- // Restart from index 0
- iter = toIterator(base);
- index = 0;
- }
- while (iter.hasNext()) {
- Object item = iter.next();
- if (index++ == i) {
- return item;
- }
- }
- return null;
- }
-
- public ValueExpression getValueExpression() {
- return orig;
- }
-
- private Iterator toIterator(final Object obj) {
-
- Iterator iter;
- if (obj instanceof String) {
- iter = toIterator(new StringTokenizer((String) obj, delims));
- } else if (obj instanceof Iterator) {
- iter = (Iterator) obj;
- } else if (obj instanceof Collection) {
- iter = toIterator(((Collection) obj).iterator());
- } else if (obj instanceof Enumeration) {
- iter = toIterator((Enumeration) obj);
- } else if (obj instanceof Map) {
- iter = ((Map) obj).entrySet().iterator();
- } else {
- throw new ELException("Bad items");
- }
- return iter;
- }
-
- private Iterator toIterator(final Enumeration obj) {
- return new Iterator() {
- public boolean hasNext() {
- return obj.hasMoreElements();
- }
-
- public Object next() {
- return obj.nextElement();
- }
-
- public void remove() {
- }
- };
- }
-}
-
-/**
- * @author Kin-man Chung
- * @version $Id: IteratedValueExpression.java,v 1.2 2005/12/08 01:20:43 kchung
- * Exp $
- */
-final class IteratedValueExpression extends ValueExpression implements
- Serializable {
-
- private static final long serialVersionUID = 1L;
- protected final int i;
- protected final IteratedExpression iteratedExpression;
-
- public IteratedValueExpression(IteratedExpression iteratedExpr, int i) {
- this.i = i;
- this.iteratedExpression = iteratedExpr;
- }
-
- public Object getValue(ELContext context) {
- return iteratedExpression.getItem(context, i);
- }
-
- public void setValue(ELContext context, Object value) {
- }
-
- public boolean isReadOnly(ELContext context) {
- return true;
- }
-
- public Class getType(ELContext context) {
- return null;
- }
-
- public Class getExpectedType() {
- return Object.class;
- }
-
- public String getExpressionString() {
- return iteratedExpression.getValueExpression().getExpressionString();
- }
-
- public boolean equals(Object obj) {
- return iteratedExpression.getValueExpression().equals(obj);
- }
-
- public int hashCode() {
- return iteratedExpression.getValueExpression().hashCode();
- }
-
- public boolean isLiteralText() {
- return false;
- }
-}
-
-/**
- * @author Andrey Markavtsov
- * @version $Id: IteratedIndexExpression.java,v 1.2 2007/12/06 01:20:43
- *
- */
-final class IteratedIndexExpression extends ValueExpression implements
- Serializable {
-
- private static final long serialVersionUID = 1L;
- protected final Integer i;
-
- public IteratedIndexExpression(int i) {
- this.i = i;
- }
-
- public Object getValue(ELContext context) {
- return i;
- }
-
- public void setValue(ELContext context, Object value) {
- }
-
- public boolean isReadOnly(ELContext context) {
- return true;
- }
-
- public Class getType(ELContext context) {
- return null;
- }
-
- public Class getExpectedType() {
- return Object.class;
- }
-
- public String getExpressionString() {
- return i.toString();
- }
-
- public boolean equals(Object obj) {
- return i.equals(obj);
- }
-
- public int hashCode() {
- return i.hashCode();
- }
-
- public boolean isLiteralText() {
- return false;
- }
-}
-
-/**
- * @author Jacob Hookom
- * @version $Id: IndexedValueExpression.java,v 1.3 2005/08/24 04:38:52 jhook Exp $
- */
-final class IndexedValueExpression extends ValueExpression implements
- Serializable {
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- private final Integer i;
-
- private final ValueExpression orig;
-
- /**
- *
- */
- public IndexedValueExpression(ValueExpression orig, int i) {
- this.i = new Integer(i);
- this.orig = orig;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.el.ValueExpression#getValue(javax.el.ELContext)
- */
- public Object getValue(ELContext context) {
- Object base = this.orig.getValue(context);
- if (base != null) {
- context.setPropertyResolved(false);
- return context.getELResolver().getValue(context, base, i);
- }
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.el.ValueExpression#setValue(javax.el.ELContext,
- * java.lang.Object)
- */
- public void setValue(ELContext context, Object value) {
- Object base = this.orig.getValue(context);
- if (base != null) {
- context.setPropertyResolved(false);
- context.getELResolver().setValue(context, base, i, value);
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.el.ValueExpression#isReadOnly(javax.el.ELContext)
- */
- public boolean isReadOnly(ELContext context) {
- Object base = this.orig.getValue(context);
- if (base != null) {
- context.setPropertyResolved(false);
- return context.getELResolver().isReadOnly(context, base, i);
- }
- return true;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.el.ValueExpression#getType(javax.el.ELContext)
- */
- public Class getType(ELContext context) {
- Object base = this.orig.getValue(context);
- if (base != null) {
- context.setPropertyResolved(false);
- return context.getELResolver().getType(context, base, i);
- }
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.el.ValueExpression#getExpectedType()
- */
- public Class getExpectedType() {
- return Object.class;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.el.Expression#getExpressionString()
- */
- public String getExpressionString() {
- return this.orig.getExpressionString();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.el.Expression#equals(java.lang.Object)
- */
- public boolean equals(Object obj) {
- return this.orig.equals(obj);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.el.Expression#hashCode()
- */
- public int hashCode() {
- return this.orig.hashCode();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.el.Expression#isLiteralText()
- */
- public boolean isLiteralText() {
- return false;
- }
-
-}
Modified: trunk/ui/columns/src/test/resources/org/richfaces/facelet/tag/columns.xml
===================================================================
--- trunk/ui/columns/src/test/resources/org/richfaces/facelet/tag/columns.xml 2007-12-21 18:18:36 UTC (rev 4959)
+++ trunk/ui/columns/src/test/resources/org/richfaces/facelet/tag/columns.xml 2007-12-21 19:11:57 UTC (rev 4960)
@@ -4,7 +4,7 @@
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:dt="http://labs.jboss.com/jbossrichfaces/ui/dataTable"
- xmlns:columns="http://labs.jboss.com/jbossrichfaces/ui/ui/columns">
+ xmlns:columns="http://labs.jboss.com/jbossrichfaces/ui/columns">
<body>
<ui:composition>
16 years, 10 months
JBoss Rich Faces SVN: r4959 - trunk/sandbox/samples/combobox-sample.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2007-12-21 13:18:36 -0500 (Fri, 21 Dec 2007)
New Revision: 4959
Removed:
trunk/sandbox/samples/combobox-sample/pom.xml.bak
Log:
Deleted: trunk/sandbox/samples/combobox-sample/pom.xml.bak
===================================================================
--- trunk/sandbox/samples/combobox-sample/pom.xml.bak 2007-12-21 18:17:47 UTC (rev 4958)
+++ trunk/sandbox/samples/combobox-sample/pom.xml.bak 2007-12-21 18:18:36 UTC (rev 4959)
@@ -1,72 +0,0 @@
-<?xml version="1.0"?><project>
- <parent>
- <artifactId>samples</artifactId>
- <groupId>org.richfaces.sandbox</groupId>
- <version>3.2.0-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.richfaces.samples</groupId>
- <artifactId>combobox-sample</artifactId>
- <packaging>war</packaging>
- <name>JSF Maven Webapp</name>
- <version>1.0-SNAPSHOT</version>
- <build>
- <finalName>webapp</finalName>
- <plugins>
- <plugin>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>maven-jetty-plugin</artifactId>
- <version>6.1.1</version>
- <configuration>
- <scanIntervalSeconds>10</scanIntervalSeconds>
- <connectors>
- <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
- <port>8080</port>
- <maxIdleTime>60000</maxIdleTime>
- </connector>
- </connectors>
- </configuration>
- </plugin>
- </plugins>
- <finalName>combobox-sample</finalName>
-
- </build>
- <pluginRepositories>
- <pluginRepository>
- <id>mortbay-repo</id>
- <name>mortbay-repo</name>
- <url>http://www.mortbay.org/maven2/snapshot</url>
- </pluginRepository>
- <pluginRepository>
- <id>repository.jboss.com</id>
- <name>Jboss Repository for Maven Artifacts</name>
- <url>http://repository.jboss.com/maven2</url>
- </pluginRepository>
- </pluginRepositories>
- <dependencies>
- <dependency>
- <groupId>org.richfaces.samples</groupId>
- <artifactId>skins</artifactId>
- <version>3.2.0-SNAPSHOT</version>
- </dependency>
-
- <dependency>
- <groupId>org.richfaces.ui</groupId>
- <artifactId>core</artifactId>
- <version>3.2.0-SNAPSHOT</version>
- </dependency>
-
- <dependency>
- <groupId>org.richfaces.ui</groupId>
- <artifactId>suggestionbox</artifactId>
- <version>3.2.0-SNAPSHOT</version>
- </dependency>
-
-
- <dependency>
- <groupId>org.richfaces.sandbox.ui</groupId>
- <artifactId>combobox</artifactId>
- <version>3.2.0-SNAPSHOT</version>
- </dependency>
- </dependencies>
-</project>
\ No newline at end of file
16 years, 10 months
JBoss Rich Faces SVN: r4958 - in trunk/sandbox/samples: combobox-sample and 15 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2007-12-21 13:17:47 -0500 (Fri, 21 Dec 2007)
New Revision: 4958
Added:
trunk/sandbox/samples/combobox-sample/
trunk/sandbox/samples/combobox-sample/pom.xml
trunk/sandbox/samples/combobox-sample/pom.xml.bak
trunk/sandbox/samples/combobox-sample/src/
trunk/sandbox/samples/combobox-sample/src/main/
trunk/sandbox/samples/combobox-sample/src/main/java/
trunk/sandbox/samples/combobox-sample/src/main/java/org/
trunk/sandbox/samples/combobox-sample/src/main/java/org/richfaces/
trunk/sandbox/samples/combobox-sample/src/main/java/org/richfaces/samples/
trunk/sandbox/samples/combobox-sample/src/main/java/org/richfaces/samples/Bean.java
trunk/sandbox/samples/combobox-sample/src/main/resources/
trunk/sandbox/samples/combobox-sample/src/main/webapp/
trunk/sandbox/samples/combobox-sample/src/main/webapp/META-INF/
trunk/sandbox/samples/combobox-sample/src/main/webapp/META-INF/MANIFEST.MF
trunk/sandbox/samples/combobox-sample/src/main/webapp/WEB-INF/
trunk/sandbox/samples/combobox-sample/src/main/webapp/WEB-INF/faces-config.xml
trunk/sandbox/samples/combobox-sample/src/main/webapp/WEB-INF/web.xml
trunk/sandbox/samples/combobox-sample/src/main/webapp/index.jsp
trunk/sandbox/samples/combobox-sample/src/main/webapp/pages/
trunk/sandbox/samples/combobox-sample/src/main/webapp/pages/index.jsp
trunk/sandbox/samples/combobox-sample/src/test/
trunk/sandbox/samples/combobox-sample/src/test/java/
trunk/sandbox/samples/combobox-sample/src/test/java/org/
trunk/sandbox/samples/combobox-sample/src/test/java/org/richfaces/
trunk/sandbox/samples/combobox-sample/src/test/java/org/richfaces/samples/
trunk/sandbox/samples/combobox-sample/src/test/java/org/richfaces/samples/BeanTest.java
Log:
initial commit
Added: trunk/sandbox/samples/combobox-sample/pom.xml
===================================================================
--- trunk/sandbox/samples/combobox-sample/pom.xml (rev 0)
+++ trunk/sandbox/samples/combobox-sample/pom.xml 2007-12-21 18:17:47 UTC (rev 4958)
@@ -0,0 +1,72 @@
+<?xml version="1.0"?><project>
+ <parent>
+ <artifactId>samples</artifactId>
+ <groupId>org.richfaces.sandbox</groupId>
+ <version>3.2.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.richfaces.samples</groupId>
+ <artifactId>combobox-sample</artifactId>
+ <packaging>war</packaging>
+ <name>JSF Maven Webapp</name>
+ <version>1.0-SNAPSHOT</version>
+ <build>
+ <finalName>combobox-sample</finalName>
+
+ <plugins>
+ <plugin>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>maven-jetty-plugin</artifactId>
+ <version>6.1.1</version>
+ <configuration>
+ <scanIntervalSeconds>10</scanIntervalSeconds>
+ <connectors>
+ <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
+ <port>8080</port>
+ <maxIdleTime>60000</maxIdleTime>
+ </connector>
+ </connectors>
+ </configuration>
+ </plugin>
+ </plugins>
+
+ </build>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>mortbay-repo</id>
+ <name>mortbay-repo</name>
+ <url>http://www.mortbay.org/maven2/snapshot</url>
+ </pluginRepository>
+ <pluginRepository>
+ <id>repository.jboss.com</id>
+ <name>Jboss Repository for Maven Artifacts</name>
+ <url>http://repository.jboss.com/maven2</url>
+ </pluginRepository>
+ </pluginRepositories>
+ <dependencies>
+ <dependency>
+ <groupId>org.richfaces.samples</groupId>
+ <artifactId>skins</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.richfaces.ui</groupId>
+ <artifactId>core</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.richfaces.ui</groupId>
+ <artifactId>suggestionbox</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ </dependency>
+
+
+ <dependency>
+ <groupId>org.richfaces.sandbox.ui</groupId>
+ <artifactId>combobox</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Added: trunk/sandbox/samples/combobox-sample/pom.xml.bak
===================================================================
--- trunk/sandbox/samples/combobox-sample/pom.xml.bak (rev 0)
+++ trunk/sandbox/samples/combobox-sample/pom.xml.bak 2007-12-21 18:17:47 UTC (rev 4958)
@@ -0,0 +1,72 @@
+<?xml version="1.0"?><project>
+ <parent>
+ <artifactId>samples</artifactId>
+ <groupId>org.richfaces.sandbox</groupId>
+ <version>3.2.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.richfaces.samples</groupId>
+ <artifactId>combobox-sample</artifactId>
+ <packaging>war</packaging>
+ <name>JSF Maven Webapp</name>
+ <version>1.0-SNAPSHOT</version>
+ <build>
+ <finalName>webapp</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>maven-jetty-plugin</artifactId>
+ <version>6.1.1</version>
+ <configuration>
+ <scanIntervalSeconds>10</scanIntervalSeconds>
+ <connectors>
+ <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
+ <port>8080</port>
+ <maxIdleTime>60000</maxIdleTime>
+ </connector>
+ </connectors>
+ </configuration>
+ </plugin>
+ </plugins>
+ <finalName>combobox-sample</finalName>
+
+ </build>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>mortbay-repo</id>
+ <name>mortbay-repo</name>
+ <url>http://www.mortbay.org/maven2/snapshot</url>
+ </pluginRepository>
+ <pluginRepository>
+ <id>repository.jboss.com</id>
+ <name>Jboss Repository for Maven Artifacts</name>
+ <url>http://repository.jboss.com/maven2</url>
+ </pluginRepository>
+ </pluginRepositories>
+ <dependencies>
+ <dependency>
+ <groupId>org.richfaces.samples</groupId>
+ <artifactId>skins</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.richfaces.ui</groupId>
+ <artifactId>core</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.richfaces.ui</groupId>
+ <artifactId>suggestionbox</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ </dependency>
+
+
+ <dependency>
+ <groupId>org.richfaces.sandbox.ui</groupId>
+ <artifactId>combobox</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Added: trunk/sandbox/samples/combobox-sample/src/main/java/org/richfaces/samples/Bean.java
===================================================================
--- trunk/sandbox/samples/combobox-sample/src/main/java/org/richfaces/samples/Bean.java (rev 0)
+++ trunk/sandbox/samples/combobox-sample/src/main/java/org/richfaces/samples/Bean.java 2007-12-21 18:17:47 UTC (rev 4958)
@@ -0,0 +1,29 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.richfaces.samples;
+/**
+ * @author $Autor$
+ *
+ */
+public class Bean {
+
+}
\ No newline at end of file
Added: trunk/sandbox/samples/combobox-sample/src/main/webapp/META-INF/MANIFEST.MF
===================================================================
--- trunk/sandbox/samples/combobox-sample/src/main/webapp/META-INF/MANIFEST.MF (rev 0)
+++ trunk/sandbox/samples/combobox-sample/src/main/webapp/META-INF/MANIFEST.MF 2007-12-21 18:17:47 UTC (rev 4958)
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+
Added: trunk/sandbox/samples/combobox-sample/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
--- trunk/sandbox/samples/combobox-sample/src/main/webapp/WEB-INF/faces-config.xml (rev 0)
+++ trunk/sandbox/samples/combobox-sample/src/main/webapp/WEB-INF/faces-config.xml 2007-12-21 18:17:47 UTC (rev 4958)
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
+ "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
+<faces-config>
+ <managed-bean>
+ <managed-bean-name>bean</managed-bean-name>
+ <managed-bean-class>org.richfaces.samples.Bean</managed-bean-class>
+ <managed-bean-scope>request</managed-bean-scope>
+ </managed-bean>
+</faces-config>
Added: trunk/sandbox/samples/combobox-sample/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/sandbox/samples/combobox-sample/src/main/webapp/WEB-INF/web.xml (rev 0)
+++ trunk/sandbox/samples/combobox-sample/src/main/webapp/WEB-INF/web.xml 2007-12-21 18:17:47 UTC (rev 4958)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+ <display-name>Archetype Created Web Application</display-name>
+ <context-param>
+ <param-name>javax.faces.CONFIG_FILES</param-name>
+ <param-value>/WEB-INF/faces-config.xml</param-value>
+ </context-param>
+ <context-param>
+ <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+ <param-value>server</param-value>
+ </context-param>
+ <filter>
+ <display-name>Ajax4jsf Filter</display-name>
+ <filter-name>ajax4jsf</filter-name>
+ <filter-class>org.ajax4jsf.Filter</filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>ajax4jsf</filter-name>
+ <servlet-name>Faces Servlet</servlet-name>
+ <dispatcher>REQUEST</dispatcher>
+ <dispatcher>FORWARD</dispatcher>
+ <dispatcher>INCLUDE</dispatcher>
+ </filter-mapping>
+ <servlet>
+ <servlet-name>Faces Servlet</servlet-name>
+ <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>Faces Servlet</servlet-name>
+ <url-pattern>/faces/*</url-pattern>
+ </servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>Faces Servlet</servlet-name>
+ <url-pattern>*.jsf</url-pattern>
+ </servlet-mapping>
+ <login-config>
+ <auth-method>BASIC</auth-method>
+ </login-config>
+</web-app>
Added: trunk/sandbox/samples/combobox-sample/src/main/webapp/index.jsp
===================================================================
--- trunk/sandbox/samples/combobox-sample/src/main/webapp/index.jsp (rev 0)
+++ trunk/sandbox/samples/combobox-sample/src/main/webapp/index.jsp 2007-12-21 18:17:47 UTC (rev 4958)
@@ -0,0 +1,13 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+
+<html>
+
+<head></head>
+
+ <body>
+
+ <jsp:forward page="/pages/index.jsf" />
+
+ </body>
+
+</html>
\ No newline at end of file
Added: trunk/sandbox/samples/combobox-sample/src/main/webapp/pages/index.jsp
===================================================================
--- trunk/sandbox/samples/combobox-sample/src/main/webapp/pages/index.jsp (rev 0)
+++ trunk/sandbox/samples/combobox-sample/src/main/webapp/pages/index.jsp 2007-12-21 18:17:47 UTC (rev 4958)
@@ -0,0 +1,16 @@
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
+<%@ taglib uri="http://labs.jboss.com/jbossrichfaces/ui/ui/combobox" prefix="cmb"%>
+<html>
+ <head>
+ <title></title>
+ </head>
+ <body>
+ <f:view>
+ <h:form>
+ <cmb:comboBox height="200px" width="200px">
+ </cmb:comboBox>
+ </h:form>
+ </f:view>
+ </body>
+</html>
Added: trunk/sandbox/samples/combobox-sample/src/test/java/org/richfaces/samples/BeanTest.java
===================================================================
--- trunk/sandbox/samples/combobox-sample/src/test/java/org/richfaces/samples/BeanTest.java (rev 0)
+++ trunk/sandbox/samples/combobox-sample/src/test/java/org/richfaces/samples/BeanTest.java 2007-12-21 18:17:47 UTC (rev 4958)
@@ -0,0 +1,46 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.richfaces.samples;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+*/
+public class BeanTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public BeanTest( String testName )
+ {
+ super( testName );
+ }
+
+ public void testStub() throws Exception {
+
+ }
+}
16 years, 10 months
JBoss Rich Faces SVN: r4957 - branches/3.1.x/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid.
by richfaces-svn-commits@lists.jboss.org
Author: konstantin.mishin
Date: 2007-12-21 13:08:27 -0500 (Fri, 21 Dec 2007)
New Revision: 4957
Modified:
branches/3.1.x/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridBody.js
Log:
RF-1592
Modified: branches/3.1.x/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridBody.js
===================================================================
--- branches/3.1.x/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridBody.js 2007-12-21 16:55:49 UTC (rev 4956)
+++ branches/3.1.x/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridBody.js 2007-12-21 18:08:27 UTC (rev 4957)
@@ -139,35 +139,34 @@
this.sizeBox.setHeight(this.templNormal.getElement().offsetHeight);
},
parseTemplate: function(templFrozen, templNormal) {
- if(!templNormal || !templNormal.rows || templNormal.rows.length===0) {
- return false;
+ var result = false;
+ if(templNormal && templNormal.rows && templNormal.rows.length != 0) {
+ var columns = this.grid.getHeader().getColumns();
+ var i=0, j=0;
+ var cols = this.templFrozen.getElement().getElementsByTagName("col");
+ for(i=0; i<cols.length; i++) {
+ columns[j].bodyCol = $(cols[i]);
+ j++;
+ }
+ cols = this.templNormal.getElement().getElementsByTagName("col");
+ for(i=0; i<cols.length; i++) {
+ columns[j].bodyCol = $(cols[i]);
+ j++;
+ }
+
+ this.rowsCount = Math.min(templNormal.rows.length, this.grid.dataModel.getCount());
+
+ //if(ClientUILib.isGecko) {
+ // this.defaultRowHeight -= this.getBorderWidth("tb") + this.getPadding("tb");
+ //}
+ this.helpObj = new ClientUI.common.box.Box(templFrozen, null, true);
+ this.countToLoad = 0;
+ this.startRow = 0;
+ this.startIndex = 0;
+ result = true;
}
-
- var columns = this.grid.getHeader().getColumns();
- var i=0, j=0;
- var cols = this.templFrozen.getElement().getElementsByTagName("col");
- for(i=0; i<cols.length; i++) {
- columns[j].bodyCol = $(cols[i]);
- j++;
- }
- cols = this.templNormal.getElement().getElementsByTagName("col");
- for(i=0; i<cols.length; i++) {
- columns[j].bodyCol = $(cols[i]);
- j++;
- }
-
- this.rowsCount = Math.min(templNormal.rows.length, this.grid.dataModel.getCount());
-
- //if(ClientUILib.isGecko) {
- // this.defaultRowHeight -= this.getBorderWidth("tb") + this.getPadding("tb");
- //}
- this.helpObj = new ClientUI.common.box.Box(templFrozen, null, true);
- this.countToLoad = 0;
- this.startRow = 0;
- this.startIndex = 0;
this.currRange = $R(0, this.rowsCount);
-
- return true;
+ return result;
},
setScrollPos: function(pos) {
this.contentBox.getElement().scrollTop = pos;
@@ -334,8 +333,10 @@
}.bind(this), this.grid.dataModel.getRequestDelay());
},
adjustColumnWidth: function(column, width) {
- var columns = this.grid.getHeader().getColumns();
- columns[column].bodyCol.width = width>0 ? width : 1;
+ var bodyCol = this.grid.getHeader().getColumns()[column].bodyCol;
+ if (bodyCol) {
+ bodyCol.width = width>0 ? width : 1;
+ }
},
setFakeColumnWidth: function() {
16 years, 10 months
JBoss Rich Faces SVN: r4956 - in trunk/ui/columns/src/test/java/org/richfaces/facelet: mock and 1 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2007-12-21 11:55:49 -0500 (Fri, 21 Dec 2007)
New Revision: 4956
Removed:
trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockHttpServletRequest.java
trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockHttpServletResponse.java
trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockHttpSession.java
trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockRequestDispatcher.java
trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockResponseWriter.java
trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockServletContext.java
trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockServletInputStream.java
trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockServletOutputStream.java
Modified:
trunk/ui/columns/src/test/java/org/richfaces/facelet/FaceletTagTestCase.java
trunk/ui/columns/src/test/java/org/richfaces/facelet/tag/ColumnsFaceletTagTest.java
Log:
columns test updated
Modified: trunk/ui/columns/src/test/java/org/richfaces/facelet/FaceletTagTestCase.java
===================================================================
--- trunk/ui/columns/src/test/java/org/richfaces/facelet/FaceletTagTestCase.java 2007-12-21 16:35:25 UTC (rev 4955)
+++ trunk/ui/columns/src/test/java/org/richfaces/facelet/FaceletTagTestCase.java 2007-12-21 16:55:49 UTC (rev 4956)
@@ -15,171 +15,40 @@
package org.richfaces.facelet;
-import java.io.FileNotFoundException;
-import java.io.OutputStream;
import java.io.StringWriter;
-import java.net.URI;
-import java.net.URL;
-import javax.faces.FacesException;
-import javax.faces.FactoryFinder;
-import javax.faces.application.ApplicationFactory;
-import javax.faces.context.FacesContext;
-import javax.faces.context.FacesContextFactory;
import javax.faces.context.ResponseWriter;
-import javax.faces.lifecycle.LifecycleFactory;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
-import junit.framework.TestCase;
+import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;
-import org.richfaces.facelet.mock.MockHttpServletRequest;
-import org.richfaces.facelet.mock.MockHttpServletResponse;
-import org.richfaces.facelet.mock.MockServletContext;
-
import com.sun.facelets.FaceletFactory;
import com.sun.facelets.compiler.Compiler;
import com.sun.facelets.compiler.SAXCompiler;
import com.sun.facelets.impl.DefaultFaceletFactory;
import com.sun.facelets.impl.ResourceResolver;
-public abstract class FaceletTagTestCase extends TestCase implements ResourceResolver {
+public abstract class FaceletTagTestCase extends AbstractAjax4JsfTestCase implements ResourceResolver {
-private final String filePath = this.getDirectory();
+ public FaceletTagTestCase(String name) {
+ super(name);
+ }
-private final URI base = this.getContext();
+ public void setUp() throws Exception {
+ super.setUp();
+ Compiler c = new SAXCompiler();
+ //c.setTrimmingWhitespace(true);
+ FaceletFactory factory = new DefaultFaceletFactory(c, this);
+ FaceletFactory.setInstance(factory);
-protected MockServletContext servletContext;
+ facesContext.setViewRoot(facesContext.getApplication().getViewHandler().createView(facesContext, "/test"));
-protected MockHttpServletRequest servletRequest;
+ ResponseWriter rw = facesContext.getRenderKit().createResponseWriter(new StringWriter(), null, null);
+ facesContext.setResponseWriter(rw);
+ }
-protected MockHttpServletResponse servletResponse;
+ public void tearDown() throws Exception {
+ super.tearDown();
+ this.servletContext = null;
+ }
-private ApplicationFactory factoryApplication;
-
-private FacesContextFactory factoryFacesContext;
-
-private LifecycleFactory factoryLifecycle;
-
-private boolean initialized = false;
-
-protected URI getContext() {
- try {
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- URL url = cl.getResource(this.filePath);
- System.out.println(new URI(url.toString()));
- if (url == null) {
- throw new FileNotFoundException(cl.getResource("").getFile()
- + this.filePath + " was not found");
- } else {
- return new URI(url.toString());
- }
- } catch (Exception e) {
- throw new RuntimeException("Error Initializing Context", e);
- }
}
-
-protected URL getLocalFile(String name) throws FileNotFoundException {
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- URL url = cl.getResource(this.filePath + "/" + name);
- if (url == null) {
- throw new FileNotFoundException(cl.getResource("").getFile() + name
- + " was not found");
- }
- return url;
-}
-
-private String getDirectory() {
- return this.getClass().getName().substring(0,
- this.getClass().getName().lastIndexOf('.')).replace('.', '/') + "/";
-}
-
-protected void setUp() throws Exception {
- super.setUp();
- URI context = this.getContext();
- System.out.println(context.getPath());
- this.servletContext = new MockServletContext(context);
- this.servletRequest = new MockHttpServletRequest(this.servletContext,
- context);
- this.servletResponse = new MockHttpServletResponse();
-
- // initialize Faces
- this.initFaces();
-
- FacesContext faces = this.factoryFacesContext.getFacesContext(this.servletContext,
- this.servletRequest, this.servletResponse,
- this.factoryLifecycle
- .getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE));
-
-
- Compiler c = new SAXCompiler();
- //c.setTrimmingWhitespace(true);
- FaceletFactory factory = new DefaultFaceletFactory(c, this);
- FaceletFactory.setInstance(factory);
-
- faces.setViewRoot(faces.getApplication().getViewHandler().createView(faces, "/test"));
-
- ResponseWriter rw = faces.getRenderKit().createResponseWriter(new StringWriter(), null, null);
- faces.setResponseWriter(rw);
-}
-
-public void setRequest(String method, String path, OutputStream os) {
- this.servletRequest = new MockHttpServletRequest(this.servletContext, method, path);
- //this.servletResponse = new MockHttpServletResponse(os);
- this.factoryFacesContext.getFacesContext(this.servletContext,
- this.servletRequest, this.servletResponse,
- this.factoryLifecycle
- .getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE));
-}
-
-private void initFaces() throws Exception {
- if (!this.initialized) {
- this.initialized = true;
- this.initFacesListener(this.servletContext);
- this.factoryApplication = (ApplicationFactory) FactoryFinder
- .getFactory(FactoryFinder.APPLICATION_FACTORY);
- this.factoryFacesContext = (FacesContextFactory) FactoryFinder
- .getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
- this.factoryLifecycle = (LifecycleFactory) FactoryFinder
- .getFactory(FactoryFinder.LIFECYCLE_FACTORY);
-
- /*
- Application application = this.factoryApplication.getApplication();
- application.setViewHandler(new FaceletViewHandler(application
- .getViewHandler()));
- */
- }
-}
-
-protected void initFacesListener(ServletContext context) throws Exception {
- ServletContextListener listener;
- Class type;
- try {
- type = Class.forName("com.sun.faces.config.ConfigureListener");
- } catch (ClassNotFoundException e) {
- try {
- type = Class.forName("");
- } catch (ClassNotFoundException e2) {
- throw new FileNotFoundException(
- "Either JSF-RI or MyFaces needs to be on the classpath with their supported Jars");
- }
- }
- listener = (ServletContextListener) type.newInstance();
- listener.contextInitialized(new ServletContextEvent(context));
-}
-
-protected void tearDown() throws Exception {
- super.tearDown();
- this.servletContext = null;
-}
-
-public URL resolveUrl(String path) {
- try {
- return new URL(this.getContext().toURL(), path.substring(1));
- } catch (Exception e) {
- throw new FacesException(e);
- }
-}
-
-}
Deleted: trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockHttpServletRequest.java
===================================================================
--- trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockHttpServletRequest.java 2007-12-21 16:35:25 UTC (rev 4955)
+++ trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockHttpServletRequest.java 2007-12-21 16:55:49 UTC (rev 4956)
@@ -1,397 +0,0 @@
-/**
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
- * Licensed under the Common Development and Distribution License,
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.sun.com/cddl/
- *
- * 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 org.richfaces.facelet.mock;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.security.Principal;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Vector;
-
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletInputStream;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-
-
-/**
- *
- * @author Jacob Hookom
- * @version $Id: MockHttpServletRequest.java,v 1.2 2005/12/21 05:51:05 jhook Exp $
- */
-public class MockHttpServletRequest implements HttpServletRequest {
-
- private final ServletContext servletContext;
-
- private final URI uri;
-
- private final String method;
-
- private Cookie[] cookies = new Cookie[0];
-
- private final Hashtable headers = new Hashtable();
-
- private String remoteUser;
-
- private String servletPath;
-
- private HttpSession session;
-
- private final Hashtable attributes = new Hashtable();
-
- private final Properties param = new Properties();
-
- private String characterEncoding = "ISO-8859-1";
-
- private String contentType = "text/html";
-
- private int contentLength = 0;
-
- private String protocol = "HTTP/1.1";
-
- private String localName = "localhost";
-
- private int localPort = 80;
-
- private String remoteAddr = "127.0.0.1";
-
- private String remoteHost = "localhost";
-
- private Locale locale = Locale.getDefault();
-
- private Vector locales = new Vector(Arrays.asList(Locale
- .getAvailableLocales()));
-
- private boolean secure = false;
-
- private int remotePort = 1024;
-
- private String localAddr = "127.0.0.1";
-
- private ServletInputStream inputStream = new MockServletInputStream();
-
- public MockHttpServletRequest(ServletContext servletContext, URI uri) {
- this(servletContext, "GET", uri);
- }
-
- public MockHttpServletRequest(ServletContext servletContext, String uri) {
- this(servletContext, "GET", uri);
- }
-
- public MockHttpServletRequest(ServletContext servletContext, String method,
- String uri) {
- this(servletContext, method, URI.create(uri));
- }
-
- public MockHttpServletRequest(ServletContext servletContext, String method,
- URI uri) {
- this.servletContext = servletContext;
- this.uri = uri;
- this.method = method;
-
- String q = this.uri.getRawQuery();
- if (q != null) {
- String[] p = q.split("(&|=)");
- for (int i = 0; i < p.length; i += 2) {
- this.param.put(p[i], p[i + 1]);
- }
- }
- }
-
- public String getAuthType() {
- return BASIC_AUTH;
- }
-
- public Cookie[] getCookies() {
- return this.cookies;
- }
-
- public long getDateHeader(String name) {
- String hdr = this.getHeader(name);
- if (hdr != null) {
- try {
- return DateFormat.getDateInstance(DateFormat.FULL).parse(hdr)
- .getTime();
- } catch (ParseException e) {
- throw new IllegalArgumentException("Header " + name + ": "
- + hdr);
- }
- }
- return -1;
- }
-
- public String getHeader(String name) {
- Object obj = this.headers.get(name);
- if (obj instanceof List) {
- return ((List) obj).get(0).toString();
- } else if (obj instanceof String) {
- return (String) obj;
- }
- return null;
- }
-
- public Enumeration getHeaders(String name) {
- Object obj = this.headers.get(name);
- if (obj instanceof Vector) {
- return ((Vector) obj).elements();
- } else if (obj instanceof String) {
- Vector v = new Vector();
- v.add(obj);
- return v.elements();
- }
- return null;
- }
-
- public Enumeration getHeaderNames() {
- return this.headers.keys();
- }
-
- public int getIntHeader(String name) {
- String hdr = this.getHeader(name);
- if (hdr != null) {
- try {
- return Integer.parseInt(hdr);
- } catch (Exception e) {
- throw new IllegalArgumentException("Header " + name + ": "
- + hdr);
- }
- }
- return -1;
- }
-
- public String getMethod() {
- return this.method;
- }
-
- public String getPathInfo() {
- return this.uri.getPath();
- }
-
- public String getPathTranslated() {
- return this.servletContext.getRealPath(this.uri.getPath());
- }
-
- public String getContextPath() {
- return this.uri.getPath();
- }
-
- public String getQueryString() {
- return this.uri.getQuery();
- }
-
- public String getRemoteUser() {
- return this.remoteUser;
- }
-
- public boolean isUserInRole(String role) {
- throw new UnsupportedOperationException();
- }
-
- public Principal getUserPrincipal() {
- throw new UnsupportedOperationException();
- }
-
- public String getRequestedSessionId() {
- return this.getParameter("jsessionid");
- }
-
- public String getRequestURI() {
- return this.uri.getPath();
- }
-
- public StringBuffer getRequestURL() {
- return new StringBuffer(this.uri.toString());
- }
-
- public String getServletPath() {
- return this.servletPath;
- }
-
- public HttpSession getSession(boolean create) {
- if (this.session == null && create) {
- this.session = new MockHttpSession(this.servletContext);
- }
- return this.session;
- }
-
- public HttpSession getSession() {
- return this.getSession(true);
- }
-
- public boolean isRequestedSessionIdValid() {
- throw new UnsupportedOperationException();
- }
-
- public boolean isRequestedSessionIdFromCookie() {
- throw new UnsupportedOperationException();
- }
-
- public boolean isRequestedSessionIdFromURL() {
- throw new UnsupportedOperationException();
- }
-
- public boolean isRequestedSessionIdFromUrl() {
- throw new UnsupportedOperationException();
- }
-
- public Object getAttribute(String name) {
- return this.attributes.get(name);
- }
-
- public Enumeration getAttributeNames() {
- return this.attributes.keys();
- }
-
- public String getCharacterEncoding() {
- return this.characterEncoding;
- }
-
- public void setCharacterEncoding(String characterEncoding)
- throws UnsupportedEncodingException {
- this.characterEncoding = characterEncoding;
- }
-
- public int getContentLength() {
- return this.contentLength;
- }
-
- public String getContentType() {
- return this.contentType;
- }
-
- public ServletInputStream getInputStream() throws IOException {
- return this.inputStream;
- }
-
- public String getParameter(String name) {
- return this.param.getProperty(name);
- }
-
- public Enumeration getParameterNames() {
- return this.param.keys();
- }
-
- public String[] getParameterValues(String name) {
- String p = this.param.getProperty(name);
- if (p != null) {
- return p.split(",");
- }
- return null;
- }
-
- public void setParameter(String name, String value) {
- this.param.put(name, value);
- }
-
- public Map getParameterMap() {
- return Collections.unmodifiableMap(this.param);
- }
-
- public String getProtocol() {
- return this.protocol;
- }
-
- public String getScheme() {
- return this.uri.getScheme();
- }
-
- public String getServerName() {
- return this.localName;
- }
-
- public int getServerPort() {
- return this.localPort;
- }
-
- public BufferedReader getReader() throws IOException {
- if (this.inputStream != null) {
- Reader sourceReader = (this.characterEncoding != null) ? new InputStreamReader(
- this.inputStream, this.characterEncoding)
- : new InputStreamReader(this.inputStream);
- return new BufferedReader(sourceReader);
- } else {
- return null;
- }
- }
-
- public String getRemoteAddr() {
- return this.remoteAddr;
- }
-
- public String getRemoteHost() {
- return this.remoteHost;
- }
-
- public void setAttribute(String name, Object value) {
- this.attributes.put(name, value);
- }
-
- public void removeAttribute(String name) {
- this.attributes.remove(name);
- }
-
- public Locale getLocale() {
- return this.locale;
- }
-
- public Enumeration getLocales() {
- return this.locales.elements();
- }
-
- public boolean isSecure() {
- return this.secure;
- }
-
- public RequestDispatcher getRequestDispatcher(String path) {
- return this.servletContext.getRequestDispatcher(path);
- }
-
- public String getRealPath(String path) {
- return this.servletContext.getRealPath(path);
- }
-
- public int getRemotePort() {
- return this.remotePort;
- }
-
- public String getLocalName() {
- return this.localName;
- }
-
- public String getLocalAddr() {
- return this.localAddr;
- }
-
- public int getLocalPort() {
- return this.localPort;
- }
-
-}
Deleted: trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockHttpServletResponse.java
===================================================================
--- trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockHttpServletResponse.java 2007-12-21 16:35:25 UTC (rev 4955)
+++ trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockHttpServletResponse.java 2007-12-21 16:55:49 UTC (rev 4956)
@@ -1,193 +0,0 @@
-/**
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
- * Licensed under the Common Development and Distribution License,
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.sun.com/cddl/
- *
- * 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 org.richfaces.facelet.mock;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.Hashtable;
-import java.util.Locale;
-
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Jacob Hookom
- * @version $Id: MockHttpServletResponse.java,v 1.2 2005/07/19 00:49:01 jhook Exp $
- */
-public class MockHttpServletResponse implements HttpServletResponse {
-
- private boolean committed = false;
- private int status;
- private String message;
- private Hashtable headers = new Hashtable();
- private String characterEncoding = "ISO-8859-1";
- private String contentType = "text/html";
- private long contentLength = 0;
- private int bufferSize = 0;
- private Locale locale = Locale.getDefault();
-
- public MockHttpServletResponse() {
- super();
- }
-
- public void addCookie(Cookie cookie) {
- // TODO Auto-generated method stub
-
- }
-
- public boolean containsHeader(String name) {
- return this.headers.contains(name);
- }
-
- public String encodeURL(String url) {
- return url;
- }
-
- public String encodeRedirectURL(String url) {
- return url;
- }
-
- public String encodeUrl(String url) {
- return url;
- }
-
- public String encodeRedirectUrl(String url) {
- return this.encodeRedirectURL(url);
- }
-
- public void sendError(int status, String message) throws IOException {
- if (this.committed) {
- throw new IllegalStateException("Response is already committed");
- }
- this.status = status;
- this.message = message;
- this.committed = true;
- }
-
- public void sendError(int status) throws IOException {
- if (this.committed) {
- throw new IllegalStateException("Response is already committed");
- }
- this.status = status;
- this.committed = true;
- }
-
- public void sendRedirect(String path) throws IOException {
- if (this.committed) {
- throw new IllegalStateException("Response is already committed");
- }
- this.committed = true;
- }
-
- public void setDateHeader(String name, long date) {
- this.headers.put(name, ""+date);
- }
-
- public void addDateHeader(String name, long date) {
- this.headers.put(name, ""+date);
- }
-
- public void setHeader(String name, String value) {
- this.headers.put(name, value);
- }
-
- public void addHeader(String name, String value) {
- this.headers.put(name, value);
- }
-
- public void setIntHeader(String name, int value) {
- this.headers.put(name, ""+value);
- }
-
- public void addIntHeader(String name, int value) {
- this.headers.put(name, ""+value);
- }
-
- public void setStatus(int sc) {
- this.status = sc;
- }
-
- public void setStatus(int sc, String message) {
- this.status = sc;
- this.message = message;
- }
-
- public String getCharacterEncoding() {
- return this.characterEncoding;
- }
-
- public String getContentType() {
- return this.contentType;
- }
-
- public ServletOutputStream getOutputStream() throws IOException {
- // TODO Auto-generated method stub
- return null;
- }
-
- public PrintWriter getWriter() throws IOException {
- // TODO Auto-generated method stub
- return null;
- }
-
- public void setCharacterEncoding(String characterEncoding) {
- this.characterEncoding = characterEncoding;
- }
-
- public void setContentLength(int contentLength) {
- this.contentLength = contentLength;
- }
-
- public void setContentType(String contentType) {
- this.contentType = contentType;
- }
-
- public void setBufferSize(int sz) {
- this.bufferSize = sz;
- }
-
- public int getBufferSize() {
- return this.bufferSize;
- }
-
- public void flushBuffer() throws IOException {
-
- }
-
- public void resetBuffer() {
-
- }
-
- public boolean isCommitted() {
- return this.committed;
- }
-
- public void reset() {
- // TODO Auto-generated method stub
-
- }
-
- public void setLocale(Locale locale) {
- this.locale = locale;
- }
-
- public Locale getLocale() {
- return this.locale;
- }
-
-}
Deleted: trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockHttpSession.java
===================================================================
--- trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockHttpSession.java 2007-12-21 16:35:25 UTC (rev 4955)
+++ trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockHttpSession.java 2007-12-21 16:55:49 UTC (rev 4956)
@@ -1,115 +0,0 @@
-/**
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
- * Licensed under the Common Development and Distribution License,
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.sun.com/cddl/
- *
- * 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 org.richfaces.facelet.mock;
-
-import java.util.Enumeration;
-import java.util.Hashtable;
-
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionContext;
-
-/**
- *
- * @author Jacob Hookom
- * @version $Id: MockHttpSession.java,v 1.2 2005/07/19 00:49:02 jhook Exp $
- */
-public class MockHttpSession implements HttpSession {
-
- private final Hashtable attributes = new Hashtable();
- private final long creationTime;
- private String id;
- private long lastAccessedTime;
- private final ServletContext servletContext;
- private int maxInactiveInterval = 20;
-
- public MockHttpSession(ServletContext servletContext) {
- this.servletContext = servletContext;
- this.creationTime = System.currentTimeMillis();
- this.id = "" + this.creationTime;
- this.lastAccessedTime = this.creationTime;
- }
-
- public long getCreationTime() {
- return this.creationTime;
- }
-
- public String getId() {
- return this.id;
- }
-
- public long getLastAccessedTime() {
- return this.lastAccessedTime;
- }
-
- public ServletContext getServletContext() {
- return this.servletContext;
- }
-
- public void setMaxInactiveInterval(int interval) {
- this.maxInactiveInterval = interval;
- }
-
- public int getMaxInactiveInterval() {
- return this.maxInactiveInterval;
- }
-
- public HttpSessionContext getSessionContext() {
- throw new UnsupportedOperationException();
- }
-
- public Object getAttribute(String name) {
- return this.attributes.get(name);
- }
-
- public Object getValue(String name) {
- throw new UnsupportedOperationException();
- }
-
- public Enumeration getAttributeNames() {
- return this.attributes.keys();
- }
-
- public String[] getValueNames() {
- throw new UnsupportedOperationException();
- }
-
- public void setAttribute(String name, Object value) {
- this.attributes.put(name, value);
- }
-
- public void putValue(String arg0, Object arg1) {
- throw new UnsupportedOperationException();
-
- }
-
- public void removeAttribute(String name) {
- this.attributes.remove(name);
- }
-
- public void removeValue(String arg0) {
- throw new UnsupportedOperationException();
- }
-
- public void invalidate() {
-
- }
-
- public boolean isNew() {
- return false;
- }
-
-}
Deleted: trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockRequestDispatcher.java
===================================================================
--- trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockRequestDispatcher.java 2007-12-21 16:35:25 UTC (rev 4955)
+++ trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockRequestDispatcher.java 2007-12-21 16:55:49 UTC (rev 4956)
@@ -1,51 +0,0 @@
-/**
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
- * Licensed under the Common Development and Distribution License,
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.sun.com/cddl/
- *
- * 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 org.richfaces.facelet.mock;
-
-import java.io.IOException;
-import java.net.URL;
-
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-
-/**
- *
- * @author Jacob Hookom
- * @version $Id: MockRequestDispatcher.java,v 1.1 2005/07/18 08:25:42 jhook Exp $
- */
-public class MockRequestDispatcher implements RequestDispatcher {
-
- protected final URL url;
-
- public MockRequestDispatcher(URL url) {
- this.url = url;
- }
-
- public void forward(ServletRequest request, ServletResponse response)
- throws ServletException, IOException {
- // TODO Auto-generated method stub
-
- }
-
- public void include(ServletRequest request, ServletResponse response)
- throws ServletException, IOException {
- // TODO Auto-generated method stub
-
- }
-
-}
Deleted: trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockResponseWriter.java
===================================================================
--- trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockResponseWriter.java 2007-12-21 16:35:25 UTC (rev 4955)
+++ trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockResponseWriter.java 2007-12-21 16:55:49 UTC (rev 4956)
@@ -1,178 +0,0 @@
-/**
- * Licensed under the Common Development and Distribution License,
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.sun.com/cddl/
- *
- * 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 org.richfaces.facelet.mock;
-
-
-import java.io.IOException;
-import java.io.Writer;
-
-import javax.faces.component.UIComponent;
-import javax.faces.context.ResponseWriter;
-
-
-
-/**
- * @author Jacob Hookom
- *
- */
-public class MockResponseWriter extends ResponseWriter {
-
- private final Writer writer;
- private boolean startOpen;
-
- public MockResponseWriter(Writer writer) {
- this.writer = writer;
- }
-
- /* (non-Javadoc)
- * @see javax.faces.context.ResponseWriter#getContentType()
- */
- public String getContentType() {
- return "text/html";
- }
-
- /* (non-Javadoc)
- * @see javax.faces.context.ResponseWriter#getCharacterEncoding()
- */
- public String getCharacterEncoding() {
- return "UTF-8";
- }
-
- /* (non-Javadoc)
- * @see javax.faces.context.ResponseWriter#flush()
- */
- public void flush() throws IOException {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see javax.faces.context.ResponseWriter#startDocument()
- */
- public void startDocument() throws IOException {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see javax.faces.context.ResponseWriter#endDocument()
- */
- public void endDocument() throws IOException {
- // TODO Auto-generated method stub
-
- }
-
- private void closeStart() throws IOException {
- if (this.startOpen) {
- this.writer.write('>');
- }
- this.startOpen = false;
- }
-
- /* (non-Javadoc)
- * @see javax.faces.context.ResponseWriter#startElement(java.lang.String, javax.faces.component.UIComponent)
- */
- public void startElement(String arg0, UIComponent arg1) throws IOException {
- this.closeStart();
- this.writer.write('<');
- this.writer.write(arg0);
- this.startOpen = true;
- }
-
- /* (non-Javadoc)
- * @see javax.faces.context.ResponseWriter#endElement(java.lang.String)
- */
- public void endElement(String arg0) throws IOException {
- if (this.startOpen) {
- this.writer.write("/>");
- this.startOpen = false;
- } else {
- this.writer.write("</");
- this.writer.write(arg0);
- this.writer.write('>');
- }
-
- }
-
- /* (non-Javadoc)
- * @see javax.faces.context.ResponseWriter#writeAttribute(java.lang.String, java.lang.Object, java.lang.String)
- */
- public void writeAttribute(String arg0, Object arg1, String arg2)
- throws IOException {
- if (arg1 != null) {
- writer.write(' ');
- writer.write(arg0);
- writer.write("=\"");
- writer.write(arg1.toString());
- writer.write('"');
- }
- }
-
- /* (non-Javadoc)
- * @see javax.faces.context.ResponseWriter#writeURIAttribute(java.lang.String, java.lang.Object, java.lang.String)
- */
- public void writeURIAttribute(String arg0, Object arg1, String arg2)
- throws IOException {
- this.writeAttribute(arg0, arg1, arg2);
- }
-
- /* (non-Javadoc)
- * @see javax.faces.context.ResponseWriter#writeComment(java.lang.Object)
- */
- public void writeComment(Object arg0) throws IOException {
- this.closeStart();
- this.writer.write("<!-- ");
- this.writer.write(arg0 != null ? arg0.toString() : "null");
- this.writer.write(" -->");
- }
-
- /* (non-Javadoc)
- * @see javax.faces.context.ResponseWriter#writeText(java.lang.Object, java.lang.String)
- */
- public void writeText(Object arg0, String arg1) throws IOException {
- this.closeStart();
- this.writer.write(arg0 != null ? arg0.toString() : "null");
- }
-
- /* (non-Javadoc)
- * @see javax.faces.context.ResponseWriter#writeText(char[], int, int)
- */
- public void writeText(char[] arg0, int arg1, int arg2) throws IOException {
- this.closeStart();
- this.writer.write(arg0, arg1, arg2);
- }
-
- /* (non-Javadoc)
- * @see javax.faces.context.ResponseWriter#cloneWithWriter(java.io.Writer)
- */
- public ResponseWriter cloneWithWriter(Writer arg0) {
- return new MockResponseWriter(arg0);
- }
-
- /* (non-Javadoc)
- * @see java.io.Writer#write(char[], int, int)
- */
- public void write(char[] cbuf, int off, int len) throws IOException {
- this.writer.write(cbuf, off, len);
- }
-
- /* (non-Javadoc)
- * @see java.io.Writer#close()
- */
- public void close() throws IOException {
- // TODO Auto-generated method stub
-
- }
-
-}
Deleted: trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockServletContext.java
===================================================================
--- trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockServletContext.java 2007-12-21 16:35:25 UTC (rev 4955)
+++ trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockServletContext.java 2007-12-21 16:55:49 UTC (rev 4956)
@@ -1,240 +0,0 @@
-/**
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
- * Licensed under the Common Development and Distribution License,
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.sun.com/cddl/
- *
- * 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 org.richfaces.facelet.mock;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URL;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Properties;
-import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-
-/**
- *
- * @author Jacob Hookom
- * @version $Id: MockServletContext.java,v 1.1 2005/07/18 08:25:42 jhook Exp $
- */
-public class MockServletContext implements ServletContext {
-
- protected final Properties initParams = new Properties();
-
- protected final Logger log = Logger
- .getLogger("facelets.mock.ServletContext");
-
- protected final Hashtable attributes = new Hashtable();
-
- protected final URI base;
-
- public MockServletContext(URI base) {
- this.base = base;
- File f = new File(base);
- if (!f.exists()) {
- throw new IllegalArgumentException("File: " + base.getPath()
- + " doesn't exist");
- }
- }
-
- public ServletContext getContext(String name) {
- throw new UnsupportedOperationException();
- }
-
- public int getMajorVersion() {
- return 2;
- }
-
- public int getMinorVersion() {
- return 3;
- }
-
- public String getMimeType(String path) {
- throw new UnsupportedOperationException();
- }
-
- public Set getResourcePaths(String path) {
- URI uri = this.resolve(path);
- if (uri != null) {
- File f = new File(uri);
- if (f.exists() && f.isDirectory()) {
- File[] c = f.listFiles();
- Set s = new HashSet();
- int start = f.getAbsolutePath().length();
- for (int i = 0; i < c.length; i++) {
- s.add(c[i].getAbsolutePath().substring(start));
- }
- return s;
- }
- }
- return Collections.EMPTY_SET;
- }
-
- public URL getResource(String path) throws MalformedURLException {
- URI uri = this.resolve(path);
- if (uri != null) {
- File f = new File(uri);
- if (f.exists()) {
- return uri.toURL();
- }
- }
- return null;
- }
-
- public InputStream getResourceAsStream(String path) {
- URI uri = this.resolve(path);
- if (uri != null) {
- try {
- File f = new File(uri);
- if (f.exists()) {
- return uri.toURL().openStream();
- }
- } catch (MalformedURLException e) {
- this.log.severe(e.getMessage());
- return null;
- } catch (IOException e) {
- this.log.severe(e.getMessage());
- return null;
- }
- }
- return null;
- }
-
- public RequestDispatcher getRequestDispatcher(String path) {
- URI uri = this.resolve(path);
- if (uri != null) {
- File f = new File(uri);
- if (f.exists()) {
- try {
- return new MockRequestDispatcher(uri.toURL());
- } catch (MalformedURLException e) {
- this.log.severe(e.getMessage());
- return null;
- }
- }
-
- }
- return null;
- }
-
- public RequestDispatcher getNamedDispatcher(String fileName) {
- throw new UnsupportedOperationException();
- }
-
- public Servlet getServlet(String name) throws ServletException {
- throw new UnsupportedOperationException();
- }
-
- public Enumeration getServlets() {
- throw new UnsupportedOperationException();
- }
-
- public Enumeration getServletNames() {
- throw new UnsupportedOperationException();
- }
-
- public void log(String message) {
- this.log.info(message);
- }
-
- public void log(Exception error, String message) {
- this.log.log(Level.INFO, message, error);
-
- }
-
- public void log(String message, Throwable error) {
- this.log.log(Level.INFO, message, error);
- }
-
- public String getRealPath(String path) {
- URI uri = this.resolve(path);
- if (uri != null) {
- File f = new File(uri);
- if (f.exists()) {
- return f.getAbsolutePath();
- }
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see javax.servlet.ServletContext#getContextPath()
- */
- public String getContextPath() {
- // TODO Auto-generated method stub
- return null;
- }
-
- private final URI resolve(String path) {
- if (path == null) {
- throw new NullPointerException("Path cannot be null");
- }
- if (path.charAt(0) == '/') {
- if (path.length() > 1) {
- return this.base.resolve(path.substring(1));
- }
- return this.base;
- }
- return null;
- }
-
- public String getServerInfo() {
- return this.getClass().getName();
- }
-
- public String getInitParameter(String name) {
- return this.initParams.getProperty(name);
- }
-
- public Enumeration getInitParameterNames() {
- return this.initParams.keys();
- }
-
- public void setInitParameter(String name, String value) {
- this.initParams.setProperty(name, value);
- }
-
- public Object getAttribute(String name) {
- return this.attributes.get(name);
- }
-
- public Enumeration getAttributeNames() {
- return this.attributes.keys();
- }
-
- public void setAttribute(String name, Object value) {
- this.attributes.put(name, value);
- }
-
- public void removeAttribute(String name) {
- this.attributes.remove(name);
- }
-
- public String getServletContextName() {
- return this.getClass().getName();
- }
-
-}
Deleted: trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockServletInputStream.java
===================================================================
--- trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockServletInputStream.java 2007-12-21 16:35:25 UTC (rev 4955)
+++ trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockServletInputStream.java 2007-12-21 16:55:49 UTC (rev 4956)
@@ -1,45 +0,0 @@
-/**
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
- * Licensed under the Common Development and Distribution License,
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.sun.com/cddl/
- *
- * 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 org.richfaces.facelet.mock;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.servlet.ServletInputStream;
-
-/**
- *
- * @author Jacob Hookom
- * @version $Id: MockServletInputStream.java,v 1.1 2005/07/18 08:25:42 jhook Exp $
- */
-public class MockServletInputStream extends ServletInputStream {
-
- private final InputStream source;
-
- public MockServletInputStream() {
- this.source = new ByteArrayInputStream(new byte[0]);
- }
-
- public MockServletInputStream(InputStream source) {
- this.source = source;
- }
-
- public int read() throws IOException {
- return this.source.read();
- }
-
-}
Deleted: trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockServletOutputStream.java
===================================================================
--- trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockServletOutputStream.java 2007-12-21 16:35:25 UTC (rev 4955)
+++ trunk/ui/columns/src/test/java/org/richfaces/facelet/mock/MockServletOutputStream.java 2007-12-21 16:55:49 UTC (rev 4956)
@@ -1,44 +0,0 @@
-/**
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
- * Licensed under the Common Development and Distribution License,
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.sun.com/cddl/
- *
- * 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 org.richfaces.facelet.mock;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-import javax.servlet.ServletOutputStream;
-
-/**
- *
- * @author Jacob Hookom
- * @version $Id: MockServletOutputStream.java,v 1.1 2005/07/18 08:25:43 jhook Exp $
- */
-public class MockServletOutputStream extends ServletOutputStream {
-
- private final OutputStream dest;
-
- public MockServletOutputStream() {
- this.dest = new ByteArrayOutputStream();
- }
-
- public MockServletOutputStream(OutputStream dest) {
- this.dest = dest;
- }
-
- public void write(int b) throws IOException {
- this.dest.write(b);
- }
-}
Modified: trunk/ui/columns/src/test/java/org/richfaces/facelet/tag/ColumnsFaceletTagTest.java
===================================================================
--- trunk/ui/columns/src/test/java/org/richfaces/facelet/tag/ColumnsFaceletTagTest.java 2007-12-21 16:35:25 UTC (rev 4955)
+++ trunk/ui/columns/src/test/java/org/richfaces/facelet/tag/ColumnsFaceletTagTest.java 2007-12-21 16:55:49 UTC (rev 4956)
@@ -5,6 +5,7 @@
*/
package org.richfaces.facelet.tag;
+import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
@@ -12,7 +13,6 @@
import javax.faces.component.UIComponent;
import javax.faces.component.UIOutput;
import javax.faces.component.UIViewRoot;
-import javax.faces.context.FacesContext;
import org.richfaces.component.UIColumn;
import org.richfaces.component.html.HtmlColumn;
@@ -31,72 +31,61 @@
*/
public class ColumnsFaceletTagTest extends FaceletTagTestCase {
-
+ public ColumnsFaceletTagTest(String name) {
+ super(name);
+ }
- /* (non-Javadoc)
- * @see org.ajax4jsf.tests.AbstractAjax4JsfTestCase#setUp()
- */
- @Override
- public void setUp() throws Exception {
- // TODO Auto-generated method stub
- super.setUp();
- }
-
-
- public void testFacelet() throws Exception {
- FacesContext faces = FacesContext.getCurrentInstance();
- Map session = faces.getExternalContext().getSessionMap();
- Collection c = new ArrayList();
- for (int i = 0; i < 10; i++) {
- c.add(i);
- }
- session.put("list", c);
-
-
- FaceletFactory f = FaceletFactory.getInstance();
- Facelet at = f.getFacelet("columns.xml");
-
- UIViewRoot root = faces.getViewRoot();
- at.apply(faces, root);
-
- int count = root.getChildCount();
- assertTrue(count == 1);
-
- UIComponent dataTable = root.getChildren().get(0);
- assertNotNull(dataTable);
-
- count = dataTable.getChildCount();
- assertTrue(count == 5);
-
- UIComponent component = dataTable.getChildren().get(0);
- assertTrue(component instanceof UIColumn);
-
- HtmlColumn column = (HtmlColumn) component;
- assertTrue("color: Red;".equals(column.getStyle()));
- assertTrue("100px;".equals(column.getWidth()));
-
- column = (HtmlColumn)dataTable.getChildren().get(4);
- UIComponent facet = column.getFacet("header");
- assertNotNull(facet);
- assertTrue(facet instanceof UIOutput);
- UIOutput output = (UIOutput)facet;
- Integer val = (Integer) output.getValue();
- assertTrue(val.equals(4));
-
- assertTrue(component.getChildCount() == 1 );
-
- output = (UIOutput)component.getChildren().get(0);
- String value = (String) output.getValue();
- assertTrue("1".equals(value));
- }
-
- /* (non-Javadoc)
- * @see org.ajax4jsf.tests.AbstractAjax4JsfTestCase#tearDown()
- */
- @Override
- public void tearDown() throws Exception {
- // TODO Auto-generated method stub
- super.tearDown();
- }
-
+
+ public void testFacelet() throws Exception {
+ Map session = facesContext.getExternalContext().getSessionMap();
+ Collection c = new ArrayList();
+ for (int i = 0; i < 10; i++) {
+ c.add(i);
+ }
+ session.put("list", c);
+
+
+ FaceletFactory f = FaceletFactory.getInstance();
+ Facelet at = f.getFacelet("/");
+
+ UIViewRoot root = facesContext.getViewRoot();
+ at.apply(facesContext, root);
+
+ int count = root.getChildCount();
+ assertTrue(count == 1);
+
+ UIComponent dataTable = root.getChildren().get(0);
+ assertNotNull(dataTable);
+
+ count = dataTable.getChildCount();
+ assertTrue(count == 5);
+
+ UIComponent component = dataTable.getChildren().get(0);
+ assertTrue(component instanceof UIColumn);
+
+ HtmlColumn column = (HtmlColumn) component;
+ assertTrue("color: Red;".equals(column.getStyle()));
+ assertTrue("100px;".equals(column.getWidth()));
+
+ column = (HtmlColumn)dataTable.getChildren().get(4);
+ UIComponent facet = column.getFacet("header");
+ assertNotNull(facet);
+ assertTrue(facet instanceof UIOutput);
+ UIOutput output = (UIOutput)facet;
+ Integer val = (Integer) output.getValue();
+ assertTrue(val.equals(4));
+
+ assertTrue(component.getChildCount() == 1 );
+
+ output = (UIOutput)component.getChildren().get(0);
+ String value = (String) output.getValue();
+ assertTrue("1".equals(value));
+ }
+
+
+ public URL resolveUrl(String string) {
+ URL url = getClass().getResource("columns.xml");
+ return url;
+ }
+
}
16 years, 10 months