Author: ard
Date: Mon Sep 10 11:23:14 2012
New Revision: 1382760

URL: http://svn.apache.org/viewvc?rev=1382760&view=rev
Log:
RAVE-695 initial work on abstracting the File vs jcr config manager further 
away.

Modified:
    
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml
    
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/RoutedRequestMappingHandlerMapping.java
    
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/ConfigManager.java
    
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/file/FileConfigManager.java
    
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/file/FileConfigManagerTest.java
    
rave/sandbox/content-services/rave-web-jcr/src/main/java/org/apache/rave/portal/web/mvc/config/jcr/JcrConfigManager.java

Modified: 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml?rev=1382760&r1=1382759&r2=1382760&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml
 (original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml
 Mon Sep 10 11:23:14 2012
@@ -157,12 +157,13 @@
     <property name="credentials" ref="jcrCredentials"/>
     <property name="lazyRepositoryFactory" ref="lazyRepositoryFactory"/>
 -->
-    <property name="configurationPath" 
value="/WEB-INF/page-configuration.xml"/>
-    <property name="urlMappingsPath" value="/WEB-INF/url-mapping.xml"/>
     <property name="refreshDelay" value="10000"/>
   </bean>
 
-  <bean id="fileConfigurationManager" 
class="org.apache.rave.portal.web.mvc.config.file.FileConfigManager"/>
+  <bean id="fileConfigurationManager" 
class="org.apache.rave.portal.web.mvc.config.file.FileConfigManager">
+    <property name="configurationPath" 
value="/WEB-INF/page-configuration.xml"/>
+    <property name="urlMappingsPath" value="/WEB-INF/url-mapping.xml"/>
+  </bean>
 
   <bean name="unroutedHandlerMapping" 
class="org.apache.rave.portal.web.mvc.UnRoutedRequestMappingHandlerMapping">
     <property name="order" value="0"/>

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/RoutedRequestMappingHandlerMapping.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/RoutedRequestMappingHandlerMapping.java?rev=1382760&r1=1382759&r2=1382760&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/RoutedRequestMappingHandlerMapping.java
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/RoutedRequestMappingHandlerMapping.java
 Mon Sep 10 11:23:14 2012
@@ -66,12 +66,6 @@ public class RoutedRequestMappingHandler
 
     private ConfigManager configManager;
 
-    private String configurationName;
-
-    private String configurationPath;
-
-    private String urlMappingsPath;
-
     // delay refresh in milliseconds
     private long refreshDelay;
 
@@ -141,20 +135,21 @@ public class RoutedRequestMappingHandler
 */
             configured = true;
             configsLastChecked = System.currentTimeMillis();
-            final PageConfiguration configuration = 
configManager.loadConfiguration(configurationPath);
-            final UrlConfiguration urlConfig = 
configManager.loadUrlConfig(urlMappingsPath, configuration);
+            final UrlConfiguration urlConfig = configManager.loadUrlConfig();
             processConfiguration(urlConfig);
  //       }
     }
 
     protected void reloadConfigIfNeeded() {
         long currentTime = System.currentTimeMillis();
+        // TODO : move refreshdelay logic to FileConfigManager
+        // here just fetch the RoutedRequestMappingModel (urlMapping) and if
+        // the object instance changed, start processConfiguration the new 
configuration
+
         if (configured && (refreshDelay == 0 || configsLastChecked + 
refreshDelay < currentTime)) {
             synchronized (configManager) {
-                if ( configManager.lastModified(configurationPath) > 
configsLastChecked ||
-                        configManager.lastModified(urlMappingsPath) > 
configsLastChecked ) {
-                    final PageConfiguration configuration = 
configManager.loadConfiguration(configurationPath);
-                    final UrlConfiguration urlConfig = 
configManager.loadUrlConfig(urlMappingsPath, configuration);
+                if ( configManager.lastModified() > configsLastChecked ) {
+                    final UrlConfiguration urlConfig = 
configManager.loadUrlConfig();
                     processConfiguration(urlConfig);
                 }
             }
@@ -373,17 +368,6 @@ public class RoutedRequestMappingHandler
         this.configManager = configManager;
     }
 
-    public void setConfigurationName(String configurationName) {
-        this.configurationName = configurationName;
-    }
-
-    public void setConfigurationPath(String configurationPath) {
-        this.configurationPath = configurationPath;
-    }
-
-    public void setUrlMappingsPath(String urlMappingsPath) {
-        this.urlMappingsPath = urlMappingsPath;
-    }
 /*
     public void setCredentials(Credentials credentials) {
         this.credentials = credentials;

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/ConfigManager.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/ConfigManager.java?rev=1382760&r1=1382759&r2=1382760&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/ConfigManager.java
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/ConfigManager.java
 Mon Sep 10 11:23:14 2012
@@ -25,34 +25,30 @@ package org.apache.rave.portal.web.mvc.c
 public interface ConfigManager {
 
     /**
-     * Loads  url mappings configuration
+     * Loads url mappings configuration
      *
-     * @param path          path to load configuration from
-     * @param configuration PageConfiguration where page definitions are 
defined
      * @return UrlConfig instance containing url and render mappings
      * @throws InvalidConfigurationException
      *          thrown when config cannot be loaded or parsed or configuration 
parameter was null
      */
-    UrlConfiguration loadUrlConfig(String path, PageConfiguration 
configuration) throws InvalidConfigurationException;
+    UrlConfiguration loadUrlConfig() throws InvalidConfigurationException;
 
     /**
-     * Loads configuration for given name
-     *
-     * @param name configuration name
      * @return configuration or null if none found
      */
-    PageConfiguration loadConfiguration(String name);
+    PageConfiguration loadConfiguration();
 
     /**
-     * TODO: introduce update config method ??
      * Saves configuration.  An existing configuration will be overwritten
      *
      * @param configuration instance of PageConfiguration
      */
     void saveConfiguration(PageConfiguration configuration);
 
-
     void saveUrlConfiguration(UrlConfiguration configuration);
 
-    long lastModified(String name);
+    /**
+     * @return the lastModified timestamp in ms since epoch.
+     */
+    long lastModified();
 }

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/file/FileConfigManager.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/file/FileConfigManager.java?rev=1382760&r1=1382759&r2=1382760&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/file/FileConfigManager.java
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/mvc/config/file/FileConfigManager.java
 Mon Sep 10 11:23:14 2012
@@ -47,61 +47,76 @@ public class FileConfigManager implement
 
     private ResourceLoader resourceLoader;
 
+    private String urlMappingsPath;
+
+    private String configurationPath;
+    
+    public void setUrlMappingsPath(final String urlMappingsPath) {
+        this.urlMappingsPath = urlMappingsPath;
+    }
+
+    public void setConfigurationPath(final String configurationPath) {
+        this.configurationPath = configurationPath;
+    }
+
     @Override
-    public UrlConfiguration loadUrlConfig(String path, PageConfiguration 
configuration) throws InvalidConfigurationException {
-        if (configuration == null || StringUtils.isEmpty(path)) {
-            throw new InvalidConfigurationException("Provided 
PageConfiguration was null or configuration path was null or empty: " + path);
+    public UrlConfiguration loadUrlConfig() throws 
InvalidConfigurationException {
+        if (StringUtils.isBlank(configurationPath) || 
StringUtils.isBlank(urlMappingsPath)) {
+            throw new InvalidConfigurationException("Both configurationPath 
and urlMappingsPath should be set " +
+                    "to point to file location");
+        }
+        PageConfiguration pageConfiguration = loadConfiguration();
+        if (pageConfiguration == null) {
+            throw new InvalidConfigurationException("Provided 
PageConfiguration was null");
         }
-        log.info("Loading configuration: {}", path);
+        log.info("Loading configuration: {}", urlMappingsPath);
         InputStream is = null;
         try {
             try {
-                Resource resource = resourceLoader.getResource(path);
+                Resource resource = 
resourceLoader.getResource(urlMappingsPath);
                 is = resource.getInputStream();
+            } catch (Exception ex) {
             }
-            catch (Exception ex) {}
             if (is == null) {
-                throw new InvalidConfigurationException("Configuration file 
not found for path: " + path);
+                throw new InvalidConfigurationException("Configuration file 
not found for path: " + urlMappingsPath);
             }
             JAXBContext context = 
JAXBContext.newInstance(FileUrlConfiguration.class);
             Unmarshaller unmarshaller = context.createUnmarshaller();
             final FileUrlConfiguration config = (FileUrlConfiguration) 
unmarshaller.unmarshal(is);
             if (config != null) {
-                config.initialize(configuration);
+                config.initialize(pageConfiguration);
             }
 
             return config;
         } catch (JAXBException e) {
-            throw new InvalidConfigurationException("Error parsing 
configuration file: " + path, e);
+            throw new InvalidConfigurationException("Error parsing 
configuration file: " + urlMappingsPath, e);
         } finally {
             IOUtils.closeQuietly(is);
         }
     }
 
     @Override
-    public PageConfiguration loadConfiguration(String path) {
-        log.info("Loading configuration: {}", path);
+    public PageConfiguration loadConfiguration() {
+        log.info("Loading configuration: {}", configurationPath);
 
         InputStream is = null;
         try {
             try {
-                Resource resource = resourceLoader.getResource(path);
+                Resource resource = 
resourceLoader.getResource(configurationPath);
                 is = resource.getInputStream();
+            } catch (Exception ex) {
             }
-            catch (Exception ex) {}
             if (is == null) {
-                throw new InvalidConfigurationException("Configuration file 
not found for path: " + path);
+                throw new InvalidConfigurationException("Configuration file 
not found for path: " + configurationPath);
             }
             JAXBContext context = 
JAXBContext.newInstance(FilePageConfiguration.class);
             Unmarshaller unmarshaller = context.createUnmarshaller();
-            final PageConfiguration filePageConfiguration = 
(PageConfiguration) unmarshaller.unmarshal(is);
-            return filePageConfiguration;
+            return (PageConfiguration) unmarshaller.unmarshal(is);
         } catch (JAXBException e) {
-            throw new InvalidConfigurationException("Error parsing 
configuration file: " + path, e);
+            throw new InvalidConfigurationException("Error parsing 
configuration file: " + configurationPath, e);
         } finally {
             IOUtils.closeQuietly(is);
         }
-
     }
 
 
@@ -115,10 +130,17 @@ public class FileConfigManager implement
         throw new IllegalStateException("Not supported");
     }
 
-    public long lastModified(String name) {
-        Resource resource = resourceLoader.getResource(name);
+    public long lastModified() {
         try {
-            return resource != null && resource.exists() ? 
resource.getFile().lastModified() : 0;
+            Resource resource1 = resourceLoader.getResource(urlMappingsPath);
+            if (resource1 == null || !resource1.exists()) {
+                return 0;
+            }
+            Resource resource2 = resourceLoader.getResource(configurationPath);
+            if (resource2 == null || !resource2.exists()) {
+                return 0;
+            }
+            return resource1.lastModified() > resource2.lastModified() ? 
resource1.lastModified() : resource2.lastModified();
         } catch (IOException e) {
             return 0;
         }
@@ -127,4 +149,6 @@ public class FileConfigManager implement
     public void setResourceLoader(final ResourceLoader resourceLoader) {
         this.resourceLoader = resourceLoader;
     }
+
+
 }

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/file/FileConfigManagerTest.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/file/FileConfigManagerTest.java?rev=1382760&r1=1382759&r2=1382760&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/file/FileConfigManagerTest.java
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/file/FileConfigManagerTest.java
 Mon Sep 10 11:23:14 2012
@@ -22,7 +22,6 @@ package org.apache.rave.portal.web.mvc.c
 import java.util.Collection;
 import java.util.List;
 
-import org.apache.rave.portal.web.mvc.config.ConfigManager;
 import org.apache.rave.portal.web.mvc.config.InvalidConfigurationException;
 import org.apache.rave.portal.web.mvc.config.PageConfiguration;
 import org.apache.rave.portal.web.mvc.config.PageDefinition;
@@ -50,7 +49,7 @@ public class FileConfigManagerTest {
     public static final String EXAMPLE_URL_MAPPING_XML = 
"example_url_mapping.xml";
     public static final String URL_CONFIG_PATH = CLASSPATH_PREFIX + 
EXAMPLE_URL_MAPPING_XML;
 
-    private ConfigManager getConfigManager() {
+    private FileConfigManager getConfigManager() {
         FileConfigManager dao = new FileConfigManager();
         dao.setResourceLoader(new FileSystemResourceLoader());
         return dao;
@@ -58,8 +57,9 @@ public class FileConfigManagerTest {
 
     @Test
     public void testLoadConfig() throws Exception {
-        ConfigManager dao = getConfigManager();
-        final PageConfiguration config = 
dao.loadConfiguration(CLASSPATH_PREFIX + "example_configuration.xml");
+        FileConfigManager dao = getConfigManager();
+        dao.setConfigurationPath(CLASSPATH_PREFIX + 
"example_configuration.xml");
+        final PageConfiguration config = dao.loadConfiguration();
         assertNotNull(config);
         assertEquals("default", config.getName());
         final Collection<PageDefinition> pageDefinitions = 
config.getPageDefinitions();
@@ -120,15 +120,16 @@ public class FileConfigManagerTest {
 
     @Test(expected = InvalidConfigurationException.class)
     public void testLoadConfigFail() throws Exception {
-        ConfigManager dao = getConfigManager();
         // this should throw InvalidConfigurationException exception
-        dao.loadConfiguration(CLASSPATH_PREFIX + 
"NONE_EXISTING_example_configuration.xml");
+        FileConfigManager dao = getConfigManager();
+        dao.setConfigurationPath(CLASSPATH_PREFIX + 
"NONE_EXISTING_example_configuration.xml");
     }
 
     @Test
     public void testNoParent() throws Exception {
-        ConfigManager dao = getConfigManager();
-        final PageConfiguration config = 
dao.loadConfiguration(PAGE_CONFIG_PATH);
+        FileConfigManager dao = getConfigManager();
+        dao.setConfigurationPath(PAGE_CONFIG_PATH);
+        final PageConfiguration config = dao.loadConfiguration();
         assertNotNull(config);
         final Collection<PageDefinition> definitions = 
config.getPageDefinitions();
         final PageDefinition standardPage = definitions.iterator().next();
@@ -140,8 +141,12 @@ public class FileConfigManagerTest {
 
     @Test
     public void testLoadUrlConfig() throws Exception {
-        ConfigManager dao = getConfigManager();
-        final UrlConfiguration config = dao.loadUrlConfig(URL_CONFIG_PATH, 
dao.loadConfiguration(PAGE_CONFIG_PATH));
+
+        FileConfigManager dao = getConfigManager();
+        dao.setConfigurationPath(PAGE_CONFIG_PATH);
+        dao.setUrlMappingsPath(URL_CONFIG_PATH);
+
+        final UrlConfiguration config = dao.loadUrlConfig();
         log.info("config {}", config);
         assertTrue(config != null);
         assertEquals("default", config.getName());

Modified: 
rave/sandbox/content-services/rave-web-jcr/src/main/java/org/apache/rave/portal/web/mvc/config/jcr/JcrConfigManager.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-jcr/src/main/java/org/apache/rave/portal/web/mvc/config/jcr/JcrConfigManager.java?rev=1382760&r1=1382759&r2=1382760&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-jcr/src/main/java/org/apache/rave/portal/web/mvc/config/jcr/JcrConfigManager.java
 (original)
+++ 
rave/sandbox/content-services/rave-web-jcr/src/main/java/org/apache/rave/portal/web/mvc/config/jcr/JcrConfigManager.java
 Mon Sep 10 11:23:14 2012
@@ -44,11 +44,22 @@ public class JcrConfigManager implements
 
     private static Logger log = 
LoggerFactory.getLogger(JcrConfigManager.class);
 
-
     private Session session;
     private String configPath;
     private ObjectContentManager manager;
 
+    private String urlMappingsPath;
+
+    private String configurationPath;
+
+
+    public void setUrlMappingsPath(final String urlMappingsPath) {
+        this.urlMappingsPath = urlMappingsPath;
+    }
+
+    public void setConfigurationPath(final String configurationPath) {
+        this.configurationPath = configurationPath;
+    }
 
     public JcrConfigManager(Session session, String configPath) {
         this.session = session;
@@ -57,19 +68,18 @@ public class JcrConfigManager implements
     }
 
 
-    @Override
-    public UrlConfiguration loadUrlConfig(String name, PageConfiguration 
configuration) throws InvalidConfigurationException {
-        final UrlConfiguration urlConfiguration = (UrlConfiguration) 
manager.getObject(JcrUrlConfiguration.class, configPath + '/' + name);
-        log.info("Loaded URL configuration {}", configuration);
-        urlConfiguration.initialize(configuration);
+    public UrlConfiguration loadUrlConfig() throws 
InvalidConfigurationException {
+        final UrlConfiguration urlConfiguration = (UrlConfiguration) 
manager.getObject(JcrUrlConfiguration.class, configPath + '/' + 
urlMappingsPath);
+        log.info("Loaded URL configuration {}", urlConfiguration);
+        urlConfiguration.initialize(loadConfiguration());
         return urlConfiguration;
 
 
     }
 
     @Override
-    public PageConfiguration loadConfiguration(String name) {
-        final PageConfiguration configuration = (PageConfiguration) 
manager.getObject(JcrPageConfiguration.class, configPath + '/' + name);
+    public PageConfiguration loadConfiguration() {
+        final PageConfiguration configuration = (PageConfiguration) 
manager.getObject(JcrPageConfiguration.class, configPath + '/' + 
configurationPath);
         log.info("Loaded PAGE configuration {}", configuration);
         return configuration;
     }
@@ -143,7 +153,7 @@ public class JcrConfigManager implements
         return new ObjectContentManagerImpl(session, mapper);
     }
 
-    public long lastModified(String name) {
+    public long lastModified() {
         return 0;
     }
 }


Reply via email to