You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2019/08/16 16:15:02 UTC
[myfaces] branch master updated: removed LifecycleProvider SPI,
it wasn't used since ManagedBeans were removed
This is an automated email from the ASF dual-hosted git repository.
tandraschko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces.git
The following commit(s) were added to refs/heads/master by this push:
new 8e4497e removed LifecycleProvider SPI, it wasn't used since ManagedBeans were removed
8e4497e is described below
commit 8e4497e9767706e8e5c073296b4b8b97f1f894bf
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Fri Aug 16 18:14:53 2019 +0200
removed LifecycleProvider SPI, it wasn't used since ManagedBeans were removed
---
impl/pom.xml | 4 +-
.../annotation/AllAnnotationLifecycleProvider.java | 99 --------
.../DefaultLifecycleProviderFactory.java | 263 ---------------------
.../annotation/DiscoverableLifecycleProvider.java | 27 ---
.../config/annotation/LifecycleProvider.java | 51 ----
.../config/annotation/LifecycleProvider2.java | 50 ----
.../annotation/LifecycleProviderFactory.java | 89 -------
.../annotation/NoAnnotationLifecyleProvider.java | 46 ----
.../NoInjectionAnnotationLifecycleProvider.java | 219 -----------------
.../ResourceAnnotationLifecycleProvider.java | 248 -------------------
.../Tomcat7AnnotationLifecycleProvider.java | 140 -----------
.../apache/myfaces/spi/ServiceProviderFinder.java | 2 -
.../spi/impl/DefaultInjectionProviderFactory.java | 26 +-
.../webapp/StartupServletContextListener.java | 3 -
...che.myfaces.config.annotation.LifecycleProvider | 1 -
.../config/annotation/AnnotatedManagedBean.java | 72 ------
.../config/annotation/AnnotatedManagedBean2.java | 91 -------
.../annotation/AnnotationProcessorTestCase.java | 71 ------
.../MockDiscoverableLifecycleProvider.java | 45 ----
.../config/annotation/MockLifecycleProvider.java | 41 ----
.../config/annotation/MockLifecycleProvider2.java | 47 ----
.../annotation/OwnAnnotationProcessorTestCase.java | 48 ----
.../myfaces/test/core/AbstractMyFacesTestCase.java | 3 -
.../test/core/runner/AbstractJsfTestContainer.java | 5 +-
...che.myfaces.config.annotation.LifecycleProvider | 1 -
parent/pom.xml | 2 +-
parent/src/site/apt/googleappenginesupport.apt | 9 -
.../myfaces2-googleappengine-eclipse-tutorial.apt | 14 --
.../apt/myfaces2-googleappengine-idea-tutorial.apt | 17 +-
29 files changed, 18 insertions(+), 1716 deletions(-)
diff --git a/impl/pom.xml b/impl/pom.xml
index a8d5463..402227a 100644
--- a/impl/pom.xml
+++ b/impl/pom.xml
@@ -94,8 +94,6 @@
<exclude>src/main/resources/META-INF/licenses/omnifaces-LICENSE.txt</exclude>
<!-- services files are trivial config files with no comments -->
- <exclude>src/test/resources/META-INF/services/org.apache.myfaces.config.annotation.LifecycleProvider</exclude>
- <exclude>src/main/resources/META-INF/services/org.apache.myfaces.config.annotation.LifecycleProvider</exclude>
<exclude>src/main/resources/META-INF/services/org.apache.myfaces.spi.InjectionProvider</exclude>
<exclude>src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension</exclude>
<exclude>src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer</exclude>
@@ -1063,7 +1061,7 @@
<artifactId>commons-beanutils</artifactId>
</dependency>
- <!-- tomcat 7 support (LifecycleProvider) -->
+ <!-- tomcat 7 support (InjectionProvider) -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/AllAnnotationLifecycleProvider.java b/impl/src/main/java/org/apache/myfaces/config/annotation/AllAnnotationLifecycleProvider.java
deleted file mode 100644
index 711e1c9..0000000
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/AllAnnotationLifecycleProvider.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.myfaces.config.annotation;
-
-import javax.naming.NamingException;
-import javax.naming.Context;
-import javax.annotation.Resource;
-import javax.ejb.EJB;
-import javax.persistence.PersistenceContext;
-import javax.persistence.PersistenceUnit;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Field;
-
-public class AllAnnotationLifecycleProvider extends ResourceAnnotationLifecycleProvider
-{
-
- public AllAnnotationLifecycleProvider(Context context)
- {
- super(context);
- }
-
- @Override
- protected void checkMethodAnnotation(Method method, Object instance)
- throws NamingException, IllegalAccessException, InvocationTargetException
- {
- super.checkMethodAnnotation(method, instance);
- if (method.isAnnotationPresent(Resource.class))
- {
- Resource annotation = method.getAnnotation(Resource.class);
- lookupMethodResource(context, instance, method, annotation.name());
- }
- if (method.isAnnotationPresent(EJB.class))
- {
- EJB annotation = method.getAnnotation(EJB.class);
- lookupMethodResource(context, instance, method, annotation.name());
- }
- // not implemented since 1.x, let's ignore it for now
- /*if (method.isAnnotationPresent(WebServiceRef.class)) {
- WebServiceRef annotation =
- (WebServiceRef) method.getAnnotation(WebServiceRef.class);
- lookupMethodResource(context, instance, methods, annotation.name());
- }*/
- if (method.isAnnotationPresent(PersistenceContext.class))
- {
- PersistenceContext annotation = method.getAnnotation(PersistenceContext.class);
- lookupMethodResource(context, instance, method, annotation.name());
- }
- if (method.isAnnotationPresent(PersistenceUnit.class))
- {
- PersistenceUnit annotation = method.getAnnotation(PersistenceUnit.class);
- lookupMethodResource(context, instance, method, annotation.name());
- }
- }
-
- @Override
- protected void checkFieldAnnotation(Field field, Object instance)
- throws NamingException, IllegalAccessException
- {
- super.checkFieldAnnotation(field, instance);
- if (field.isAnnotationPresent(EJB.class))
- {
- EJB annotation = field.getAnnotation(EJB.class);
- lookupFieldResource(context, instance, field, annotation.name());
- }
- /*if (field.isAnnotationPresent(WebServiceRef.class)) {
- WebServiceRef annotation =
- (WebServiceRef) field.getAnnotation(WebServiceRef.class);
- lookupFieldResource(context, instance, field, annotation.name());
- }*/
- if (field.isAnnotationPresent(PersistenceContext.class))
- {
- PersistenceContext annotation = field.getAnnotation(PersistenceContext.class);
- lookupFieldResource(context, instance, field, annotation.name());
- }
- if (field.isAnnotationPresent(PersistenceUnit.class))
- {
- PersistenceUnit annotation = field.getAnnotation(PersistenceUnit.class);
- lookupFieldResource(context, instance, field, annotation.name());
- }
- }
-}
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultLifecycleProviderFactory.java b/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultLifecycleProviderFactory.java
deleted file mode 100644
index 032ce62..0000000
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultLifecycleProviderFactory.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.myfaces.config.annotation;
-
-import java.lang.reflect.InvocationTargetException;
-import java.security.AccessController;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.faces.FacesException;
-import javax.faces.context.ExternalContext;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-
-import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
-import org.apache.myfaces.util.lang.ClassUtils;
-import org.apache.myfaces.spi.ServiceProviderFinderFactory;
-
-/*
- * Date: Mar 12, 2007
- * Time: 9:53:40 PM
- */
-public class DefaultLifecycleProviderFactory extends LifecycleProviderFactory
-{
- private static Logger log = Logger.getLogger(DefaultLifecycleProviderFactory.class.getName());
-
- /**
- * Define the class implementing LifecycleProvider2 interface to handle PostConstruct and PreDestroy annotations.
- *
- * <p>This also can be configured using a SPI entry (/META-INF/services/...).
- * </p>
- */
- public static final String LIFECYCLE_PROVIDER_INSTANCE_KEY
- = LifecycleProvider.class.getName() + ".LIFECYCLE_PROVIDER_INSTANCE";
-
- @JSFWebConfigParam(name="org.apache.myfaces.config.annotation.LifecycleProvider", since="1.1")
- public static final String LIFECYCLE_PROVIDER = LifecycleProvider.class.getName();
-
-
- public DefaultLifecycleProviderFactory()
- {
- }
-
- @Override
- public LifecycleProvider getLifecycleProvider(ExternalContext externalContext)
- {
- LifecycleProvider lifecycleProvider = null;
- if (externalContext == null)
- {
- // Really in jsf 2.0, this will not happen, because a Startup/Shutdown
- // FacesContext and ExternalContext are provided on initialization and shutdown,
- // and in other scenarios the real FacesContext/ExternalContext is provided.
- log.info("No ExternalContext using fallback LifecycleProvider.");
- lifecycleProvider = resolveFallbackLifecycleProvider();
- }
- else
- {
- lifecycleProvider = (LifecycleProvider)
- externalContext.getApplicationMap().get(LIFECYCLE_PROVIDER_INSTANCE_KEY);
- }
- if (lifecycleProvider == null)
- {
- if (!resolveLifecycleProviderFromExternalContext(externalContext))
- {
- if (!resolveLifecycleProviderFromService(externalContext))
- {
- lifecycleProvider = resolveFallbackLifecycleProvider();
- externalContext.getApplicationMap().put(LIFECYCLE_PROVIDER_INSTANCE_KEY, lifecycleProvider);
- }
- else
- {
- //Retrieve it because it was resolved
- lifecycleProvider = (LifecycleProvider)
- externalContext.getApplicationMap().get(LIFECYCLE_PROVIDER_INSTANCE_KEY);
- }
- }
- else
- {
- //Retrieve it because it was resolved
- lifecycleProvider = (LifecycleProvider)
- externalContext.getApplicationMap().get(LIFECYCLE_PROVIDER_INSTANCE_KEY);
- }
- log.info("Using LifecycleProvider "+ lifecycleProvider.getClass().getName());
- }
- return lifecycleProvider;
- }
-
- @Override
- public void release()
- {
- }
-
-
-
- private boolean resolveLifecycleProviderFromExternalContext(ExternalContext externalContext)
- {
- try
- {
- String lifecycleProvider = externalContext.getInitParameter(LIFECYCLE_PROVIDER);
- if (lifecycleProvider != null)
- {
- Object obj = createClass(lifecycleProvider, externalContext);
-
- if (obj instanceof LifecycleProvider)
- {
- externalContext.getApplicationMap().put(LIFECYCLE_PROVIDER_INSTANCE_KEY, obj);
- return true;
- }
- }
- }
- catch (ClassNotFoundException | InstantiationException | IllegalAccessException | InvocationTargetException e)
- {
- log.log(Level.SEVERE, "", e);
- }
- return false;
- }
-
-
- private boolean resolveLifecycleProviderFromService(ExternalContext externalContext)
- {
- boolean returnValue = false;
- final ExternalContext extContext = externalContext;
- try
- {
- if (System.getSecurityManager() != null)
- {
- returnValue = AccessController.doPrivileged((PrivilegedExceptionAction<Boolean>) () -> {
- List<String> classList
- = ServiceProviderFinderFactory.getServiceProviderFinder(extContext).
- getServiceProviderList(LIFECYCLE_PROVIDER);
- for (String className : classList)
- {
- Object obj = createClass(className,extContext);
- if (DiscoverableLifecycleProvider.class.isAssignableFrom(obj.getClass()))
- {
- DiscoverableLifecycleProvider discoverableLifecycleProvider =
- (DiscoverableLifecycleProvider) obj;
- if (discoverableLifecycleProvider.isAvailable())
- {
- extContext.getApplicationMap().put(LIFECYCLE_PROVIDER_INSTANCE_KEY,
- discoverableLifecycleProvider);
- return true;
- }
- }
- }
- return false;
- });
- }
- else
- {
- List<String> classList = ServiceProviderFinderFactory.getServiceProviderFinder(extContext).
- getServiceProviderList(LIFECYCLE_PROVIDER);
- for (String className : classList)
- {
- Object obj = createClass(className,extContext);
- if (DiscoverableLifecycleProvider.class.isAssignableFrom(obj.getClass()))
- {
- DiscoverableLifecycleProvider discoverableLifecycleProvider
- = (DiscoverableLifecycleProvider) obj;
- if (discoverableLifecycleProvider.isAvailable())
- {
- extContext.getApplicationMap().put(LIFECYCLE_PROVIDER_INSTANCE_KEY,
- discoverableLifecycleProvider);
- return true;
- }
- }
- }
- }
- }
- catch (ClassNotFoundException | NoClassDefFoundError e)
- {
- // ignore
- }
- catch (InstantiationException | IllegalAccessException | InvocationTargetException e)
- {
- log.log(Level.SEVERE, "", e);
- }
- catch (PrivilegedActionException e)
- {
- throw new FacesException(e);
- }
- return returnValue;
- }
-
- private Object createClass(String className, ExternalContext externalContext)
- throws InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException
- {
- Class<?> clazz = ClassUtils.classForName(className);
-
- try
- {
- return ClassUtils.newInstance(clazz, new Class<?>[]{ ExternalContext.class }, externalContext);
- }
- catch (NoSuchMethodException e)
- {
- return ClassUtils.newInstance(clazz);
- }
- }
-
-
- private LifecycleProvider resolveFallbackLifecycleProvider()
- {
- try
- {
- ClassUtils.classForName("javax.annotation.PreDestroy");
- }
- catch (ClassNotFoundException e)
- {
- // no annotation available don't process annotations
- return new NoAnnotationLifecyleProvider();
- }
- Context context;
- try
- {
- context = new InitialContext();
- try
- {
- ClassUtils.classForName("javax.ejb.EJB");
- // Asume full JEE 5 container
- return new AllAnnotationLifecycleProvider(context);
- }
- catch (ClassNotFoundException e)
- {
- // something else
- return new ResourceAnnotationLifecycleProvider(context);
- }
- }
- catch (NamingException e)
- {
- // no initial context available no injection
- log.log(Level.SEVERE, "No InitialContext found. Using NoInjectionAnnotationProcessor.", e);
- return new NoInjectionAnnotationLifecycleProvider();
- }
- catch (NoClassDefFoundError e)
- {
- //On Google App Engine, javax.naming.Context is a restricted class.
- //In that case, NoClassDefFoundError is thrown. stageName needs to be configured
- //below by context parameter.
- log.log(Level.SEVERE, "No InitialContext class definition found. Using NoInjectionAnnotationProcessor.");
- return new NoInjectionAnnotationLifecycleProvider();
- }
- }
-}
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/DiscoverableLifecycleProvider.java b/impl/src/main/java/org/apache/myfaces/config/annotation/DiscoverableLifecycleProvider.java
deleted file mode 100644
index 82a0cd2..0000000
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/DiscoverableLifecycleProvider.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.myfaces.config.annotation;
-
-/**
- * @author bommel
- */
-public interface DiscoverableLifecycleProvider extends LifecycleProvider
-{
- boolean isAvailable();
-}
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProvider.java b/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProvider.java
deleted file mode 100644
index 1373e2f..0000000
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProvider.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.myfaces.config.annotation;
-
-import java.lang.reflect.InvocationTargetException;
-
-import javax.naming.NamingException;
-
-/**
- * Proposed interface to annotation service. An implementation of this class needs to know the appropriate classloader,
- * dependencies to be injected, and lifecycle methods to be called.
- *
- * @version $Rev$ $Date$
- */
-public interface LifecycleProvider
-{
-
- /**
- * Create an object of the class with the supplied name, inject dependencies as appropriate,
- * and call a postContruct method as appropriate.
- *
- * @param className name of the class of the desired object
- * @return a fully constructed, dependency-injected, and initialized object.
- */
- Object newInstance(String className)
- throws ClassNotFoundException, IllegalAccessException, InstantiationException,
- NamingException, InvocationTargetException;
-
- /**
- * Take whatever steps are needed to shut down the object, including calling a preDestroy method.
- *
- * @param o object to shut down.
- */
- void destroyInstance(Object o) throws IllegalAccessException, InvocationTargetException;
-}
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProvider2.java b/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProvider2.java
deleted file mode 100644
index 99dd21e..0000000
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProvider2.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.myfaces.config.annotation;
-
-import java.lang.reflect.InvocationTargetException;
-
-import javax.naming.NamingException;
-
-/**
- * Proposed interface to annotation service. An implementation of this class needs to know the appropriate classloader,
- * dependencies to be injected, and lifecycle methods to be called.
- *
- * @version $Rev$ $Date$
- */
-public interface LifecycleProvider2 extends LifecycleProvider
-{
- /**
- * Create an object of the class with the supplied name, inject dependencies as appropriate.
- *
- * @param className name of the class of the desired object
- * @return a fully constructed, dependency-injected, and initialized object.
- */
- @Override
- Object newInstance(String className)
- throws ClassNotFoundException, IllegalAccessException, InstantiationException,
- NamingException, InvocationTargetException;
-
- /**
- * Call a postConstruct method as appropriate.
- *
- * @param o object to initialize
- */
- void postConstruct(Object o) throws IllegalAccessException, InvocationTargetException;
-}
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java b/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java
deleted file mode 100644
index e70d05f..0000000
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.myfaces.config.annotation;
-
-import java.security.AccessController;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import java.util.Map;
-
-import javax.faces.FacesException;
-import javax.faces.context.ExternalContext;
-import javax.faces.context.FacesContext;
-
-import org.apache.myfaces.spi.impl.SpiUtils;
-
-public abstract class LifecycleProviderFactory
-{
- protected static final String FACTORY_DEFAULT = DefaultLifecycleProviderFactory.class.getName();
-
- private static final String FACTORY_KEY = LifecycleProviderFactory.class.getName();
-
- public static LifecycleProviderFactory getLifecycleProviderFactory()
- {
- // Since we always provide a StartupFacesContext on initialization time, this is safe:
- return getLifecycleProviderFactory(FacesContext.getCurrentInstance().getExternalContext());
- }
-
- public static LifecycleProviderFactory getLifecycleProviderFactory(ExternalContext ctx)
- {
- Map<String, Object> applicationMap = ctx.getApplicationMap();
- LifecycleProviderFactory instance = (LifecycleProviderFactory) applicationMap.get(FACTORY_KEY);
- if (instance != null)
- {
- return instance;
- }
- LifecycleProviderFactory lpf = null;
- try
- {
-
- if (System.getSecurityManager() != null)
- {
- final ExternalContext ectx = ctx;
- lpf = (LifecycleProviderFactory) AccessController.doPrivileged(
- (PrivilegedExceptionAction) () -> SpiUtils.build(ectx,
- LifecycleProviderFactory.class, FACTORY_DEFAULT));
- }
- else
- {
- lpf = (LifecycleProviderFactory) SpiUtils.build(ctx, LifecycleProviderFactory.class, FACTORY_DEFAULT);
- }
- }
- catch (PrivilegedActionException pae)
- {
- throw new FacesException(pae);
- }
- if (lpf != null)
- {
- applicationMap.put(FACTORY_KEY, lpf);
- }
- return lpf;
- }
-
-
- public static void setLifecycleProviderFactory(LifecycleProviderFactory instance)
- {
- FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put(FACTORY_KEY, instance);
- }
-
- public abstract LifecycleProvider getLifecycleProvider(ExternalContext externalContext);
-
- public abstract void release();
-
-}
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/NoAnnotationLifecyleProvider.java b/impl/src/main/java/org/apache/myfaces/config/annotation/NoAnnotationLifecyleProvider.java
deleted file mode 100644
index 5d6b59d..0000000
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/NoAnnotationLifecyleProvider.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.myfaces.config.annotation;
-
-import org.apache.myfaces.util.lang.ClassUtils;
-
-import java.lang.reflect.InvocationTargetException;
-
-public class NoAnnotationLifecyleProvider implements LifecycleProvider2
-{
- @Override
- public void destroyInstance(Object o) throws IllegalAccessException, InvocationTargetException
- {
-
- }
-
- @Override
- public Object newInstance(String className)
- throws InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException
- {
- return ClassUtils.classForName(className).newInstance();
- }
-
- @Override
- public void postConstruct(Object o) throws IllegalAccessException, InvocationTargetException
- {
- // No op
- }
-
-}
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/NoInjectionAnnotationLifecycleProvider.java b/impl/src/main/java/org/apache/myfaces/config/annotation/NoInjectionAnnotationLifecycleProvider.java
deleted file mode 100644
index 8738ef5..0000000
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/NoInjectionAnnotationLifecycleProvider.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.myfaces.config.annotation;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.WeakHashMap;
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.naming.NamingException;
-
-import org.apache.myfaces.util.lang.ClassUtils;
-
-/**
- * See SRV.14.5 Servlet Specification Version 2.5 JSR 154
- * and Common Annotations for the Java Platform JSR 250
-
- */
-
-public class NoInjectionAnnotationLifecycleProvider implements LifecycleProvider2
-{
- /**
- * Cache the Method instances per ClassLoader using the Class-Name.
- * NOTE that we do it this way, because the only other valid way in order to support a shared
- * classloader scenario would be to use a WeakHashMap<Class<?>, Method[]>, but this
- * creates a cyclic reference between the key and the value of the WeakHashMap which will
- * most certainly cause a memory leak! Furthermore we can manually cleanup the Map when
- * the webapp is undeployed just by removing the Map for the current ClassLoader.
- */
- private volatile static WeakHashMap<ClassLoader, Map<Class,Method[]> > declaredMethodBeans =
- new WeakHashMap<ClassLoader, Map<Class, Method[]>>();
-
- private static Map<Class,Method[]> getDeclaredMethodBeansMap()
- {
- ClassLoader cl = ClassUtils.getContextClassLoader();
-
- Map<Class,Method[]> metadata = (Map<Class,Method[]>) declaredMethodBeans.get(cl);
-
- if (metadata == null)
- {
- // Ensure thread-safe put over _metadata, and only create one map
- // per classloader to hold metadata.
- synchronized (declaredMethodBeans)
- {
- metadata = createDeclaredMethodBeansMap(cl, metadata);
- }
- }
-
- return metadata;
- }
-
- private static Map<Class,Method[]> createDeclaredMethodBeansMap(
- ClassLoader cl, Map<Class,Method[]> metadata)
- {
- metadata = (Map<Class,Method[]>) declaredMethodBeans.get(cl);
- if (metadata == null)
- {
- metadata = new HashMap<>();
- declaredMethodBeans.put(cl, metadata);
- }
- return metadata;
- }
-
- @Override
- public Object newInstance(String className)
- throws InstantiationException, IllegalAccessException, NamingException,
- InvocationTargetException, ClassNotFoundException
- {
- Class clazz = ClassUtils.classForName(className);
- Object object = clazz.newInstance();
- processAnnotations(object);
- //postConstruct(object);
- return object;
- }
-
-
- Method[] getDeclaredMethods(Class clazz)
- {
- Map<Class,Method[]> declaredMethodBeansMap = getDeclaredMethodBeansMap();
- Method[] methods = declaredMethodBeansMap.get(clazz);
- if (methods == null)
- {
- methods = clazz.getDeclaredMethods();
- synchronized(declaredMethodBeansMap)
- {
- declaredMethodBeansMap.put(clazz, methods);
- }
- }
- return methods;
- }
-
- /**
- * Call postConstruct method on the specified instance.
- */
- @Override
- public void postConstruct(Object instance)
- throws IllegalAccessException, InvocationTargetException
- {
- // TODO the servlet spec is not clear about searching in superclass??
- Class clazz = instance.getClass();
- Method[] methods = getDeclaredMethods(clazz);
- if (methods == null)
- {
- methods = clazz.getDeclaredMethods();
- Map<Class,Method[]> declaredMethodBeansMap = getDeclaredMethodBeansMap();
- synchronized(declaredMethodBeansMap)
- {
- declaredMethodBeansMap.put(clazz, methods);
- }
- }
- Method postConstruct = null;
- for (int i = 0; i < methods.length; i++)
- {
- Method method = methods[i];
- if (method.isAnnotationPresent(PostConstruct.class))
- {
- // a method that does not take any arguments
- // the method must not be static
- // must not throw any checked expections
- // the return value must be void
- // the method may be public, protected, package private or private
-
- if ((postConstruct != null)
- || (method.getParameterTypes().length != 0)
- || (Modifier.isStatic(method.getModifiers()))
- || (method.getExceptionTypes().length > 0)
- || (!method.getReturnType().getName().equals("void")))
- {
- throw new IllegalArgumentException("Invalid PostConstruct annotation");
- }
- postConstruct = method;
- }
- }
-
- invokeAnnotatedMethod(postConstruct, instance);
-
- }
-
- @Override
- public void destroyInstance(Object instance)
- throws IllegalAccessException, InvocationTargetException
- {
-
- // TODO the servlet spec is not clear about searching in superclass??
- // May be only check non private fields and methods
- Class clazz = instance.getClass();
- Method[] methods = getDeclaredMethods(clazz);
- Method preDestroy = null;
- for (int i = 0; i < methods.length; i++)
- {
- Method method = methods[i];
- if (method.isAnnotationPresent(PreDestroy.class))
- {
- // must not throw any checked expections
- // the method must not be static
- // must not throw any checked expections
- // the return value must be void
- // the method may be public, protected, package private or private
-
- if ((preDestroy != null)
- || (method.getParameterTypes().length != 0)
- || (Modifier.isStatic(method.getModifiers()))
- || (method.getExceptionTypes().length > 0)
- || (!method.getReturnType().getName().equals("void")))
- {
- throw new IllegalArgumentException("Invalid PreDestroy annotation");
- }
- preDestroy = method;
- }
- }
-
- invokeAnnotatedMethod(preDestroy, instance);
-
- }
-
- private void invokeAnnotatedMethod(Method method, Object instance)
- throws IllegalAccessException, InvocationTargetException
- {
- // At the end the annotated
- // method is invoked
- if (method != null)
- {
- boolean accessibility = method.isAccessible();
- method.setAccessible(true);
- method.invoke(instance);
- method.setAccessible(accessibility);
- }
- }
-
- /**
- * Inject resources in specified instance.
- */
- protected void processAnnotations(Object instance)
- throws IllegalAccessException, InvocationTargetException, NamingException
- {
-
- }
-
-}
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/ResourceAnnotationLifecycleProvider.java b/impl/src/main/java/org/apache/myfaces/config/annotation/ResourceAnnotationLifecycleProvider.java
deleted file mode 100644
index 874a394..0000000
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/ResourceAnnotationLifecycleProvider.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.myfaces.config.annotation;
-
-import javax.naming.NamingException;
-import javax.naming.Context;
-import javax.annotation.Resource;
-import java.lang.reflect.Method;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Field;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.WeakHashMap;
-import org.apache.myfaces.util.lang.ClassUtils;
-
-public class ResourceAnnotationLifecycleProvider extends NoInjectionAnnotationLifecycleProvider
-{
- /**
- * Cache the Method instances per ClassLoader using the Class-Name.
- * NOTE that we do it this way, because the only other valid way in order to support a shared
- * classloader scenario would be to use a WeakHashMap<Class<?>, Method[]>, but this
- * creates a cyclic reference between the key and the value of the WeakHashMap which will
- * most certainly cause a memory leak! Furthermore we can manually cleanup the Map when
- * the webapp is undeployed just by removing the Map for the current ClassLoader.
- */
- private volatile static WeakHashMap<ClassLoader, Map<Class,Field[]> > declaredFieldBeans =
- new WeakHashMap<ClassLoader, Map<Class, Field[]>>();
-
- protected Context context;
- private static final String JAVA_COMP_ENV = "java:comp/env/";
-
- public ResourceAnnotationLifecycleProvider(Context context)
- {
- this.context = context;
- }
-
- private static Map<Class,Field[]> getDeclaredFieldBeansMap()
- {
- ClassLoader cl = ClassUtils.getContextClassLoader();
-
- Map<Class,Field[]> metadata = (Map<Class,Field[]>) declaredFieldBeans.get(cl);
-
- if (metadata == null)
- {
- // Ensure thread-safe put over _metadata, and only create one map
- // per classloader to hold metadata.
- synchronized (declaredFieldBeans)
- {
- metadata = createDeclaredFieldBeansMap(cl, metadata);
- }
- }
-
- return metadata;
- }
-
- private static Map<Class,Field[]> createDeclaredFieldBeansMap(ClassLoader cl, Map<Class,Field[]> metadata)
- {
- metadata = (Map<Class,Field[]>) declaredFieldBeans.get(cl);
- if (metadata == null)
- {
- metadata = new HashMap<>();
- declaredFieldBeans.put(cl, metadata);
- }
- return metadata;
- }
-
- /**
- * Inject resources in specified instance.
- */
- @Override
- protected void processAnnotations(Object instance)
- throws IllegalAccessException, InvocationTargetException, NamingException
- {
- if (context == null)
- {
- // No resource injection
- return;
- }
-
- checkAnnotation(instance.getClass(), instance);
-
- /*
- * May be only check non private fields and methods
- * for @Resource (JSR 250), if used all superclasses MUST be examined
- * to discover all uses of this annotation.
- */
-
- Class superclass = instance.getClass().getSuperclass();
- while (superclass != null && (!superclass.equals(Object.class)))
- {
- checkAnnotation(superclass, instance);
- superclass = superclass.getSuperclass();
- }
- }
-
- Field[] getDeclaredFieldBeans(Class clazz)
- {
- Map<Class,Field[]> declaredFieldBeansMap = getDeclaredFieldBeansMap();
- Field[] fields = declaredFieldBeansMap.get(clazz);
- if (fields == null)
- {
- fields = clazz.getDeclaredFields();
- synchronized(declaredFieldBeansMap)
- {
- declaredFieldBeansMap.put(clazz, fields);
- }
- }
- return fields;
- }
-
- private void checkAnnotation(Class<?> clazz, Object instance)
- throws NamingException, IllegalAccessException, InvocationTargetException
- {
- // Initialize fields annotations
- Field[] fields = getDeclaredFieldBeans(clazz);
- for (int i = 0; i < fields.length; i++)
- {
- Field field = fields[i];
- checkFieldAnnotation(field, instance);
- }
-
- // Initialize methods annotations
- Method[] methods = getDeclaredMethods(clazz);
- for (int i = 0; i < methods.length; i++)
- {
- Method method = methods[i];
- checkMethodAnnotation(method, instance);
- }
- }
-
- protected void checkMethodAnnotation(Method method, Object instance)
- throws NamingException, IllegalAccessException, InvocationTargetException
- {
- if (method.isAnnotationPresent(Resource.class))
- {
- Resource annotation = method.getAnnotation(Resource.class);
- lookupMethodResource(context, instance, method, annotation.name());
- }
- }
-
- protected void checkFieldAnnotation(Field field, Object instance)
- throws NamingException, IllegalAccessException
- {
- if (field.isAnnotationPresent(Resource.class))
- {
- Resource annotation = field.getAnnotation(Resource.class);
- lookupFieldResource(context, instance, field, annotation.name());
- }
- }
-
- /**
- * Inject resources in specified field.
- */
- protected static void lookupFieldResource(javax.naming.Context context, Object instance, Field field, String name)
- throws NamingException, IllegalAccessException
- {
-
- Object lookedupResource;
-
- if ((name != null) && (name.length() > 0))
- {
- // TODO local or global JNDI
- lookedupResource = context.lookup(JAVA_COMP_ENV + name);
- }
- else
- {
- // TODO local or global JNDI
- lookedupResource = context.lookup(JAVA_COMP_ENV + instance.getClass().getName() + '/' + field.getName());
- }
-
- boolean accessibility = field.isAccessible();
- field.setAccessible(true);
- field.set(instance, lookedupResource);
- field.setAccessible(accessibility);
- }
-
-
- /**
- * Inject resources in specified method.
- */
- protected static void lookupMethodResource(javax.naming.Context context, Object instance, Method method,
- String name) throws NamingException, IllegalAccessException, InvocationTargetException
- {
-
- if (!method.getName().startsWith("set")
- || method.getParameterTypes().length != 1
- || !method.getReturnType().getName().equals("void"))
- {
- throw new IllegalArgumentException("Invalid method resource injection annotation");
- }
-
- Object lookedupResource;
-
- if ((name != null) && (name.length() > 0))
- {
- // TODO local or global JNDI
- lookedupResource = context.lookup(JAVA_COMP_ENV + name);
- }
- else
- {
- // TODO local or global JNDI
- lookedupResource =
- context.lookup(JAVA_COMP_ENV + instance.getClass().getName() + '/' + getFieldName(method));
- }
-
- boolean accessibility = method.isAccessible();
- method.setAccessible(true);
- method.invoke(instance, lookedupResource);
- method.setAccessible(accessibility);
- }
-
- /**
- * Returns the field name for the given Method.
- * E.g. setName() will be "name".
- *
- * @param setter the setter method
- * @return the field name of the given setter method
- */
- protected static String getFieldName(Method setter)
- {
- StringBuilder name = new StringBuilder(setter.getName());
-
- // remove 'set'
- name.delete(0, 3);
-
- // lowercase first char
- name.setCharAt(0, Character.toLowerCase(name.charAt(0)));
-
- return name.toString();
- }
-
-}
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/Tomcat7AnnotationLifecycleProvider.java b/impl/src/main/java/org/apache/myfaces/config/annotation/Tomcat7AnnotationLifecycleProvider.java
deleted file mode 100644
index 1a38161..0000000
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/Tomcat7AnnotationLifecycleProvider.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.myfaces.config.annotation;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Map;
-import java.util.WeakHashMap;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.faces.FacesException;
-import javax.faces.context.ExternalContext;
-import javax.faces.context.FacesContext;
-import javax.naming.NamingException;
-
-import org.apache.myfaces.util.lang.ClassUtils;
-import org.apache.tomcat.InstanceManager;
-
-/**
- * An annotation lifecycle provider for Tomcat 7.
- */
-public class Tomcat7AnnotationLifecycleProvider implements DiscoverableLifecycleProvider, LifecycleProvider2
-{
- private static final Logger log = Logger.getLogger(Tomcat7AnnotationLifecycleProvider.class.getName());
-
- private WeakHashMap<ClassLoader, InstanceManager> instanceManagers = null;
-
- public Tomcat7AnnotationLifecycleProvider(ExternalContext externalContext)
- {
- instanceManagers = new WeakHashMap<>();
- }
-
- @Override
- public Object newInstance(String className) throws ClassNotFoundException, IllegalAccessException,
- InstantiationException, NamingException, InvocationTargetException
- {
- Class<?> clazz = ClassUtils.classForName(className);
- if (log.isLoggable(Level.FINEST))
- {
- log.finest("Creating instance of " + className);
- }
- Object object = clazz.newInstance();
-
- return object;
- }
-
- @Override
- public void destroyInstance(Object instance) throws IllegalAccessException, InvocationTargetException
- {
- InstanceManager manager = instanceManagers.get(ClassUtils.getContextClassLoader());
- if (manager != null)
- {
- manager.destroyInstance(instance);
- }
- }
-
- @Override
- public void postConstruct(Object instance) throws IllegalAccessException, InvocationTargetException
- {
- InstanceManager manager = instanceManagers.get(ClassUtils.getContextClassLoader());
- if (manager == null)
- {
- //Initialize manager
- manager = initManager();
- }
-
- //Is initialized
- if (manager != null)
- {
- //Inject resources
- try
- {
- manager.newInstance(instance);
- }
- catch (NamingException e)
- {
- throw new FacesException(e);
- }
- }
- }
-
- @Override
- public boolean isAvailable()
- {
- try
- {
- ClassUtils.classForName("org.apache.tomcat.InstanceManager");
- return true;
- }
- catch (Exception e)
- {
- // ignore
- }
-
- return false;
- }
-
- private InstanceManager initManager()
- {
- FacesContext context = FacesContext.getCurrentInstance();
- if (context == null)
- {
- return null;
- }
-
- ExternalContext extCtx = context.getExternalContext();
- if (extCtx == null)
- {
- return null;
- }
-
- // get application map to access ServletContext attributes
- Map<String, Object> applicationMap = extCtx.getApplicationMap();
-
- InstanceManager instanceManager = (InstanceManager) applicationMap.get(InstanceManager.class.getName());
- if (instanceManager != null)
- {
- instanceManagers.put(ClassUtils.getContextClassLoader(), instanceManager);
- }
-
- return instanceManager;
- }
-
-}
diff --git a/impl/src/main/java/org/apache/myfaces/spi/ServiceProviderFinder.java b/impl/src/main/java/org/apache/myfaces/spi/ServiceProviderFinder.java
index 76e025d..698d0c0 100644
--- a/impl/src/main/java/org/apache/myfaces/spi/ServiceProviderFinder.java
+++ b/impl/src/main/java/org/apache/myfaces/spi/ServiceProviderFinder.java
@@ -76,8 +76,6 @@ public abstract class ServiceProviderFinder
"org.apache.myfaces.spi.ViewScopeProviderFactory",
"org.apache.myfaces.spi.WebConfigProvider",
"org.apache.myfaces.spi.WebConfigProviderFactory",
- "org.apache.myfaces.config.annotation.LifecycleProvider",
- "org.apache.myfaces.config.annotation.LifecycleProviderFactory",
};
/**
diff --git a/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultInjectionProviderFactory.java b/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultInjectionProviderFactory.java
index 82ae81b..5b70727 100644
--- a/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultInjectionProviderFactory.java
+++ b/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultInjectionProviderFactory.java
@@ -58,45 +58,45 @@ public class DefaultInjectionProviderFactory extends InjectionProviderFactory
@Override
public InjectionProvider getInjectionProvider(ExternalContext externalContext)
{
- InjectionProvider lifecycleProvider = null;
+ InjectionProvider injectionProvider = null;
if (externalContext == null)
{
// Really in jsf 2.0, this will not happen, because a Startup/Shutdown
// FacesContext and ExternalContext are provided on initialization and shutdown,
// and in other scenarios the real FacesContext/ExternalContext is provided.
log.info("No ExternalContext using fallback InjectionProvider.");
- lifecycleProvider = resolveFallbackInjectionProvider();
+ injectionProvider = resolveFallbackInjectionProvider();
}
else
{
- lifecycleProvider = (InjectionProvider)
+ injectionProvider = (InjectionProvider)
externalContext.getApplicationMap().get(INJECTION_PROVIDER_INSTANCE_KEY);
}
- if (lifecycleProvider == null)
+ if (injectionProvider == null)
{
if (!resolveInjectionProviderFromExternalContext(externalContext))
{
if (!resolveInjectionProviderFromService(externalContext))
{
- lifecycleProvider = resolveFallbackInjectionProvider();
- externalContext.getApplicationMap().put(INJECTION_PROVIDER_INSTANCE_KEY, lifecycleProvider);
+ injectionProvider = resolveFallbackInjectionProvider();
+ externalContext.getApplicationMap().put(INJECTION_PROVIDER_INSTANCE_KEY, injectionProvider);
}
else
{
//Retrieve it because it was resolved
- lifecycleProvider = (InjectionProvider)
+ injectionProvider = (InjectionProvider)
externalContext.getApplicationMap().get(INJECTION_PROVIDER_INSTANCE_KEY);
}
}
else
{
//Retrieve it because it was resolved
- lifecycleProvider = (InjectionProvider)
+ injectionProvider = (InjectionProvider)
externalContext.getApplicationMap().get(INJECTION_PROVIDER_INSTANCE_KEY);
}
- log.fine("Using InjectionProvider " + lifecycleProvider.getClass().getName());
+ log.fine("Using InjectionProvider " + injectionProvider.getClass().getName());
}
- return lifecycleProvider;
+ return injectionProvider;
}
@Override
@@ -110,11 +110,11 @@ public class DefaultInjectionProviderFactory extends InjectionProviderFactory
{
try
{
- String lifecycleProvider = externalContext.getInitParameter(MyfacesConfig.INJECTION_PROVIDER);
- if (lifecycleProvider != null)
+ String injectionProvider = externalContext.getInitParameter(MyfacesConfig.INJECTION_PROVIDER);
+ if (injectionProvider != null)
{
- Object obj = createClass(lifecycleProvider, externalContext);
+ Object obj = createClass(injectionProvider, externalContext);
if (obj instanceof InjectionProvider)
{
diff --git a/impl/src/main/java/org/apache/myfaces/webapp/StartupServletContextListener.java b/impl/src/main/java/org/apache/myfaces/webapp/StartupServletContextListener.java
index 03fdc6e..79e9186 100755
--- a/impl/src/main/java/org/apache/myfaces/webapp/StartupServletContextListener.java
+++ b/impl/src/main/java/org/apache/myfaces/webapp/StartupServletContextListener.java
@@ -18,7 +18,6 @@
*/
package org.apache.myfaces.webapp;
-import org.apache.myfaces.config.annotation.LifecycleProviderFactory;
import org.apache.myfaces.util.lang.ClassUtils;
import javax.faces.FactoryFinder;
@@ -120,8 +119,6 @@ public class StartupServletContextListener implements ServletContextListener
_facesInitializer.destroyFaces(_servletContext);
- LifecycleProviderFactory.getLifecycleProviderFactory().release();
-
// Destroy startup FacesContext, but note we do before publish postdestroy event on
// plugins and before release factories.
if (facesContext != null)
diff --git a/impl/src/main/resources/META-INF/services/org.apache.myfaces.config.annotation.LifecycleProvider b/impl/src/main/resources/META-INF/services/org.apache.myfaces.config.annotation.LifecycleProvider
deleted file mode 100644
index 571ec44..0000000
--- a/impl/src/main/resources/META-INF/services/org.apache.myfaces.config.annotation.LifecycleProvider
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.myfaces.config.annotation.Tomcat7AnnotationLifecycleProvider
\ No newline at end of file
diff --git a/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedManagedBean.java b/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedManagedBean.java
deleted file mode 100644
index fe3ba34..0000000
--- a/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedManagedBean.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.myfaces.config.annotation;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-
-/**
- * @author Dennis Byrne
- */
-
-class AnnotatedManagedBean {
-
- private boolean postConstructCalled = false; // using a stub for a mock
-
- private boolean preDestroyCalled = false; // using a stob for a mock here
-
- boolean throwExcetion;
-
-
- public AnnotatedManagedBean()
- {
- }
-
- public AnnotatedManagedBean(boolean throwExcetion) {
- this.throwExcetion = throwExcetion;
- }
-
- @PostConstruct
- public void postConstruct() {
- postConstructCalled = true;
-
- if (throwExcetion) {
- throw new RuntimeException();
- }
- }
-
- @PreDestroy
- public void preDestroy() {
- preDestroyCalled = true;
-
- if (throwExcetion) {
- throw new RuntimeException();
- }
- }
-
- boolean isPostConstructCalled() {
- return postConstructCalled;
- }
-
- boolean isPreDestroyCalled() {
- return preDestroyCalled;
- }
-
-}
diff --git a/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedManagedBean2.java b/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedManagedBean2.java
deleted file mode 100644
index 2d8c56c..0000000
--- a/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedManagedBean2.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.myfaces.config.annotation;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-
-/**
- * @author Leonardo Uribe
- */
-
-public class AnnotatedManagedBean2 {
-
- private boolean postConstructCalled = false; // using a stub for a mock
-
- private boolean preDestroyCalled = false; // using a stob for a mock here
-
- boolean throwExcetion;
-
- private String managedProperty;
-
- public AnnotatedManagedBean2()
- {
- }
-
- public AnnotatedManagedBean2(boolean throwExcetion) {
- this.throwExcetion = throwExcetion;
- }
-
- @PostConstruct
- public void postConstruct() {
-
- if (managedProperty == null)
- {
- throw new RuntimeException("managedProperty must be initialized before call of postConstruct() method");
- }
-
- postConstructCalled = true;
-
- if (throwExcetion) {
- throw new RuntimeException();
- }
- }
-
- @PreDestroy
- public void preDestroy() {
- preDestroyCalled = true;
-
- if (throwExcetion) {
- throw new RuntimeException();
- }
- }
-
- boolean isPostConstructCalled() {
- return postConstructCalled;
- }
-
- boolean isPreDestroyCalled() {
- return preDestroyCalled;
- }
-
- public String getManagedProperty() {
- return managedProperty;
- }
-
- public void setManagedProperty(String managedProperty) {
- //Set throught injection
- if (postConstructCalled)
- {
- throw new RuntimeException();
- }
-
- this.managedProperty = managedProperty;
- }
-
-}
diff --git a/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotationProcessorTestCase.java b/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotationProcessorTestCase.java
deleted file mode 100644
index 8750c61..0000000
--- a/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotationProcessorTestCase.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.apache.myfaces.config.annotation;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import org.apache.myfaces.test.base.AbstractJsfTestCase;
-
-import javax.naming.NamingException;
-import java.lang.reflect.InvocationTargetException;
-
-
-public class AnnotationProcessorTestCase extends AbstractJsfTestCase
-{
- protected LifecycleProvider2 lifecycleProvider;
- protected AnnotatedManagedBean managedBean;
-
-
- public AnnotationProcessorTestCase(String string)
- {
- super(string);
- }
-
- public void setUp() throws Exception {
- super.setUp();
- lifecycleProvider = new AllAnnotationLifecycleProvider(null);
- managedBean = new AnnotatedManagedBean();
- }
-
- public void testPostConstruct() throws IllegalAccessException, InvocationTargetException, NamingException, InstantiationException, ClassNotFoundException
- {
- AnnotatedManagedBean managedBean = (AnnotatedManagedBean) lifecycleProvider.newInstance(AnnotatedManagedBean.class.getName());
- lifecycleProvider.postConstruct(managedBean);
- assertTrue(managedBean.isPostConstructCalled());
- assertFalse(managedBean.isPreDestroyCalled());
- }
-
- public void testPreDestroy() throws IllegalAccessException, InvocationTargetException, NamingException, InstantiationException, ClassNotFoundException
- {
- AnnotatedManagedBean managedBean = (AnnotatedManagedBean) lifecycleProvider.newInstance(AnnotatedManagedBean.class.getName());
- lifecycleProvider.postConstruct(managedBean);
- lifecycleProvider.destroyInstance(managedBean);
- assertTrue(managedBean.isPostConstructCalled());
- assertTrue(managedBean.isPreDestroyCalled());
- }
-
- public void testPostConstructException() throws IllegalAccessException, InvocationTargetException
- {
- try
- {
- lifecycleProvider.destroyInstance(new AnnotatedManagedBean(true));
- } catch (InvocationTargetException e) {
- return;
- }
- assertTrue(false);
-
- }
-}
diff --git a/impl/src/test/java/org/apache/myfaces/config/annotation/MockDiscoverableLifecycleProvider.java b/impl/src/test/java/org/apache/myfaces/config/annotation/MockDiscoverableLifecycleProvider.java
deleted file mode 100644
index c0329c7..0000000
--- a/impl/src/test/java/org/apache/myfaces/config/annotation/MockDiscoverableLifecycleProvider.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.apache.myfaces.config.annotation;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-import javax.naming.NamingException;
-import java.lang.reflect.InvocationTargetException;
-
-
-
-public class MockDiscoverableLifecycleProvider implements DiscoverableLifecycleProvider
-{
- private LifecycleProvider processor = new NoInjectionAnnotationLifecycleProvider();
-
- public boolean isAvailable()
- {
- return true;
- }
-
- public Object newInstance(String className) throws InstantiationException, IllegalAccessException, NamingException, InvocationTargetException, ClassNotFoundException
- {
- return processor.newInstance(className);
- }
-
-
- public void destroyInstance(Object o) throws IllegalAccessException, InvocationTargetException
- {
- processor.destroyInstance(o);
- }
-}
diff --git a/impl/src/test/java/org/apache/myfaces/config/annotation/MockLifecycleProvider.java b/impl/src/test/java/org/apache/myfaces/config/annotation/MockLifecycleProvider.java
deleted file mode 100644
index e884832..0000000
--- a/impl/src/test/java/org/apache/myfaces/config/annotation/MockLifecycleProvider.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.apache.myfaces.config.annotation;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-import javax.naming.NamingException;
-import java.lang.reflect.InvocationTargetException;
-
-
-public class MockLifecycleProvider implements LifecycleProvider
-{
- private LifecycleProvider processor = new NoInjectionAnnotationLifecycleProvider();
-
-
- public Object newInstance(String className) throws InstantiationException, NamingException, IllegalAccessException, InvocationTargetException, ClassNotFoundException
- {
- return processor.newInstance(className);
- }
-
-
- public void destroyInstance(Object instance) throws IllegalAccessException, InvocationTargetException
- {
- processor.destroyInstance(instance);
- }
-
-}
diff --git a/impl/src/test/java/org/apache/myfaces/config/annotation/MockLifecycleProvider2.java b/impl/src/test/java/org/apache/myfaces/config/annotation/MockLifecycleProvider2.java
deleted file mode 100644
index 6f2acbf..0000000
--- a/impl/src/test/java/org/apache/myfaces/config/annotation/MockLifecycleProvider2.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.apache.myfaces.config.annotation;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-import javax.naming.NamingException;
-import java.lang.reflect.InvocationTargetException;
-
-
-public class MockLifecycleProvider2 implements LifecycleProvider2
-{
- private LifecycleProvider2 processor = new NoInjectionAnnotationLifecycleProvider();
-
-
- public Object newInstance(String className) throws InstantiationException, NamingException, IllegalAccessException, InvocationTargetException, ClassNotFoundException
- {
- return processor.newInstance(className);
- }
-
-
- public void destroyInstance(Object instance) throws IllegalAccessException, InvocationTargetException
- {
- processor.destroyInstance(instance);
- }
-
-
- public void postConstruct(Object instance) throws IllegalAccessException,
- InvocationTargetException
- {
- processor.postConstruct(instance);
- }
-}
diff --git a/impl/src/test/java/org/apache/myfaces/config/annotation/OwnAnnotationProcessorTestCase.java b/impl/src/test/java/org/apache/myfaces/config/annotation/OwnAnnotationProcessorTestCase.java
deleted file mode 100644
index f2a1356..0000000
--- a/impl/src/test/java/org/apache/myfaces/config/annotation/OwnAnnotationProcessorTestCase.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package org.apache.myfaces.config.annotation;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import org.apache.myfaces.test.base.AbstractJsfTestCase;
-
-
-public class OwnAnnotationProcessorTestCase extends AbstractJsfTestCase
-{
- protected LifecycleProvider lifecycleProvider;
- protected AnnotatedManagedBean managedBean;
- private static final String TEST_LIFECYCLE_PROVIDER = "org.apache.myfaces.config.annotation.MockLifecycleProvider";
-
-
- public OwnAnnotationProcessorTestCase(String string)
- {
- super(string);
- }
-
- public void setUp() throws Exception {
- super.setUp();
- LifecycleProviderFactory.getLifecycleProviderFactory(externalContext).release();
- servletContext.addInitParameter(DefaultLifecycleProviderFactory.LIFECYCLE_PROVIDER, TEST_LIFECYCLE_PROVIDER);
- lifecycleProvider = LifecycleProviderFactory.getLifecycleProviderFactory().getLifecycleProvider(externalContext);
- managedBean = new AnnotatedManagedBean();
-
- }
-
- public void testOwnProcessor()
- {
- assertEquals(TEST_LIFECYCLE_PROVIDER, lifecycleProvider.getClass().getName());
- }
-}
diff --git a/impl/src/test/java/org/apache/myfaces/test/core/AbstractMyFacesTestCase.java b/impl/src/test/java/org/apache/myfaces/test/core/AbstractMyFacesTestCase.java
index b724ebd..a601e4a 100644
--- a/impl/src/test/java/org/apache/myfaces/test/core/AbstractMyFacesTestCase.java
+++ b/impl/src/test/java/org/apache/myfaces/test/core/AbstractMyFacesTestCase.java
@@ -64,7 +64,6 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.myfaces.config.ConfigFilesXmlValidationUtils;
import org.apache.myfaces.config.DefaultFacesConfigurationProvider;
import org.apache.myfaces.config.RuntimeConfig;
-import org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider;
import org.apache.myfaces.config.element.FacesConfig;
import org.apache.myfaces.config.impl.element.FactoryImpl;
import org.apache.myfaces.lifecycle.LifecycleImpl;
@@ -242,8 +241,6 @@ public abstract class AbstractMyFacesTestCase
servletContext.addInitParameter(ViewHandler.FACELETS_REFRESH_PERIOD_PARAM_NAME,"-1");
servletContext.addInitParameter("org.apache.myfaces.spi.InjectionProvider",
NoInjectionAnnotationInjectionProvider.class.getName());
- servletContext.addInitParameter("org.apache.myfaces.config.annotation.LifecycleProvider",
- NoInjectionAnnotationLifecycleProvider.class.getName());
}
/**
diff --git a/impl/src/test/java/org/apache/myfaces/test/core/runner/AbstractJsfTestContainer.java b/impl/src/test/java/org/apache/myfaces/test/core/runner/AbstractJsfTestContainer.java
index 6a5826d..eb6ed84 100644
--- a/impl/src/test/java/org/apache/myfaces/test/core/runner/AbstractJsfTestContainer.java
+++ b/impl/src/test/java/org/apache/myfaces/test/core/runner/AbstractJsfTestContainer.java
@@ -62,7 +62,6 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.myfaces.config.ConfigFilesXmlValidationUtils;
import org.apache.myfaces.config.DefaultFacesConfigurationProvider;
import org.apache.myfaces.config.RuntimeConfig;
-import org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider;
import org.apache.myfaces.config.element.FacesConfig;
import org.apache.myfaces.config.impl.element.FactoryImpl;
import org.apache.myfaces.lifecycle.LifecycleImpl;
@@ -240,9 +239,7 @@ public class AbstractJsfTestContainer
servletContext.addInitParameter("javax.faces.PROJECT_STAGE", "UnitTest");
servletContext.addInitParameter("javax.faces.PARTIAL_STATE_SAVING", "true");
servletContext.addInitParameter(ViewHandler.FACELETS_REFRESH_PERIOD_PARAM_NAME,"-1");
- servletContext.addInitParameter("org.apache.myfaces.config.annotation.LifecycleProvider",
- NoInjectionAnnotationLifecycleProvider.class.getName());
-
+
TestConfig testConfig = getTestJavaClass().getAnnotation(TestConfig.class);
if (testConfig != null && testConfig.oamAnnotationScanPackages() != null &&
testConfig.oamAnnotationScanPackages().length() > 0)
diff --git a/impl/src/test/resources/META-INF/services/org.apache.myfaces.config.annotation.LifecycleProvider b/impl/src/test/resources/META-INF/services/org.apache.myfaces.config.annotation.LifecycleProvider
deleted file mode 100644
index cb4e415..0000000
--- a/impl/src/test/resources/META-INF/services/org.apache.myfaces.config.annotation.LifecycleProvider
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.myfaces.config.annotation.TestDiscoverableLifecycleProvider
\ No newline at end of file
diff --git a/parent/pom.xml b/parent/pom.xml
index 5d79d5a..2968585 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -424,7 +424,7 @@
</dependency>
- <!-- tomcat 7 support (LifecycleProvider) -->
+ <!-- tomcat 7 support (InjectionProvider) -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
diff --git a/parent/src/site/apt/googleappenginesupport.apt b/parent/src/site/apt/googleappenginesupport.apt
index e112d49..538eb48 100644
--- a/parent/src/site/apt/googleappenginesupport.apt
+++ b/parent/src/site/apt/googleappenginesupport.apt
@@ -57,15 +57,6 @@ Myfaces Core 2.0 on Google App Engine
+------------------------------------------------------------------------+
<web-app>
...
-
- <!--
- We need to set annotation lifecycyle provider manually as org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider.
- Other providers use some classes that are restricted on Google App Engine.
- -->
- <context-param>
- <param-name>org.apache.myfaces.config.annotation.LifecycleProvider</param-name>
- <param-value>org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider</param-value>
- </context-param>
<!--
Need to set a secret to avoid javax.crypto.BadPaddingException.
diff --git a/parent/src/site/apt/myfaces2-googleappengine-eclipse-tutorial.apt b/parent/src/site/apt/myfaces2-googleappengine-eclipse-tutorial.apt
index 574963c..6c6f904 100644
--- a/parent/src/site/apt/myfaces2-googleappengine-eclipse-tutorial.apt
+++ b/parent/src/site/apt/myfaces2-googleappengine-eclipse-tutorial.apt
@@ -106,20 +106,6 @@ Tutorial : Configuring MyFaces 2 to run on Google App Engine with Eclipse
+------------------------------------------------------------------------+
<web-app ...
...
- <!--
- We need to set annotation lifecycle provider manually as
- org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider.
- Other providers use some classes that are restricted on Google App Engine.
- -->
- <context-param>
- <param-name>
- org.apache.myfaces.config.annotation.LifecycleProvider
- </param-name>
- <param-value>
- org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider
- </param-value>
- </context-param>
-
<!--
Need to set a secret to avoid javax.crypto.BadPaddingException.
"param-value" must be Base64 encoded.
diff --git a/parent/src/site/apt/myfaces2-googleappengine-idea-tutorial.apt b/parent/src/site/apt/myfaces2-googleappengine-idea-tutorial.apt
index 2b5e168..73d4192 100644
--- a/parent/src/site/apt/myfaces2-googleappengine-idea-tutorial.apt
+++ b/parent/src/site/apt/myfaces2-googleappengine-idea-tutorial.apt
@@ -148,7 +148,7 @@ Tutorial : Configuring MyFaces 2 to run on Google App Engine with IntelliJ IDEA
[[2]] Now, we will add the MyFaces jars as an "External Library". I did this step to solve
compilation problems in my managed beans. Without explicitly adding an External Library, "javax.faces"
- namespace is not visible in my managed beans �which we will create in the next steps- even if the jars
+ namespace is not visible in my managed beans �which we will create in the next steps- even if the jars
exist in "WEB-INF/lib". I am sure an experienced IDEA user can solve this problem in a better way.
[[a]] Right-click on the project and select "Module Settings".
@@ -202,7 +202,7 @@ Tutorial : Configuring MyFaces 2 to run on Google App Engine with IntelliJ IDEA
[images/gaetutorial-idea/myfaces2-gae-idea-tut-22-jar-verification.jpg] MyFaces Jar Verification
- [[e]] Put el-api-x.x.jar and el-impl-1.1.jar �which you've downloaded at step 3 of
+ [[e]] Put el-api-x.x.jar and el-impl-1.1.jar �which you've downloaded at step 3 of
"Downloading and Configuration" section- into "WEB-INF/lib".
[images/gaetutorial-idea/myfaces2-gae-idea-tut-23-paste-el-jars.jpg] Paste EL Jars
@@ -215,19 +215,6 @@ Tutorial : Configuring MyFaces 2 to run on Google App Engine with IntelliJ IDEA
<web-app ...
...
<!--
- We need to set annotation lifecycle provider manually as org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider.
- Other providers use some classes that are restricted on Google App Engine.
- -->
- <context-param>
- <param-name>
- org.apache.myfaces.config.annotation.LifecycleProvider
- </param-name>
- <param-value>
- org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider
- </param-value>
- </context-param>
-
- <!--
Need to set a secret to avoid javax.crypto.BadPaddingException.
"param-value" must be Base64 encoded.
More details: http://wiki.apache.org/myfaces/Secure_Your_Application