001/* 002 * (C) Copyright 2013 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 * 016 * Contributors: 017 * Anahide Tchertchian 018 */ 019package org.nuxeo.ecm.platform.actions.seam; 020 021import javax.el.ArrayELResolver; 022import javax.el.BeanELResolver; 023import javax.el.CompositeELResolver; 024import javax.el.ELContext; 025import javax.el.ELResolver; 026import javax.el.ExpressionFactory; 027import javax.el.ListELResolver; 028import javax.el.MapELResolver; 029import javax.el.ResourceBundleELResolver; 030 031import org.jboss.el.ExpressionFactoryImpl; 032import org.jboss.el.lang.FunctionMapperImpl; 033import org.jboss.seam.el.EL; 034import org.jboss.seam.el.SeamELResolver; 035import org.nuxeo.ecm.platform.actions.ELActionContext; 036import org.nuxeo.ecm.platform.el.DocumentModelResolver; 037 038/** 039 * Sample Seam action context, resolving components in Seam context (but not relying on faces context to do so) 040 * <p> 041 * Adds the {@link DocumentModelResolver} at the top of the list of default Seam resolvers. 042 * 043 * @since 5.7.3 044 */ 045public class SeamActionContext extends ELActionContext { 046 047 private static final long serialVersionUID = 1L; 048 049 public static final ELResolver EL_RESOLVER = createELResolver(); 050 051 public static ELResolver createELResolver() { 052 CompositeELResolver resolver = new CompositeELResolver(); 053 resolver.add(new DocumentModelResolver()); 054 resolver.add(new SeamELResolver()); 055 resolver.add(new MapELResolver()); 056 resolver.add(new ListELResolver()); 057 resolver.add(new ArrayELResolver()); 058 resolver.add(new ResourceBundleELResolver()); 059 resolver.add(new BeanELResolver()); 060 return resolver; 061 } 062 063 public static final ExpressionFactory EXPRESSION_FACTORY = new ExpressionFactoryImpl(); 064 065 public SeamActionContext() { 066 super(EL.createELContext(EL_RESOLVER, new FunctionMapperImpl()), EXPRESSION_FACTORY); 067 } 068 069 public SeamActionContext(ELContext originalContext, ExpressionFactory expressionFactory) { 070 super(originalContext, expressionFactory); 071 } 072 073}