You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mm...@apache.org on 2007/08/02 01:19:08 UTC
svn commit: r561987 - in /myfaces:
core/trunk/impl/src/main/java/org/apache/myfaces/application/
core/trunk/impl/src/main/java/org/apache/myfaces/config/
core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/
core/trunk/impl/src/main/java/org/apac...
Author: mmarinschek
Date: Wed Aug 1 16:19:06 2007
New Revision: 561987
URL: http://svn.apache.org/viewvc?view=rev&rev=561987
Log:
https://issues.apache.org/jira/browse/MYFACES-1689: Reload of faces-config-files if changes are detected
Modified:
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ApplicationFactoryImpl.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/RuntimeConfig.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleFactoryImpl.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/RenderKitFactoryImpl.java
myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java
myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java
myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXmlParser.java
myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/WEB-INF/examples-config.xml
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ApplicationFactoryImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ApplicationFactoryImpl.java?view=diff&rev=561987&r1=561986&r2=561987
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ApplicationFactoryImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/ApplicationFactoryImpl.java Wed Aug 1 16:19:06 2007
@@ -44,8 +44,16 @@
public ApplicationFactoryImpl()
{
+ createAndLogNewApplication();
+ }
+
+ private void createAndLogNewApplication() {
_application = new ApplicationImpl();
if (log.isTraceEnabled()) log.trace("New ApplicationFactory instance created");
+ }
+
+ public void purgeApplication(){
+ createAndLogNewApplication();
}
public Application getApplication()
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java?view=diff&rev=561987&r1=561986&r2=561987
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java Wed Aug 1 16:19:06 2007
@@ -31,6 +31,7 @@
import org.apache.myfaces.lifecycle.LifecycleFactoryImpl;
import org.apache.myfaces.renderkit.RenderKitFactoryImpl;
import org.apache.myfaces.renderkit.html.HtmlRenderKitImpl;
+import org.apache.myfaces.shared_impl.config.MyfacesConfig;
import org.apache.myfaces.shared_impl.util.ClassUtils;
import org.apache.myfaces.shared_impl.util.LocaleUtils;
import org.apache.myfaces.shared_impl.util.StateUtils;
@@ -54,6 +55,7 @@
import java.io.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLConnection;
import java.util.*;
@@ -100,6 +102,8 @@
private static final String META_INF_MANIFEST_SUFFIX = "!/META-INF/MANIFEST.MF";
private static final String JAR_PREFIX = "jar:";
+ private static long lastUpdate;
+
public static final String MYFACES_API_PACKAGE_NAME = "myfaces-api";
public static final String MYFACES_IMPL_PACKAGE_NAME = "myfaces-impl";
public static final String MYFACES_TOMAHAWK_PACKAGE_NAME = "tomahawk";
@@ -113,6 +117,83 @@
}
+ private long getResourceLastModified(String resource){
+ try {
+ URL url = _externalContext.getResource(resource);
+ if (url != null) {
+ return url.openConnection().getLastModified();
+ }
+ } catch (IOException e) {
+ log.error("Could not read resource " + resource, e);
+ }
+ return 0;
+ }
+
+ private long getLastModifiedTime(){
+ long lastModified = 0;
+ long resModified;
+
+ resModified = getResourceLastModified(DEFAULT_FACES_CONFIG);
+ if (resModified > lastModified)
+ lastModified = resModified;
+
+
+ List configFilesList = getConfigFilesList();
+
+ for (int i = 0; i < configFilesList.size(); i++) {
+ String systemId = (String) configFilesList.get(i);
+
+ resModified = getResourceLastModified(systemId);
+ if (resModified > lastModified)
+ lastModified = resModified;
+
+ }
+
+ return lastModified;
+ }
+
+ public void update(){
+ long refreshPeriod = (MyfacesConfig.getCurrentInstance(_externalContext).getConfigRefreshPeriod())*1000;
+
+ if (refreshPeriod > 0){
+ long ttl = lastUpdate + refreshPeriod;
+ if ((System.currentTimeMillis() > ttl) && (getLastModifiedTime() > ttl)) {
+ try {
+ purgeConfiguration();
+ } catch (NoSuchMethodException e) {
+ log.error("Configuration objects do not support clean-up. Update aborted");
+ return;
+ } catch (IllegalAccessException e) {
+ log.fatal("Error during configuration clean-up" + e.getMessage());
+ } catch (InvocationTargetException e) {
+ log.fatal("Error during configuration clean-up" + e.getMessage());
+ }
+ configure();
+ }
+ }
+ }
+
+ private void purgeConfiguration() throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
+
+ Method purgeMethod;
+ Class[] emptyParameterList = new Class[]{};
+
+ ApplicationFactory applicationFactory = (ApplicationFactory) FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+ purgeMethod = applicationFactory.getClass().getMethod("purgeApplication", emptyParameterList);
+ purgeMethod.invoke(applicationFactory, emptyParameterList);
+
+ RenderKitFactory renderKitFactory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+ purgeMethod = renderKitFactory.getClass().getMethod("purgeRenderKit", emptyParameterList);
+ purgeMethod.invoke(renderKitFactory, emptyParameterList);
+
+ RuntimeConfig.getCurrentInstance(_externalContext).purge();
+
+ LifecycleFactory lifecycleFactory = (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+ purgeMethod = lifecycleFactory.getClass().getMethod("purgeLifecycle", emptyParameterList);
+ purgeMethod.invoke(lifecycleFactory, emptyParameterList);
+
+ // factories and serial factory need not be purged...
+ }
public void configure()
throws FacesException
@@ -150,6 +231,9 @@
configureRuntimeConfig();
configureLifecycle();
handleSerialFactory();
+
+ //record the time of update
+ lastUpdate = System.currentTimeMillis();
}
private void feedStandardConfig() throws IOException, SAXException
@@ -502,32 +586,44 @@
private void feedContextSpecifiedConfig() throws IOException, SAXException
{
+ List configFilesList = getConfigFilesList();
+ for (int i = 0; i < configFilesList.size(); i++) {
+ String systemId = (String) configFilesList.get(i);
+ InputStream stream = _externalContext.getResourceAsStream(systemId);
+ if (stream == null)
+ {
+ log.error("Faces config resource " + systemId + " not found");
+ continue;
+ }
+
+ if (log.isInfoEnabled()) log.info("Reading config " + systemId);
+ _dispenser.feed(_unmarshaller.getFacesConfig(stream, systemId));
+ stream.close();
+ }
+ }
+
+ private List getConfigFilesList() {
String configFiles = _externalContext.getInitParameter(FacesServlet.CONFIG_FILES_ATTR);
+ List configFilesList = new ArrayList();
if (configFiles != null)
{
StringTokenizer st = new StringTokenizer(configFiles, ",", false);
while (st.hasMoreTokens())
{
String systemId = st.nextToken().trim();
-
+
if(log.isWarnEnabled() && DEFAULT_FACES_CONFIG.equals(systemId))
- log.warn(DEFAULT_FACES_CONFIG + " has been specified in the " +
+ log.warn(DEFAULT_FACES_CONFIG + " has been specified in the " +
FacesServlet.CONFIG_FILES_ATTR + " context parameter of " +
- "the deployment descriptor. This should be removed, " +
- "as it will be loaded twice. See JSF spec 1.1, 10.3.2");
-
- InputStream stream = _externalContext.getResourceAsStream(systemId);
- if (stream == null)
- {
- log.error("Faces config resource " + systemId + " not found");
- continue;
- }
+ "the deployment descriptor. This will automatically be removed, " +
+ "if we wouldn't do this, it would be loaded twice. See JSF spec 1.1, 10.3.2");
+ else
+ configFilesList.add(systemId);
+
- if (log.isInfoEnabled()) log.info("Reading config " + systemId);
- _dispenser.feed(_unmarshaller.getFacesConfig(stream, systemId));
- stream.close();
}
}
+ return configFilesList;
}
@@ -724,12 +820,35 @@
}
+ removePurgedBeansFromSessionAndApplication(runtimeConfig);
+
for (Iterator iterator = _dispenser.getNavigationRules(); iterator.hasNext();)
{
NavigationRule rule = (NavigationRule) iterator.next();
runtimeConfig.addNavigationRule(rule);
}
+ }
+
+ private void removePurgedBeansFromSessionAndApplication(RuntimeConfig runtimeConfig) {
+ Map oldManagedBeans = runtimeConfig.getManagedBeansNotReaddedAfterPurge();
+ if(oldManagedBeans!=null) {
+ Iterator it=oldManagedBeans.entrySet().iterator();
+ while(it.hasNext()) {
+ Map.Entry entry = (Map.Entry) it.next();
+ ManagedBean bean = (ManagedBean) entry.getValue();
+
+ String scope = bean.getManagedBeanScope();
+
+ if(scope!=null && scope.equalsIgnoreCase("session")) {
+ _externalContext.getSessionMap().remove(entry.getKey());
+ }
+ else if(scope!=null && scope.equalsIgnoreCase("application")) {
+ _externalContext.getApplicationMap().remove(entry.getKey());
+ }
+ }
+ }
+ runtimeConfig.resetManagedBeansNotReaddedAfterPurge();
}
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/RuntimeConfig.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/RuntimeConfig.java?view=diff&rev=561987&r1=561986&r2=561987
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/RuntimeConfig.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/RuntimeConfig.java Wed Aug 1 16:19:06 2007
@@ -40,6 +40,7 @@
private Collection _navigationRules = new ArrayList();
private Map _managedBeans = new HashMap();
+ private Map _oldManagedBeans = new HashMap();
private Map _managedBeansPerLocation = new HashMap();
private boolean _navigationRulesChanged=false;
@@ -56,6 +57,14 @@
return runtimeConfig;
}
+ public void purge(){
+ _navigationRules = new ArrayList();
+ _oldManagedBeans = _managedBeans;
+ _managedBeans = new HashMap();
+ _managedBeansPerLocation = new HashMap();
+ _navigationRulesChanged = false;
+ }
+
/**
* Return the navigation rules that can be used by the NavigationHandler implementation.
* @return a Collection of {@link org.apache.myfaces.config.element.NavigationRule NavigationRule}s
@@ -116,6 +125,9 @@
public void addManagedBean(String name, ManagedBean managedBean)
{
_managedBeans.put(name, managedBean);
+ if(_oldManagedBeans!=null)
+ _oldManagedBeans.remove(name);
+
List li = (List) _managedBeansPerLocation.get(name);
if(li == null) {
@@ -124,5 +136,13 @@
}
li.add(managedBean);
+ }
+
+ public Map getManagedBeansNotReaddedAfterPurge() {
+ return _oldManagedBeans;
+ }
+
+ public void resetManagedBeansNotReaddedAfterPurge() {
+ _oldManagedBeans = null;
}
}
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleFactoryImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleFactoryImpl.java?view=diff&rev=561987&r1=561986&r2=561987
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleFactoryImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleFactoryImpl.java Wed Aug 1 16:19:06 2007
@@ -40,6 +40,11 @@
addLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE, new LifecycleImpl());
}
+ public void purgeLifecycle(){
+ _lifecycles.clear();
+ addLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE, new LifecycleImpl());
+ }
+
public void addLifecycle(String id, Lifecycle lifecycle)
{
synchronized (_lifecycles)
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java?view=diff&rev=561987&r1=561986&r2=561987
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java Wed Aug 1 16:19:06 2007
@@ -30,6 +30,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.myfaces.util.DebugUtils;
+import org.apache.myfaces.config.FacesConfigurator;
+import org.apache.myfaces.shared_impl.webapp.webxml.WebXml;
/**
* Implements the lifecycle as described in Spec. 1.0 PFD Chapter 2
@@ -65,6 +67,10 @@
}
public void execute(FacesContext facesContext) throws FacesException {
+ //refresh all configuration information if according web-xml parameter is set.
+ WebXml.update(facesContext.getExternalContext());
+ new FacesConfigurator(facesContext.getExternalContext()).update();
+
PhaseListenerManager phaseListenerMgr = new PhaseListenerManager(this, facesContext, getPhaseListeners());
for(int executorIndex = 0;executorIndex < lifecycleExecutors.length;executorIndex++) {
if(executePhase(facesContext, lifecycleExecutors[executorIndex], phaseListenerMgr)) {
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/RenderKitFactoryImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/RenderKitFactoryImpl.java?view=diff&rev=561987&r1=561986&r2=561987
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/RenderKitFactoryImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/renderkit/RenderKitFactoryImpl.java Wed Aug 1 16:19:06 2007
@@ -45,6 +45,9 @@
{
}
+ public void purgeRenderKit(){
+ _renderkits.clear();
+ }
public void addRenderKit(String renderKitId, RenderKit renderKit)
{
Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java?view=diff&rev=561987&r1=561986&r2=561987
==============================================================================
--- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java (original)
+++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java Wed Aug 1 16:19:06 2007
@@ -48,6 +48,9 @@
private static final String APPLICATION_MAP_PARAM_NAME = MyfacesConfig.class.getName();
+ public static final String INIT_PARAM_CONFIG_REFRESH_PERIOD = "org.apache.myfaces.CONFIG_REFRESH_PERIOD";
+ public static final long INIT_PARAM_CONFIG_REFRESH_PERIOD_DEFAULT = 2;
+
public static final String INIT_PARAM_RESOURCE_VIRTUAL_PATH = "org.apache.myfaces.RESOURCE_VIRTUAL_PATH";
public static final String INIT_PARAM_RESOURCE_VIRTUAL_PATH_DEFAULT = "/faces/myFacesExtensionResource";
@@ -77,6 +80,7 @@
private boolean _detectJavascript;
private boolean _allowJavascript;
private boolean _autoScroll;
+ private long _configRefreshPeriod;
private String _addResourceClass;
private String _resourceVirtualPath;
private boolean _checkExtensionsFilter;
@@ -158,6 +162,9 @@
myfacesConfig.setReadonlyAsDisabledForSelect(getBooleanInitParameter(extCtx, INIT_READONLY_AS_DISABLED_FOR_SELECT,
INIT_READONLY_AS_DISABLED_FOR_SELECT_DEFAULT));
+ myfacesConfig.setConfigRefreshPeriod(getLongInitParameter(extCtx, INIT_PARAM_CONFIG_REFRESH_PERIOD,
+ INIT_PARAM_CONFIG_REFRESH_PERIOD_DEFAULT));
+
if (TOMAHAWK_AVAILABLE)
{
myfacesConfig.setDetectJavascript(getBooleanInitParameter(extCtx, INIT_PARAM_DETECT_JAVASCRIPT,
@@ -228,6 +235,27 @@
}
}
+ private static long getLongInitParameter(ExternalContext externalContext,
+ String paramName,
+ long defaultValue)
+ {
+ String strValue = externalContext.getInitParameter(paramName);
+ if (strValue == null)
+ {
+ if (log.isInfoEnabled()) log.info("No context init parameter '" + paramName + "' found, using default value " + defaultValue);
+ return defaultValue;
+ }
+ else
+ {
+ try {
+ return Long.parseLong(paramName);
+ } catch (NumberFormatException e) {
+ if (log.isWarnEnabled()) log.warn("Wrong context init parameter '" + paramName + "' (='" + strValue + "'), using default value " + defaultValue);
+ }
+ return defaultValue;
+ }
+ }
+
private static String getStringInitParameter(ExternalContext externalContext,
String paramName,
String defaultValue)
@@ -363,4 +391,12 @@
{
_checkExtensionsFilter = extensionsFilter;
}
+
+ public long getConfigRefreshPeriod() {
+ return _configRefreshPeriod;
+ }
+
+ public void setConfigRefreshPeriod(long configRefreshPeriod) {
+ _configRefreshPeriod = configRefreshPeriod;
+ }
}
Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java?view=diff&rev=561987&r1=561986&r2=561987
==============================================================================
--- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java (original)
+++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java Wed Aug 1 16:19:06 2007
@@ -28,6 +28,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.myfaces.shared.config.MyfacesConfig;
/**
* @author Manfred Geiler (latest modification by $Author$)
@@ -35,7 +36,12 @@
*/
public class WebXml
{
- private static final Log log = LogFactory.getLog(WebXmlParser.class);
+ private static final Log log = LogFactory.getLog(WebXml.class);
+
+
+ private static long refreshPeriod;
+
+ private long parsingTime;
private Map _servlets = new HashMap();
private Map _servletMappings = new HashMap();
@@ -185,6 +191,21 @@
return _facesExtensionsFilterMappings;
}
+ protected void setParsingTime(long parsingTime){
+ this.parsingTime = parsingTime;
+ }
+
+ protected boolean isOld(ExternalContext context) {
+ if (refreshPeriod > 0) {
+ long ttl = this.parsingTime + refreshPeriod;
+ if (System.currentTimeMillis() > ttl) {
+ long lastModified = WebXmlParser.getWebXmlLastModified(context);
+ return lastModified == 0 || lastModified > ttl;
+ }
+ }
+ return false;
+ }
+
private static final String WEB_XML_ATTR = WebXml.class.getName();
public static WebXml getWebXml(ExternalContext context)
{
@@ -206,5 +227,13 @@
WebXmlParser parser = new WebXmlParser(context);
WebXml webXml = parser.parse();
context.getApplicationMap().put(WEB_XML_ATTR, webXml);
+ long configRefreshPeriod = MyfacesConfig.getCurrentInstance(context).getConfigRefreshPeriod();
+ webXml.setParsingTime(System.currentTimeMillis());
+ refreshPeriod = (configRefreshPeriod * 1000);
+ }
+ public static void update(ExternalContext context){
+ if (getWebXml(context).isOld(context)){
+ WebXml.init(context);
+ }
}
}
Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXmlParser.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXmlParser.java?view=diff&rev=561987&r1=561986&r2=561987
==============================================================================
--- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXmlParser.java (original)
+++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXmlParser.java Wed Aug 1 16:19:06 2007
@@ -116,6 +116,17 @@
}
}
+ public static long getWebXmlLastModified(ExternalContext context) {
+ try {
+ URL url = context.getResource(WEB_XML_PATH);
+ if (url != null)
+ return url.openConnection().getLastModified();
+ } catch (IOException e) {
+ log.error("Could not find web.xml in path " + WEB_XML_PATH);
+ }
+ return 0L;
+ }
+
private InputSource createContextInputSource(String publicId, String systemId)
{
Modified: myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/WEB-INF/examples-config.xml
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/WEB-INF/examples-config.xml?view=diff&rev=561987&r1=561986&r2=561987
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/WEB-INF/examples-config.xml (original)
+++ myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/WEB-INF/examples-config.xml Wed Aug 1 16:19:06 2007
@@ -19,13 +19,6 @@
<managed-bean-class>org.apache.myfaces.examples.convertStringUtils.ConvertStringUtilsBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
-
-
- <managed-bean>
- <managed-bean-name>passwordStrengthBean</managed-bean-name>
- <managed-bean-class>org.apache.myfaces.examples.passwordStrength.PasswordStrengthBean</managed-bean-class>
- <managed-bean-scope>request</managed-bean-scope>
- </managed-bean>
<!-- managed bean for notifierBean-->