Updated Branches:
  refs/heads/master 4adb68be2 -> 5e213acd2

DELTASPIKE-480 ViewConfigValidator


Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/5e213acd
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/5e213acd
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/5e213acd

Branch: refs/heads/master
Commit: 5e213acd28d800df42f29ba2ddf60994fd5de2b4
Parents: 4adb68b
Author: gpetracek <gpetra...@apache.org>
Authored: Thu Dec 26 15:10:30 2013 +0100
Committer: gpetracek <gpetra...@apache.org>
Committed: Thu Dec 26 15:10:30 2013 +0100

----------------------------------------------------------------------
 .../impl/config/view/ViewConfigExtension.java   | 14 ++++
 .../impl/config/view/ViewConfigValidator.java   | 69 ++++++++++++++++++++
 .../main/resources/META-INF/web-fragment.xml    | 36 ++++++++++
 3 files changed, 119 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/5e213acd/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/ViewConfigExtension.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/ViewConfigExtension.java
 
b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/ViewConfigExtension.java
index 000f570..1aa9500 100644
--- 
a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/ViewConfigExtension.java
+++ 
b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/ViewConfigExtension.java
@@ -18,7 +18,9 @@
  */
 package org.apache.deltaspike.jsf.impl.config.view;
 
+import org.apache.deltaspike.core.api.config.view.DefaultErrorView;
 import org.apache.deltaspike.core.api.config.view.ViewConfig;
+import org.apache.deltaspike.core.api.config.view.ViewRef;
 import org.apache.deltaspike.core.spi.config.view.ConfigDescriptorValidator;
 import org.apache.deltaspike.core.api.config.view.metadata.InlineViewMetaData;
 import org.apache.deltaspike.core.api.config.view.metadata.ViewConfigResolver;
@@ -171,6 +173,11 @@ public class ViewConfigExtension implements Extension, 
Deactivatable
 
     protected void addConfigClass(Class viewConfigClass, Set<Annotation> 
viewConfigAnnotations)
     {
+        if (isInternal(viewConfigClass))
+        {
+            return;
+        }
+
         String className = viewConfigClass.getName();
         if (!className.contains("."))
         {
@@ -222,6 +229,13 @@ public class ViewConfigExtension implements Extension, 
Deactivatable
         }
     }
 
+    private boolean isInternal(Class configClass)
+    {
+        return ViewConfig.class.equals(configClass) ||
+                DefaultErrorView.class.equals(configClass) ||
+                ViewRef.Manual.class.equals(configClass);
+    }
+
     private ViewConfigNode addNode(ViewConfigNode parentNode, Class 
idOfNewNode, Set<Annotation> viewConfigAnnotations)
     {
         if (parentNode == null)

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/5e213acd/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/ViewConfigValidator.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/ViewConfigValidator.java
 
b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/ViewConfigValidator.java
new file mode 100644
index 0000000..fb034e0
--- /dev/null
+++ 
b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/ViewConfigValidator.java
@@ -0,0 +1,69 @@
+/*
+ * 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.deltaspike.jsf.impl.config.view;
+
+import org.apache.deltaspike.core.api.config.view.metadata.ConfigDescriptor;
+import org.apache.deltaspike.core.api.config.view.metadata.ViewConfigResolver;
+import org.apache.deltaspike.core.api.provider.BeanProvider;
+import org.apache.deltaspike.core.spi.activation.Deactivatable;
+import org.apache.deltaspike.core.util.ClassDeactivationUtils;
+import org.apache.deltaspike.core.util.ExceptionUtils;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+import java.net.MalformedURLException;
+
+public class ViewConfigValidator implements ServletContextListener, 
Deactivatable
+{
+    @Override
+    public void contextInitialized(ServletContextEvent sce)
+    {
+        if (ClassDeactivationUtils.isActivated(getClass()))
+        {
+            checkViewConfig(sce);
+        }
+    }
+
+    protected void checkViewConfig(ServletContextEvent sce)
+    {
+        ViewConfigResolver viewConfigResolver = 
BeanProvider.getContextualReference(ViewConfigResolver.class);
+
+        for (ConfigDescriptor configDescriptor : 
viewConfigResolver.getConfigDescriptors())
+        {
+            try
+            {
+                if 
(sce.getServletContext().getResource(configDescriptor.getPath()) == null)
+                {
+                    throw new IllegalStateException("path '" + 
configDescriptor.getPath() +
+                        "' is missing, but mapped by: " + 
configDescriptor.getConfigClass().getName());
+                }
+            }
+            catch (MalformedURLException e)
+            {
+                throw ExceptionUtils.throwAsRuntimeException(e);
+            }
+        }
+    }
+
+    @Override
+    public void contextDestroyed(ServletContextEvent sce)
+    {
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/5e213acd/deltaspike/modules/jsf/impl/src/main/resources/META-INF/web-fragment.xml
----------------------------------------------------------------------
diff --git 
a/deltaspike/modules/jsf/impl/src/main/resources/META-INF/web-fragment.xml 
b/deltaspike/modules/jsf/impl/src/main/resources/META-INF/web-fragment.xml
new file mode 100644
index 0000000..c9e9907
--- /dev/null
+++ b/deltaspike/modules/jsf/impl/src/main/resources/META-INF/web-fragment.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<web-fragment version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd";>
+
+    <name>deltaspike_jsf_module</name>
+
+    <distributable/>
+
+    <listener>
+        
<listener-class>org.apache.deltaspike.jsf.impl.config.view.ViewConfigValidator</listener-class>
+    </listener>
+
+    <ordering>
+        <after>
+            <others/>
+        </after>
+    </ordering>
+</web-fragment>
\ No newline at end of file

Reply via email to