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;
}
}