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/10/22 05:22:30 UTC
svn commit: r828290 - in
/myfaces/extensions/validator/branches/trunk_severity_test:
core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/
core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/
core/src/main/jav...
Author: gpetracek
Date: Thu Oct 22 03:22:27 2009
New Revision: 828290
URL: http://svn.apache.org/viewvc?rev=828290&view=rev
Log:
[intermediate result] advanced severity approach - step 3
Added:
myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/FacesMessagePropertyValidationInterceptor.java
myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultFacesMessageStorage.java
myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultFacesMessageStorageManager.java
myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/FacesMessageHolder.java
myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/FacesMessageStorage.java
myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/ValidationResult.java
myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/mapper/DefaultFacesMessageStorageNameMapper.java
Modified:
myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/ExtValStartupListener.java
myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultStorageManagerFactory.java
myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java
myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/AbstractBeanValidationMetaDataTransformer.java
myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java
myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java
myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/message/FacesMessageHolder.java
myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/CrossValidationPhaseListener.java
myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java
myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/property-validation/src/test/java/org/apache/myfaces/extensions/validator/test/core/interceptor/RegistrationPropertyValidationInterceptorTestCase.java
Added: myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/FacesMessagePropertyValidationInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/FacesMessagePropertyValidationInterceptor.java?rev=828290&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/FacesMessagePropertyValidationInterceptor.java (added)
+++ myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/FacesMessagePropertyValidationInterceptor.java Thu Oct 22 03:22:27 2009
@@ -0,0 +1,60 @@
+/*
+ * 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.interceptor;
+
+import org.apache.myfaces.extensions.validator.core.InvocationOrder;
+import org.apache.myfaces.extensions.validator.core.storage.FacesMessageStorage;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.util.ExtValUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import java.util.Map;
+
+/**
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+@InvocationOrder(900)
+@UsageInformation(UsageCategory.INTERNAL)
+public class FacesMessagePropertyValidationInterceptor implements PropertyValidationInterceptor
+{
+ protected final Log logger = LogFactory.getLog(getClass());
+
+ public boolean beforeValidation(
+ FacesContext facesContext, UIComponent uiComponent, Object convertedObject, Map<String, Object> properties)
+ {
+ return true;
+ }
+
+ public void afterValidation(
+ FacesContext facesContext, UIComponent uiComponent, Object convertedObject, Map<String, Object> properties)
+ {
+ FacesMessageStorage facesMessageStorage = ExtValUtils.getStorage(
+ FacesMessageStorage.class, FacesMessageStorage.class.getName());
+
+ if(facesMessageStorage != null)
+ {
+ facesMessageStorage.addAll();
+ }
+ }
+}
\ No newline at end of file
Modified: myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/ExtValStartupListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/ExtValStartupListener.java?rev=828290&r1=828289&r2=828290&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/ExtValStartupListener.java (original)
+++ myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/ExtValStartupListener.java Thu Oct 22 03:22:27 2009
@@ -23,6 +23,7 @@
import org.apache.myfaces.extensions.validator.core.interceptor.ValidationInterceptor;
import org.apache.myfaces.extensions.validator.core.interceptor.HtmlCoreComponentsValidationExceptionInterceptor;
import org.apache.myfaces.extensions.validator.core.interceptor.ViolationSeverityValidationExceptionInterceptor;
+import org.apache.myfaces.extensions.validator.core.interceptor.FacesMessagePropertyValidationInterceptor;
import org.apache.myfaces.extensions.validator.core.ExtValContext;
import org.apache.myfaces.extensions.validator.core.CustomInformation;
import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
@@ -92,7 +93,8 @@
initNameMappers();
initValidationExceptionInterceptors();
- initViolationSeverityInterpreters();
+ initViolationSeverityInterceptors();
+ initPropertyValidationInterceptors();
executeCustomStartupListener();
}
@@ -183,8 +185,13 @@
new ViolationSeverityValidationExceptionInterceptor());
}
- private void initViolationSeverityInterpreters()
+ private void initViolationSeverityInterceptors()
{
ExtValContext.getContext().setViolationSeverityInterpreter(new DefaultViolationSeverityInterpreter(), false);
}
+
+ private void initPropertyValidationInterceptors()
+ {
+ ExtValContext.getContext().addPropertyValidationInterceptor(new FacesMessagePropertyValidationInterceptor());
+ }
}
Added: myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultFacesMessageStorage.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultFacesMessageStorage.java?rev=828290&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultFacesMessageStorage.java (added)
+++ myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultFacesMessageStorage.java Thu Oct 22 03:22:27 2009
@@ -0,0 +1,92 @@
+/*
+ * 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.storage;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.ToDo;
+import org.apache.myfaces.extensions.validator.internal.Priority;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
+import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+@UsageInformation(UsageCategory.API)
+public class DefaultFacesMessageStorage implements FacesMessageStorage
+{
+ Map<String, ValidationResult> results = new HashMap<String, ValidationResult>();
+
+ public void addFacesMessage(String componentId, FacesMessage facesMessage)
+ {
+ if(componentId == null)
+ {
+ componentId = "*";
+ }
+
+ if(!this.results.containsKey(componentId))
+ {
+ this.results.put(componentId, new ValidationResult());
+ }
+
+ this.results.get(componentId).addFacesMessageHolder(new FacesMessageHolder(facesMessage, componentId));
+ }
+
+ public Map<String, FacesMessage> getFacesMessages()
+ {
+ Map<String, FacesMessage> result = new HashMap<String, FacesMessage>();
+
+ for(ValidationResult validationResult : this.results.values())
+ {
+ for(FacesMessageHolder facesMessageHolder : validationResult.getFacesMessageHolderList())
+ {
+ result.put(facesMessageHolder.getClientId(), facesMessageHolder.getFacesMessage());
+ }
+ }
+ return result;
+ }
+
+ public void addAll()
+ {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ List<FacesMessageHolder> facesMessageHolderList;
+
+ for(ValidationResult validationResult : this.results.values())
+ {
+ facesMessageHolderList = validationResult.getFacesMessageHolderList();
+ sortFacesMessageHolderList(facesMessageHolderList);
+
+ for(FacesMessageHolder facesMessageHolder : facesMessageHolderList)
+ {
+ facesContext.addMessage(facesMessageHolder.getClientId(), facesMessageHolder.getFacesMessage());
+ }
+ }
+ }
+
+ @ToDo(Priority.HIGH)
+ private void sortFacesMessageHolderList(List<FacesMessageHolder> facesMessageHolderList)
+ {
+ //sort severities
+ }
+}
\ No newline at end of file
Added: myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultFacesMessageStorageManager.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultFacesMessageStorageManager.java?rev=828290&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultFacesMessageStorageManager.java (added)
+++ myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultFacesMessageStorageManager.java Thu Oct 22 03:22:27 2009
@@ -0,0 +1,43 @@
+/*
+ * 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.storage;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import static org.apache.myfaces.extensions.validator.internal.UsageCategory.INTERNAL;
+import org.apache.myfaces.extensions.validator.core.storage.mapper.DefaultFacesMessageStorageNameMapper;
+
+/**
+ * default storage-manager for faces messages
+ *
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+@UsageInformation(INTERNAL)
+class DefaultFacesMessageStorageManager extends AbstractRequestScopeAwareStorageManager<FacesMessageStorage>
+{
+ DefaultFacesMessageStorageManager()
+ {
+ register(new DefaultFacesMessageStorageNameMapper());
+ }
+
+ public String getStorageManagerKey()
+ {
+ return StorageManager.class.getName() + "_FOR_FACES_MESSAGES:KEY";
+ }
+}
\ No newline at end of file
Modified: myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultStorageManagerFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultStorageManagerFactory.java?rev=828290&r1=828289&r2=828290&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultStorageManagerFactory.java (original)
+++ myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultStorageManagerFactory.java Thu Oct 22 03:22:27 2009
@@ -62,6 +62,7 @@
setStorageManager(RendererProxyStorage.class, new DefaultRendererProxyStorageManager(), false);
setStorageManager(GroupStorage.class, new DefaultGroupStorageManager(), false);
setStorageManager(MetaDataStorage.class, new DefaultMetaDataStorageManager(), false);
+ setStorageManager(FacesMessageStorage.class, new DefaultFacesMessageStorageManager(), false);
}
public StorageManager create(Class storageType)
Added: myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/FacesMessageHolder.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/FacesMessageHolder.java?rev=828290&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/FacesMessageHolder.java (added)
+++ myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/FacesMessageHolder.java Thu Oct 22 03:22:27 2009
@@ -0,0 +1,67 @@
+/*
+ * 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.storage;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.ToDo;
+import org.apache.myfaces.extensions.validator.internal.Priority;
+
+import javax.faces.application.FacesMessage;
+
+/**
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+@ToDo(value = Priority.LOW, description = "refactor it")
+@UsageInformation(UsageCategory.INTERNAL)
+class FacesMessageHolder
+{
+ private FacesMessage facesMessage;
+ private String clientId;
+
+ public FacesMessageHolder(FacesMessage facesMessage)
+ {
+ this.facesMessage = facesMessage;
+ }
+
+ FacesMessageHolder(FacesMessage facesMessage, String clientId)
+ {
+ this.facesMessage = facesMessage;
+ setClientId(clientId);
+ }
+
+ public FacesMessage getFacesMessage()
+ {
+ return facesMessage;
+ }
+
+ public String getClientId()
+ {
+ return clientId;
+ }
+
+ public void setClientId(String clientId)
+ {
+ if(!"*".equals(clientId))
+ {
+ this.clientId = clientId;
+ }
+ }
+}
\ No newline at end of file
Added: myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/FacesMessageStorage.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/FacesMessageStorage.java?rev=828290&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/FacesMessageStorage.java (added)
+++ myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/FacesMessageStorage.java Thu Oct 22 03:22:27 2009
@@ -0,0 +1,39 @@
+/*
+ * 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.storage;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+import javax.faces.application.FacesMessage;
+import java.util.Map;
+
+/**
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+@UsageInformation(UsageCategory.API)
+public interface FacesMessageStorage
+{
+ void addFacesMessage(String componentId, FacesMessage facesMessage);
+
+ Map<String, FacesMessage> getFacesMessages();
+
+ void addAll();
+}
\ No newline at end of file
Added: myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/ValidationResult.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/ValidationResult.java?rev=828290&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/ValidationResult.java (added)
+++ myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/ValidationResult.java Thu Oct 22 03:22:27 2009
@@ -0,0 +1,48 @@
+/*
+ * 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.storage;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.ToDo;
+import org.apache.myfaces.extensions.validator.internal.Priority;
+
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+@ToDo(value = Priority.LOW, description = "refactor it")
+@UsageInformation(UsageCategory.INTERNAL)
+class ValidationResult
+{
+ private List<FacesMessageHolder> facesMessageHolderList = new ArrayList<FacesMessageHolder>();
+
+ public void addFacesMessageHolder(FacesMessageHolder facesMessageHolder)
+ {
+ this.facesMessageHolderList.add(facesMessageHolder);
+ }
+
+ public List<FacesMessageHolder> getFacesMessageHolderList()
+ {
+ return facesMessageHolderList;
+ }
+}
\ No newline at end of file
Added: myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/mapper/DefaultFacesMessageStorageNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/mapper/DefaultFacesMessageStorageNameMapper.java?rev=828290&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/mapper/DefaultFacesMessageStorageNameMapper.java (added)
+++ myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/mapper/DefaultFacesMessageStorageNameMapper.java Thu Oct 22 03:22:27 2009
@@ -0,0 +1,38 @@
+/*
+ * 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.storage.mapper;
+
+import org.apache.myfaces.extensions.validator.core.mapper.NameMapper;
+import org.apache.myfaces.extensions.validator.core.storage.DefaultFacesMessageStorage;
+import org.apache.myfaces.extensions.validator.core.storage.FacesMessageStorage;
+
+/**
+ * use a public class to allow optional deregistration
+ *
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+public class DefaultFacesMessageStorageNameMapper implements NameMapper<String>
+{
+ public String createName(String source)
+ {
+ return (FacesMessageStorage.class.getName().equals(source)) ?
+ DefaultFacesMessageStorage.class.getName() : null;
+ }
+}
\ No newline at end of file
Modified: myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java?rev=828290&r1=828289&r2=828290&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java (original)
+++ myfaces/extensions/validator/branches/trunk_severity_test/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java Thu Oct 22 03:22:27 2009
@@ -31,6 +31,7 @@
import org.apache.myfaces.extensions.validator.core.ExtValContext;
import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
import org.apache.myfaces.extensions.validator.core.storage.StorageManager;
+import org.apache.myfaces.extensions.validator.core.storage.FacesMessageStorage;
import org.apache.myfaces.extensions.validator.core.mapper.NameMapper;
import org.apache.myfaces.extensions.validator.core.interceptor.ValidationExceptionInterceptor;
import org.apache.myfaces.extensions.validator.core.interceptor.MetaDataExtractionInterceptor;
@@ -653,7 +654,8 @@
return propertyInformation.getInformation(PropertyInformationKeys.PROPERTY_DETAILS, PropertyDetails.class);
}
- public static void tryToThrowValidatorException(String clientId, FacesMessage facesMessage, Throwable throwable)
+ public static void tryToThrowValidatorExceptionForComponentId(
+ String clientId, FacesMessage facesMessage, Throwable throwable)
{
UIComponent targetComponent = findComponent(clientId);
@@ -685,21 +687,20 @@
}
}
- public static void tryToAddViolationMessage(String clientId, FacesMessage facesMessage)
+ public static void tryToAddViolationMessageForComponentId(String clientId, FacesMessage facesMessage)
{
UIComponent targetComponent = findComponent(clientId);
if(targetComponent == null && clientId != null)
{
- //workaround for testcases
- tryToAddViolationMessageForClientId(clientId, facesMessage);
+ tryToAddViolationMessageForTestClientId(clientId, facesMessage);
return;
}
tryToAddViolationMessageForComponent(targetComponent, facesMessage);
}
- @ToDo(Priority.MEDIUM)
- private static void tryToAddViolationMessageForClientId(String clientId, FacesMessage facesMessage)
+ @ToDo(value = Priority.MEDIUM, description = "required for test frameworks - goal: remove it")
+ private static void tryToAddViolationMessageForTestClientId(String clientId, FacesMessage facesMessage)
{
ViolationSeverityInterpreter interpreter =
ExtValContext.getContext().getViolationSeverityInterpreter();
@@ -708,7 +709,7 @@
if(interpreter.severityCausesViolationMessage(facesContext, null, facesMessage.getSeverity()))
{
- facesContext.addMessage(null, facesMessage);
+ addFacesMessage(clientId, facesMessage);
}
tryToBlocksNavigationForComponent(null, facesMessage);
}
@@ -724,7 +725,7 @@
{
if(uiComponent != null)
{
- facesContext.addMessage(uiComponent.getClientId(facesContext), facesMessage);
+ addFacesMessage(uiComponent.getClientId(facesContext), facesMessage);
}
else
{
@@ -738,7 +739,26 @@
tryToBlocksNavigationForComponent(uiComponent, facesMessage);
}
- public static void tryToBlocksNavigation(String clientId, FacesMessage facesMessage)
+ public static void addFacesMessage(FacesMessage facesMessage)
+ {
+ addFacesMessage(null, facesMessage);
+ }
+
+ public static void addFacesMessage(String clientId, FacesMessage facesMessage)
+ {
+ FacesMessageStorage storage = getStorage(FacesMessageStorage.class, FacesMessageStorage.class.getName());
+
+ if(storage != null)
+ {
+ storage.addFacesMessage(clientId, facesMessage);
+ }
+ else
+ {
+ FacesContext.getCurrentInstance().addMessage(clientId, facesMessage);
+ }
+ }
+
+ public static void tryToBlocksNavigationForComponentId(String clientId, FacesMessage facesMessage)
{
UIComponent targetComponent = findComponent(clientId);
@@ -758,7 +778,7 @@
}
}
- public static boolean severityBlocksSubmit(String clientId, FacesMessage facesMessage)
+ public static boolean severityBlocksSubmitForComponentId(String clientId, FacesMessage facesMessage)
{
ViolationSeverityInterpreter interpreter =
ExtValContext.getContext().getViolationSeverityInterpreter();
@@ -769,7 +789,7 @@
return interpreter.severityBlocksSubmit(facesContext, targetComponent, facesMessage.getSeverity());
}
- public static boolean severityShowsIndication(String clientId, FacesMessage facesMessage)
+ public static boolean severityShowsIndicationForComponentId(String clientId, FacesMessage facesMessage)
{
ViolationSeverityInterpreter interpreter =
ExtValContext.getContext().getViolationSeverityInterpreter();
Modified: myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/AbstractBeanValidationMetaDataTransformer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/AbstractBeanValidationMetaDataTransformer.java?rev=828290&r1=828289&r2=828290&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/AbstractBeanValidationMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/AbstractBeanValidationMetaDataTransformer.java Thu Oct 22 03:22:27 2009
@@ -83,7 +83,7 @@
testMessage.setSeverity(ViolationSeverity.Fatal.VALUE);
}
}
- return ExtValUtils.severityBlocksSubmit(null, testMessage);
+ return ExtValUtils.severityBlocksSubmitForComponentId(null, testMessage);
}
protected abstract Map<String, Object> convertConstraintDescriptor(ConstraintDescriptor<T> constraintDescriptor);
}
Modified: myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java?rev=828290&r1=828289&r2=828290&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java (original)
+++ myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java Thu Oct 22 03:22:27 2009
@@ -581,7 +581,7 @@
if (!facesMessageListWithHighSeverity.isEmpty() && firstErrorCausesAnException)
{
FacesMessageHolder facesMessageHolder = facesMessageListWithHighSeverity.iterator().next();
- ExtValUtils.tryToThrowValidatorException(
+ ExtValUtils.tryToThrowValidatorExceptionForComponentId(
facesMessageHolder.getClientId(), facesMessageHolder.getFacesMessage(), null);
}
}
@@ -631,7 +631,7 @@
}
else
{
- ExtValUtils.tryToAddViolationMessage(
+ ExtValUtils.tryToAddViolationMessageForComponentId(
facesMessageHolder.getClientId(), facesMessageHolder.getFacesMessage());
}
}
@@ -641,7 +641,7 @@
{
for (FacesMessageHolder facesMessageHolder : facesMessageHolderListWithLowSeverity)
{
- ExtValUtils.tryToAddViolationMessage(
+ ExtValUtils.tryToAddViolationMessageForComponentId(
facesMessageHolder.getClientId(), facesMessageHolder.getFacesMessage());
}
}
Modified: myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java?rev=828290&r1=828289&r2=828290&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java (original)
+++ myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java Thu Oct 22 03:22:27 2009
@@ -25,6 +25,8 @@
import org.apache.myfaces.extensions.validator.beanval.annotation.ModelValidation;
import org.apache.myfaces.extensions.validator.beanval.storage.ModelValidationEntry;
import org.apache.myfaces.extensions.validator.beanval.util.BeanValidationUtils;
+import org.apache.myfaces.extensions.validator.internal.ToDo;
+import org.apache.myfaces.extensions.validator.internal.Priority;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
@@ -102,6 +104,7 @@
}
}
+ @ToDo(value = Priority.HIGH, description = "refactor and remove FacesContext#renderResponse")
private void validateTarget(ModelValidationEntry modelValidationEntry,
Object validationTarget,
Class[] groups,
Modified: myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/message/FacesMessageHolder.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/message/FacesMessageHolder.java?rev=828290&r1=828289&r2=828290&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/message/FacesMessageHolder.java (original)
+++ myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/message/FacesMessageHolder.java Thu Oct 22 03:22:27 2009
@@ -20,6 +20,8 @@
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.ToDo;
+import org.apache.myfaces.extensions.validator.internal.Priority;
import javax.faces.application.FacesMessage;
@@ -27,20 +29,22 @@
* @author Gerhard Petracek
* @since x.x.3
*/
+@Deprecated
+@ToDo(Priority.HIGH)
@UsageInformation(UsageCategory.INTERNAL)
public class FacesMessageHolder
{
- private FacesMessage wrappedMessage;
+ private FacesMessage facesMessage;
private String clientId;
- public FacesMessageHolder(FacesMessage wrappedMessage)
+ public FacesMessageHolder(FacesMessage facesMessage)
{
- this.wrappedMessage = wrappedMessage;
+ this.facesMessage = facesMessage;
}
public FacesMessage getFacesMessage()
{
- return wrappedMessage;
+ return facesMessage;
}
public String getClientId()
Modified: myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/CrossValidationPhaseListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/CrossValidationPhaseListener.java?rev=828290&r1=828289&r2=828290&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/CrossValidationPhaseListener.java (original)
+++ myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/CrossValidationPhaseListener.java Thu Oct 22 03:22:27 2009
@@ -121,10 +121,10 @@
if (facesMessage != null &&
facesMessage.getSummary() != null && facesMessage.getDetail() != null)
{
- ExtValUtils.tryToAddViolationMessage(entry.getClientId(), facesMessage);
+ ExtValUtils.tryToAddViolationMessageForComponentId(entry.getClientId(), facesMessage);
}
- event.getFacesContext().renderResponse();
+ ExtValUtils.tryToBlocksNavigationForComponentId(entry.getClientId(), facesMessage);
}
}
finally
Modified: myfaces/extensions/validator/branches/trunk_severity_test/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/branches/trunk_severity_test/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java?rev=828290&r1=828289&r2=828290&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java (original)
+++ myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java Thu Oct 22 03:22:27 2009
@@ -166,7 +166,7 @@
entryOfTarget.getComponent(), entryOfTarget.getMetaDataEntry(),
entryOfTarget.getConvertedObject(), validatorException, this))
{
- ExtValUtils.tryToAddViolationMessage(entryOfTarget.getClientId(),
+ ExtValUtils.tryToAddViolationMessageForComponentId(entryOfTarget.getClientId(),
ExtValUtils.convertFacesMessage(validatorException.getFacesMessage()));
}
}
Modified: myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/property-validation/src/test/java/org/apache/myfaces/extensions/validator/test/core/interceptor/RegistrationPropertyValidationInterceptorTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/property-validation/src/test/java/org/apache/myfaces/extensions/validator/test/core/interceptor/RegistrationPropertyValidationInterceptorTestCase.java?rev=828290&r1=828289&r2=828290&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/property-validation/src/test/java/org/apache/myfaces/extensions/validator/test/core/interceptor/RegistrationPropertyValidationInterceptorTestCase.java (original)
+++ myfaces/extensions/validator/branches/trunk_severity_test/validation-modules/property-validation/src/test/java/org/apache/myfaces/extensions/validator/test/core/interceptor/RegistrationPropertyValidationInterceptorTestCase.java Thu Oct 22 03:22:27 2009
@@ -22,6 +22,7 @@
import org.apache.myfaces.extensions.validator.core.ExtValContext;
import org.apache.myfaces.extensions.validator.core.InvocationOrder;
import org.apache.myfaces.extensions.validator.core.interceptor.PropertyValidationInterceptor;
+import org.apache.myfaces.extensions.validator.core.interceptor.FacesMessagePropertyValidationInterceptor;
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -57,7 +58,7 @@
List<PropertyValidationInterceptor> result = ExtValContext.getContext().getPropertyValidationInterceptors();
- int resultLength = 5;
+ int resultLength = 6;
assertEquals(resultLength, result.size());
for(int i = 0; i < resultLength; i++)
@@ -74,9 +75,12 @@
assertEquals(TestMetaDataExtractionInterceptor3.class, result.get(i).getClass());
break;
case 3:
- assertEquals(TestMetaDataExtractionInterceptor1000.class, result.get(i).getClass());
+ assertEquals(FacesMessagePropertyValidationInterceptor.class, result.get(i).getClass());
break;
case 4:
+ assertEquals(TestMetaDataExtractionInterceptor1000.class, result.get(i).getClass());
+ break;
+ case 5:
assertEquals(TestComponentInitializer.class, result.get(i).getClass());
break;
}