You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2009/03/04 15:54:37 UTC
svn commit: r750030 - in /myfaces/extensions/validator/trunk:
component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/
component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/...
Author: gpetracek
Date: Wed Mar 4 14:54:36 2009
New Revision: 750030
URL: http://svn.apache.org/viewvc?rev=750030&view=rev
Log:
EXTVAL-34: support for pluggable labeled faces messages (for a better trinidad integration)
Added:
myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/
myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/
myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadFacesMessageFactory.java
myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadViolationMessage.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FacesMessageFactory.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/DefaultFacesMessageFactory.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/LabeledMessage.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/ViolationMessage.java
Modified:
myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java
myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/CustomInformation.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/DefaultFactoryFinder.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FactoryNames.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractAnnotationValidationStrategy.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java
myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsValidationExceptionInterceptor.java
myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java
Modified: myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java?rev=750030&r1=750029&r2=750030&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java (original)
+++ myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java Wed Mar 4 14:54:36 2009
@@ -24,6 +24,7 @@
import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
import org.apache.myfaces.extensions.validator.core.property.PropertyInformationKeys;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
+import org.apache.myfaces.extensions.validator.core.validation.message.LabeledMessage;
import org.apache.myfaces.extensions.validator.util.ReflectionUtils;
import org.apache.myfaces.extensions.validator.util.ExtValUtils;
import org.apache.myfaces.trinidad.context.RequestContext;
@@ -70,9 +71,17 @@
label = metaDataEntry.getProperty(PropertyInformationKeys.LABEL, String.class);
}
- for(int i = 0; i < 3; i++)
+ if(facesMessage instanceof LabeledMessage)
{
- ExtValUtils.tryToPlaceLabel(facesMessage, label, i);
+ ((LabeledMessage)facesMessage).setLabelText(label);
+ }
+ //if someone uses a normal faces message
+ else
+ {
+ for(int i = 0; i < 3; i++)
+ {
+ ExtValUtils.tryToPlaceLabel(facesMessage, label, i);
+ }
}
}
return true;
Modified: myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java?rev=750030&r1=750029&r2=750030&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java (original)
+++ myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java Wed Mar 4 14:54:36 2009
@@ -25,6 +25,7 @@
import org.apache.myfaces.extensions.validator.core.factory.FactoryNames;
import org.apache.myfaces.extensions.validator.trinidad.initializer.component.TrinidadComponentInitializer;
import org.apache.myfaces.extensions.validator.trinidad.WebXmlParameter;
+import org.apache.myfaces.extensions.validator.trinidad.validation.message.TrinidadFacesMessageFactory;
import org.apache.myfaces.extensions.validator.trinidad.renderkit.ExtValTrinidadRendererProxy;
import org.apache.myfaces.extensions.validator.trinidad.interceptor.TrinidadValidationExceptionInterceptor;
import org.apache.myfaces.extensions.validator.trinidad.interceptor.TrinidadRendererInterceptor;
@@ -81,6 +82,10 @@
ExtValContext.getContext()
.addGlobalProperty(ExtValRendererProxy.KEY, ExtValTrinidadRendererProxy.class.getName());
+ ExtValContext.getContext()
+ .addGlobalProperty(
+ FactoryNames.FACES_MESSAGE_FACTORY.name(),
+ TrinidadFacesMessageFactory.class.getName());
/*
* if there are further incompatible renderers use the following quick-fix:
* ExtValContext.getContext()
Added: myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadFacesMessageFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadFacesMessageFactory.java?rev=750030&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadFacesMessageFactory.java (added)
+++ myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadFacesMessageFactory.java Wed Mar 4 14:54:36 2009
@@ -0,0 +1,45 @@
+/*
+ * 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.extensions.validator.trinidad.validation.message;
+
+import org.apache.myfaces.extensions.validator.core.validation.message.DefaultFacesMessageFactory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+import javax.faces.application.FacesMessage;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.2
+ */
+@UsageInformation(UsageCategory.INTERNAL)
+public class TrinidadFacesMessageFactory extends DefaultFacesMessageFactory
+{
+ @Override
+ protected boolean isLabeledFacesMessage(FacesMessage facesMessage)
+ {
+ return facesMessage instanceof TrinidadViolationMessage;
+ }
+
+ @Override
+ public FacesMessage create(FacesMessage.Severity severity, String summary, String detail)
+ {
+ return new TrinidadViolationMessage(severity, summary, detail);
+ }
+}
Added: myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadViolationMessage.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadViolationMessage.java?rev=750030&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadViolationMessage.java (added)
+++ myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadViolationMessage.java Wed Mar 4 14:54:36 2009
@@ -0,0 +1,51 @@
+/*
+ * 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.extensions.validator.trinidad.validation.message;
+
+import org.apache.myfaces.trinidad.util.LabeledFacesMessage;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.core.validation.message.LabeledMessage;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.2
+ */
+@UsageInformation(UsageCategory.INTERNAL)
+public class TrinidadViolationMessage extends LabeledFacesMessage implements LabeledMessage
+{
+ private static final long serialVersionUID = 6356800689961505154L;
+
+ public TrinidadViolationMessage(Severity severity, String summary, String detail)
+ {
+ super(severity, summary, detail);
+ }
+
+ public String getLabelText()
+ {
+ return super.getLabelAsString(FacesContext.getCurrentInstance());
+ }
+
+ public void setLabelText(String label)
+ {
+ super.setLabel(label);
+ }
+}
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/CustomInformation.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/CustomInformation.java?rev=750030&r1=750029&r2=750030&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/CustomInformation.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/CustomInformation.java Wed Mar 4 14:54:36 2009
@@ -48,6 +48,7 @@
VALIDATION_STRATEGY_FACTORY,
COMPONENT_META_DATA_EXTRACTOR_FACTORY,
META_DATA_TRANSFORMER_FACTORY,
+ FACES_MESSAGE_FACTORY,
MESSAGE_BUNDLE_NAME,
STATIC_STRATEGY_MAPPING_SOURCE
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java?rev=750030&r1=750029&r2=750030&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java Wed Mar 4 14:54:36 2009
@@ -111,6 +111,8 @@
"ComponentMetaDataExtractorFactory");
customizableInfos.put(CustomInformation.META_DATA_TRANSFORMER_FACTORY,
"MetaDataTransformerFactory");
+ customizableInfos.put(CustomInformation.FACES_MESSAGE_FACTORY,
+ "FacesMessageFactory");
//conventions (the rest of the conventions are built with the help of name mappers,...
customizableInfos.put(CustomInformation.MESSAGE_BUNDLE_NAME,
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java?rev=750030&r1=750029&r2=750030&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java Wed Mar 4 14:54:36 2009
@@ -85,6 +85,9 @@
static final String CUSTOM_META_DATA_TRANSFORMER_FACTORY = WebXmlUtils
.getInitParameter("CUSTOM_META_DATA_TRANSFORMER_FACTORY");
+ static final String CUSTOM_FACES_MESSAGE_FACTORY = WebXmlUtils
+ .getInitParameter("CUSTOM_FACES_MESSAGE_FACTORY");
+
/*
* deactivate
*/
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/DefaultFactoryFinder.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/DefaultFactoryFinder.java?rev=750030&r1=750029&r2=750030&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/DefaultFactoryFinder.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/DefaultFactoryFinder.java Wed Mar 4 14:54:36 2009
@@ -29,6 +29,7 @@
import org.apache.myfaces.extensions.validator.core.metadata.transformer.DefaultMetaDataTransformerFactory;
import org.apache.myfaces.extensions.validator.core.validation.strategy.DefaultValidationStrategyFactory;
import org.apache.myfaces.extensions.validator.core.validation.message.resolver.DefaultMessageResolverFactory;
+import org.apache.myfaces.extensions.validator.core.validation.message.DefaultFacesMessageFactory;
import org.apache.myfaces.extensions.validator.util.ClassUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -103,6 +104,11 @@
case EL_HELPER_FACTORY:
factory = createELHelperFactory();
break;
+
+ case FACES_MESSAGE_FACTORY:
+ factory = createFacesMessageFactory();
+ break;
+
default: //required by checkstyle
}
@@ -217,6 +223,37 @@
return new DefaultRenderKitWrapperFactory();
}
+ private Object createFacesMessageFactory()
+ {
+ Object factory = null;
+
+ List<String> facesMessageFactoryClassNames = new ArrayList<String>();
+
+ facesMessageFactoryClassNames.add(WebXmlParameter.CUSTOM_FACES_MESSAGE_FACTORY);
+ facesMessageFactoryClassNames
+ .add(ExtValContext.getContext().getInformationProviderBean()
+ .get(CustomInformation.FACES_MESSAGE_FACTORY));
+
+ Object target = ExtValContext.getContext().getGlobalProperty(CustomInformation.FACES_MESSAGE_FACTORY.name());
+ if(target != null && target instanceof String)
+ {
+ facesMessageFactoryClassNames.add((String)target);
+ }
+ facesMessageFactoryClassNames.add(DefaultFacesMessageFactory.class.getName());
+
+ for (String className : facesMessageFactoryClassNames)
+ {
+ factory = ClassUtils.tryToInstantiateClassForName(className);
+
+ if (factory != null)
+ {
+ break;
+ }
+ }
+
+ return factory;
+ }
+
private Object createELHelperFactory()
{
return new DefaultELHelperFactory();
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FacesMessageFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FacesMessageFactory.java?rev=750030&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FacesMessageFactory.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FacesMessageFactory.java Wed Mar 4 14:54:36 2009
@@ -0,0 +1,36 @@
+/*
+ * 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.extensions.validator.core.factory;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+import javax.faces.application.FacesMessage;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.2
+ */
+@UsageInformation(UsageCategory.API)
+public interface FacesMessageFactory
+{
+ FacesMessage convert(FacesMessage facesMessage);
+
+ FacesMessage create(FacesMessage.Severity severity, String summary, String detail);
+}
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FactoryNames.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FactoryNames.java?rev=750030&r1=750029&r2=750030&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FactoryNames.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FactoryNames.java Wed Mar 4 14:54:36 2009
@@ -33,6 +33,8 @@
MESSAGE_RESOLVER_FACTORY,
META_DATA_TRANSFORMER_FACTORY,
+ FACES_MESSAGE_FACTORY,
+
RENDERKIT_WRAPPER_FACTORY,
EL_HELPER_FACTORY
}
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/DefaultFacesMessageFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/DefaultFacesMessageFactory.java?rev=750030&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/DefaultFacesMessageFactory.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/DefaultFacesMessageFactory.java Wed Mar 4 14:54:36 2009
@@ -0,0 +1,53 @@
+/*
+ * 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.extensions.validator.core.validation.message;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.core.factory.FacesMessageFactory;
+
+import javax.faces.application.FacesMessage;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.2
+ */
+@UsageInformation(UsageCategory.INTERNAL)
+public class DefaultFacesMessageFactory implements FacesMessageFactory
+{
+ public FacesMessage convert(FacesMessage facesMessage)
+ {
+ if(isLabeledFacesMessage(facesMessage))
+ {
+ return facesMessage;
+ }
+ return create(facesMessage.getSeverity(), facesMessage.getSummary(), facesMessage.getDetail());
+ }
+
+ public FacesMessage create(FacesMessage.Severity severity, String summary, String detail)
+ {
+ return new ViolationMessage(severity, summary, detail);
+ }
+
+ protected boolean isLabeledFacesMessage(FacesMessage facesMessage)
+ {
+ //don't use the interface here
+ return facesMessage instanceof ViolationMessage;
+ }
+}
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/LabeledMessage.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/LabeledMessage.java?rev=750030&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/LabeledMessage.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/LabeledMessage.java Wed Mar 4 14:54:36 2009
@@ -0,0 +1,35 @@
+/*
+ * 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.extensions.validator.core.validation.message;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+/**
+ * don't remove *Text - it would lead to an overlap with trinidad
+ *
+ * @author Gerhard Petracek
+ * @since 1.x.2
+ */
+@UsageInformation(UsageCategory.API)
+public interface LabeledMessage
+{
+ String getLabelText();
+ void setLabelText(String label);
+}
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/ViolationMessage.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/ViolationMessage.java?rev=750030&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/ViolationMessage.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/ViolationMessage.java Wed Mar 4 14:54:36 2009
@@ -0,0 +1,94 @@
+/*
+ * 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.extensions.validator.core.validation.message;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+import javax.faces.application.FacesMessage;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.2
+ */
+@UsageInformation(UsageCategory.INTERNAL)
+public class ViolationMessage extends FacesMessage implements LabeledMessage
+{
+ private static final long serialVersionUID = 6903958942987711231L;
+ private String label;
+ private boolean summaryLabelReplaced = false;
+ private boolean detailLabelReplaced = false;
+
+ public ViolationMessage(String summary, String detail)
+ {
+ this(SEVERITY_ERROR, summary, detail);
+ }
+
+ public ViolationMessage(Severity severity, String summary, String detail)
+ {
+ setSeverity(severity);
+ setSummary(summary);
+ setDetail(detail);
+ }
+
+ public String getLabelText()
+ {
+ return label;
+ }
+
+ public void setLabelText(String label)
+ {
+ this.label = label;
+ }
+
+ @Override
+ public String getSummary()
+ {
+ if(label != null && !this.summaryLabelReplaced)
+ {
+ setSummary(getLabeledMesssage(super.getSummary(), getLabelText()));
+ this.summaryLabelReplaced = true;
+ }
+ return super.getSummary();
+ }
+
+ @Override
+ public String getDetail()
+ {
+ if(label != null && !this.detailLabelReplaced)
+ {
+ setDetail(getLabeledMesssage(super.getDetail(), getLabelText()));
+ this.detailLabelReplaced = true;
+ }
+ return super.getDetail();
+ }
+
+ private String getLabeledMesssage(String message, String label)
+ {
+ for(int i = 0; i < 3; i++)
+ {
+ if(message != null && message.contains("{" + i + "}"))
+ {
+ message = message.replace("{" + i + "}", label);
+ }
+ }
+
+ return message;
+ }
+}
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractAnnotationValidationStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractAnnotationValidationStrategy.java?rev=750030&r1=750029&r2=750030&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractAnnotationValidationStrategy.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractAnnotationValidationStrategy.java Wed Mar 4 14:54:36 2009
@@ -79,8 +79,7 @@
protected FacesMessage getValidationErrorFacesMassage(Annotation annotation)
{
- return new FacesMessage(FacesMessage.SEVERITY_ERROR,
- getErrorMessageSummary(annotation), getErrorMessageDetail(annotation));
+ return ExtValUtils.createFacesMessage(getErrorMessageSummary(annotation), getErrorMessageDetail(annotation));
}
protected abstract String getValidationErrorMsgKey(Annotation annotation);
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java?rev=750030&r1=750029&r2=750030&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java Wed Mar 4 14:54:36 2009
@@ -87,7 +87,10 @@
logger.trace("start processAfterValidatorException of " + getClass().getName());
}
- if (processAfterValidatorException(facesContext, uiComponent, metaDataEntry, convertedObject, e))
+ ValidatorException validatorException = new ValidatorException(
+ ExtValUtils.convertFacesMessage(e.getFacesMessage()), e.getCause());
+ if (processAfterValidatorException(
+ facesContext, uiComponent, metaDataEntry, convertedObject, validatorException))
{
if(logger.isTraceEnabled())
{
@@ -95,7 +98,7 @@
": throw original exception after processAfterValidatorException");
}
- throw e;
+ throw validatorException;
}
if(logger.isTraceEnabled())
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java?rev=750030&r1=750029&r2=750030&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java Wed Mar 4 14:54:36 2009
@@ -40,6 +40,7 @@
import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
import org.apache.myfaces.extensions.validator.core.factory.FactoryNames;
import org.apache.myfaces.extensions.validator.core.factory.NameMapperAwareFactory;
+import org.apache.myfaces.extensions.validator.core.factory.FacesMessageFactory;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
@@ -228,6 +229,25 @@
.getFactory(FactoryNames.EL_HELPER_FACTORY, AbstractELHelperFactory.class).create();
}
+ public static FacesMessage createFacesMessage(String summary, String detail)
+ {
+ return createFacesMessage(FacesMessage.SEVERITY_ERROR, summary, detail);
+ }
+
+ public static FacesMessage createFacesMessage(FacesMessage.Severity severity, String summary, String detail)
+ {
+ return ExtValContext.getContext().getFactoryFinder()
+ .getFactory(FactoryNames.FACES_MESSAGE_FACTORY, FacesMessageFactory.class)
+ .create(severity, summary, detail);
+ }
+
+ public static FacesMessage convertFacesMessage(FacesMessage facesMessage)
+ {
+ return ExtValContext.getContext().getFactoryFinder()
+ .getFactory(FactoryNames.FACES_MESSAGE_FACTORY, FacesMessageFactory.class)
+ .convert(facesMessage);
+ }
+
public static PropertyDetails createPropertyDetailsForNewTarget(MetaDataEntry metaDataEntry,
String targetExpression)
{
Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsValidationExceptionInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsValidationExceptionInterceptor.java?rev=750030&r1=750029&r2=750030&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsValidationExceptionInterceptor.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsValidationExceptionInterceptor.java Wed Mar 4 14:54:36 2009
@@ -22,6 +22,7 @@
import org.apache.myfaces.extensions.validator.core.interceptor.ValidationExceptionInterceptor;
import org.apache.myfaces.extensions.validator.core.property.PropertyInformationKeys;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
+import org.apache.myfaces.extensions.validator.core.validation.message.LabeledMessage;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
import org.apache.myfaces.extensions.validator.util.ReflectionUtils;
@@ -57,7 +58,7 @@
{
if(processComponent(uiComponent))
{
- FacesMessage facesMessage = validatorException.getFacesMessage();
+ FacesMessage facesMessage = ExtValUtils.convertFacesMessage(validatorException.getFacesMessage());
String label = (String) ReflectionUtils.tryToInvokeMethod(uiComponent,
ReflectionUtils.tryToGetMethod(uiComponent.getClass(), "getLabel"));
@@ -73,9 +74,17 @@
label = metaDataEntry.getProperty(PropertyInformationKeys.LABEL, String.class);
}
- for(int i = 0; i < 3; i++)
+ if(facesMessage instanceof LabeledMessage)
{
- ExtValUtils.tryToPlaceLabel(facesMessage, label, i);
+ ((LabeledMessage)facesMessage).setLabelText(label);
+ }
+ //if someone uses a normal faces message
+ else
+ {
+ for(int i = 0; i < 3; i++)
+ {
+ ExtValUtils.tryToPlaceLabel(facesMessage, label, i);
+ }
}
}
return true;
Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java?rev=750030&r1=750029&r2=750030&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java Wed Mar 4 14:54:36 2009
@@ -166,7 +166,8 @@
entryOfTarget.getComponent(), entryOfTarget.getMetaDataEntry(),
entryOfTarget.getConvertedObject(), validatorException, this))
{
- facesContext.addMessage(entryOfTarget.getClientId(), validatorException.getFacesMessage());
+ facesContext.addMessage(entryOfTarget.getClientId(),
+ ExtValUtils.convertFacesMessage(validatorException.getFacesMessage()));
}
}
}
@@ -215,24 +216,12 @@
protected FacesMessage getSourceComponentErrorMessage(Annotation annotation, String summary, String detail)
{
- FacesMessage message = new FacesMessage();
-
- message.setSeverity(FacesMessage.SEVERITY_ERROR);
- message.setSummary(summary);
- message.setDetail(detail);
-
- return message;
+ return ExtValUtils.createFacesMessage(summary, detail);
}
protected FacesMessage getTargetComponentErrorMessage(Annotation foundAnnotation, String summary, String detail)
{
- FacesMessage message = new FacesMessage();
-
- message.setSeverity(FacesMessage.SEVERITY_ERROR);
- message.setSummary(summary);
- message.setDetail(detail);
-
- return message;
+ return ExtValUtils.createFacesMessage(summary, detail);
}
protected String getErrorMessageSummary(Annotation annotation, boolean isTargetComponent)