diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/IRedirectorRegistry.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/IRedirectorRegistry.java
deleted file mode 100644
index 38155d04b..000000000
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/IRedirectorRegistry.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.navalplanner.web.common;
-
-/**
- * Contract for {@link RedirectorRegistry}
- * @author Óscar González Fernández
- */
-public interface IRedirectorRegistry {
-
- public abstract Redirector getRedirectorFor(
- Class klassWithLinkableMetadata);
-
-}
\ No newline at end of file
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/Linked.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/Linked.java
deleted file mode 100644
index 8436bf956..000000000
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/Linked.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.navalplanner.web.common;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.springframework.beans.factory.annotation.Qualifier;
-
-/**
- * Marks a controller that redirects to the real controller
- * @author Óscar González Fernández
- */
-@Qualifier("linked")
-@Retention(RetentionPolicy.RUNTIME)
-@Target( { ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE })
-public @interface Linked {
-
-}
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/Converter.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/Converter.java
similarity index 87%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/common/Converter.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/Converter.java
index 9c185a05a..d919ee1b6 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/Converter.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/Converter.java
@@ -1,4 +1,4 @@
-package org.navalplanner.web.common;
+package org.navalplanner.web.common.converters;
/**
* Converts from an object to an string representation, and converts the object
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/ConverterFactory.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ConverterFactory.java
similarity index 96%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/common/ConverterFactory.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ConverterFactory.java
index 32237ec32..46392cbcc 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/ConverterFactory.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ConverterFactory.java
@@ -1,4 +1,4 @@
-package org.navalplanner.web.common;
+package org.navalplanner.web.common.converters;
import java.util.HashMap;
import java.util.List;
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/IConverterFactory.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/IConverterFactory.java
similarity index 81%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/common/IConverterFactory.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/IConverterFactory.java
index 34a07fcdc..78a9f32e6 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/IConverterFactory.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/IConverterFactory.java
@@ -1,4 +1,5 @@
-package org.navalplanner.web.common;
+package org.navalplanner.web.common.converters;
+
/**
* Retrieves a Converter given a type
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/ResourceConverter.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ResourceConverter.java
similarity index 96%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/common/ResourceConverter.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ResourceConverter.java
index 0f9369259..f9cd216bf 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/ResourceConverter.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/converters/ResourceConverter.java
@@ -1,4 +1,4 @@
-package org.navalplanner.web.common;
+package org.navalplanner.web.common.converters;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
import org.navalplanner.business.resources.entities.Resource;
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/DefaultExecutorRetriever.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/DefaultExecutorRetriever.java
similarity index 92%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/common/DefaultExecutorRetriever.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/DefaultExecutorRetriever.java
index 88621fe59..6528ca8fb 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/DefaultExecutorRetriever.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/DefaultExecutorRetriever.java
@@ -1,4 +1,4 @@
-package org.navalplanner.web.common;
+package org.navalplanner.web.common.entrypoints;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/LinkToState.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/EntryPoint.java
similarity index 84%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/common/LinkToState.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/EntryPoint.java
index 0db2a38e0..9241980e6 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/LinkToState.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/EntryPoint.java
@@ -1,4 +1,4 @@
-package org.navalplanner.web.common;
+package org.navalplanner.web.common.entrypoints;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
@@ -13,6 +13,6 @@ import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Documented
@Retention(RetentionPolicy.RUNTIME)
-public @interface LinkToState {
+public @interface EntryPoint {
public String[] value();
}
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/LinksDefiner.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/EntryPoints.java
similarity index 73%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/common/LinksDefiner.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/EntryPoints.java
index 7605d3b5b..da0879c2d 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/LinksDefiner.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/EntryPoints.java
@@ -1,4 +1,4 @@
-package org.navalplanner.web.common;
+package org.navalplanner.web.common.entrypoints;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
@@ -10,10 +10,10 @@ import java.lang.annotation.RetentionPolicy;
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
-public @interface LinksDefiner {
+public @interface EntryPoints {
public String page();
- public String beanName();
+ public String registerAs();
}
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/ExecutorRetriever.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/ExecutorRetriever.java
similarity index 83%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/common/ExecutorRetriever.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/ExecutorRetriever.java
index bffefc923..19ead33eb 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/ExecutorRetriever.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/ExecutorRetriever.java
@@ -1,4 +1,4 @@
-package org.navalplanner.web.common;
+package org.navalplanner.web.common.entrypoints;
import org.zkoss.zk.ui.Execution;
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/IURLHandlerRegistry.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/IURLHandlerRegistry.java
new file mode 100644
index 000000000..22c4f722f
--- /dev/null
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/IURLHandlerRegistry.java
@@ -0,0 +1,12 @@
+package org.navalplanner.web.common.entrypoints;
+
+/**
+ * Contract for {@link URLHandlerRegistry}
+ * @author Óscar González Fernández
+ */
+public interface IURLHandlerRegistry {
+
+ public abstract URLHandler getRedirectorFor(
+ Class klassWithLinkableMetadata);
+
+}
\ No newline at end of file
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/MatrixParameters.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/MatrixParameters.java
similarity index 94%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/common/MatrixParameters.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/MatrixParameters.java
index 555dfa19d..61d6ebfeb 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/MatrixParameters.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/MatrixParameters.java
@@ -1,4 +1,4 @@
-package org.navalplanner.web.common;
+package org.navalplanner.web.common.entrypoints;
import java.util.HashMap;
import java.util.Map;
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/RedirectorSynthetiser.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/RedirectorSynthetiser.java
similarity index 79%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/common/RedirectorSynthetiser.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/RedirectorSynthetiser.java
index 3394c40b5..d6de9856f 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/RedirectorSynthetiser.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/RedirectorSynthetiser.java
@@ -1,4 +1,4 @@
-package org.navalplanner.web.common;
+package org.navalplanner.web.common.entrypoints;
import java.io.IOException;
import java.lang.reflect.InvocationHandler;
@@ -10,6 +10,7 @@ import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.BeanFactoryUtils;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.core.io.Resource;
@@ -34,7 +35,7 @@ public class RedirectorSynthetiser implements BeanFactoryPostProcessor {
private final Class> pageInterface;
- private Redirector> redirector;
+ private URLHandler> urlHandler;
private SynthetizedImplementation(
ConfigurableListableBeanFactory beanFactory,
@@ -46,26 +47,25 @@ public class RedirectorSynthetiser implements BeanFactoryPostProcessor {
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
- Redirector> redirector = getRedirector();
- redirector.doRedirect(method.getName(), args);
+ URLHandler> redirector = getHandler();
+ redirector.doTransition(method.getName(), args);
return null;
}
- private Redirector> getRedirector() {
- if (redirector != null)
- return redirector;
- RedirectorRegistry redirectorRegistry = (RedirectorRegistry) beanFactory
- .getBean(getSpringDefaultName(RedirectorRegistry.class),
- RedirectorRegistry.class);
- redirector = redirectorRegistry.getRedirectorFor(pageInterface);
- return redirector;
+ private URLHandler> getHandler() {
+ if (urlHandler != null)
+ return urlHandler;
+ URLHandlerRegistry registry = (URLHandlerRegistry) BeanFactoryUtils
+ .beanOfType(beanFactory, URLHandlerRegistry.class);
+ urlHandler = registry.getRedirectorFor(pageInterface);
+ return urlHandler;
}
}
public void postProcessBeanFactory(
ConfigurableListableBeanFactory beanFactory) throws BeansException {
long elapsedTime = System.currentTimeMillis();
- for (Class> pageInterface : findInterfacesMarkedWithLinkable()) {
+ for (Class> pageInterface : findInterfacesMarkedEntryPoints()) {
beanFactory.registerSingleton(getBeanName(pageInterface),
createRedirectorImplementationFor(beanFactory,
pageInterface));
@@ -73,10 +73,10 @@ public class RedirectorSynthetiser implements BeanFactoryPostProcessor {
elapsedTime = System.currentTimeMillis() - elapsedTime;
LOG.debug("Took " + elapsedTime
+ " ms to search for interfaces annotated with "
- + LinksDefiner.class.getSimpleName());
+ + EntryPoints.class.getSimpleName());
}
- private List> findInterfacesMarkedWithLinkable() {
+ private List> findInterfacesMarkedEntryPoints() {
List> result = new ArrayList>();
PathMatchingResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
CachingMetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(
@@ -112,7 +112,7 @@ public class RedirectorSynthetiser implements BeanFactoryPostProcessor {
ClassMetadata classMetadata = metadataReader.getClassMetadata();
if (classMetadata.isInterface()
&& annotationMetadata.getAnnotationTypes().contains(
- LinksDefiner.class.getName())) {
+ EntryPoints.class.getName())) {
Class> klass = Class
.forName(classMetadata.getClassName());
if (klass.isInterface()) {
@@ -134,14 +134,8 @@ public class RedirectorSynthetiser implements BeanFactoryPostProcessor {
beanFactory, pageInterface));
}
- private static String getSpringDefaultName(Class> klass) {
- String simpleName = klass.getSimpleName();
- return simpleName.substring(0, 1).toLowerCase()
- + simpleName.substring(1);
- }
-
private static String getBeanName(Class> pageInterface) {
- LinksDefiner annotation = pageInterface.getAnnotation(LinksDefiner.class);
- return annotation.beanName();
+ EntryPoints annotation = pageInterface.getAnnotation(EntryPoints.class);
+ return annotation.registerAs();
}
}
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/Redirector.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/URLHandler.java
similarity index 62%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/common/Redirector.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/URLHandler.java
index 220b199fb..efdd45e5e 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/Redirector.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/URLHandler.java
@@ -1,4 +1,4 @@
-package org.navalplanner.web.common;
+package org.navalplanner.web.common.entrypoints;
import java.lang.reflect.Method;
import java.util.Arrays;
@@ -13,22 +13,24 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.Validate;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.navalplanner.web.common.converters.Converter;
+import org.navalplanner.web.common.converters.IConverterFactory;
import org.zkoss.zk.ui.Execution;
/**
*
* @author Óscar González Fernández
*/
-public class Redirector {
+public class URLHandler {
- private static final Log LOG = LogFactory.getLog(Redirector.class);
+ private static final Log LOG = LogFactory.getLog(URLHandler.class);
- private static class LinkMetadata {
+ private static class EntryPointMetadata {
private final Method method;
- private final LinkToState annotation;
+ private final EntryPoint annotation;
- private LinkMetadata(Method method, LinkToState annotation) {
+ private EntryPointMetadata(Method method, EntryPoint annotation) {
this.method = method;
this.annotation = annotation;
}
@@ -36,42 +38,42 @@ public class Redirector {
private final ExecutorRetriever executorRetriever;
- private Map metadata = new HashMap();
+ private Map metadata = new HashMap();
private final String page;
private final IConverterFactory converterFactory;
- public Redirector(IConverterFactory converterFactory,
- ExecutorRetriever executorRetriever, Class interfaceDefiningLinks) {
- Validate.isTrue(interfaceDefiningLinks.isInterface());
+ public URLHandler(IConverterFactory converterFactory,
+ ExecutorRetriever executorRetriever,
+ Class interfaceDefiningEntryPoints) {
+ Validate.isTrue(interfaceDefiningEntryPoints.isInterface());
this.converterFactory = converterFactory;
this.executorRetriever = executorRetriever;
- LinksDefiner linkDefiner = interfaceDefiningLinks
- .getAnnotation(LinksDefiner.class);
- Validate
- .notNull(linkDefiner, LinksDefiner.class.getName()
- + " annotation required on "
- + interfaceDefiningLinks.getName());
- this.page = linkDefiner.page();
- for (Method method : interfaceDefiningLinks.getMethods()) {
- LinkToState linkToState = method.getAnnotation(LinkToState.class);
- if (linkToState != null) {
- metadata.put(method.getName(), new LinkMetadata(method,
- linkToState));
+ EntryPoints entryPoints = interfaceDefiningEntryPoints
+ .getAnnotation(EntryPoints.class);
+ Validate.notNull(entryPoints, EntryPoints.class.getName()
+ + " annotation required on "
+ + interfaceDefiningEntryPoints.getName());
+ this.page = entryPoints.page();
+ for (Method method : interfaceDefiningEntryPoints.getMethods()) {
+ EntryPoint entryPoint = method.getAnnotation(EntryPoint.class);
+ if (entryPoint != null) {
+ metadata.put(method.getName(), new EntryPointMetadata(method,
+ entryPoint));
}
}
}
- public void doRedirect(String methodName, Object... values) {
+ public void doTransition(String methodName, Object... values) {
if (!metadata.containsKey(methodName)) {
LOG.error("Method " + methodName
+ "doesn't represent a state(It doesn't have a "
- + LinkToState.class.getSimpleName()
+ + EntryPoint.class.getSimpleName()
+ " annotation). Nothing will be done");
return;
}
- LinkMetadata linkableMetadata = metadata.get(methodName);
+ EntryPointMetadata linkableMetadata = metadata.get(methodName);
Class>[] types = linkableMetadata.method.getParameterTypes();
String[] parameterNames = linkableMetadata.annotation.value();
String[] stringRepresentations = new String[parameterNames.length];
@@ -102,28 +104,28 @@ public class Redirector {
}
}
- public void applyTo(S controller) {
+ public void applyIfMatches(S controller) {
Execution current = executorRetriever.getCurrent();
Map matrixParams = MatrixParameters
.extract((HttpServletRequest) current.getNativeRequest());
Set matrixParamsNames = matrixParams.keySet();
- for (Entry entry : metadata.entrySet()) {
- LinkMetadata linkMetadata = entry.getValue();
- LinkToState linkToStateAnnotation = linkMetadata.annotation;
+ for (Entry entry : metadata.entrySet()) {
+ EntryPointMetadata entryPointMetadata = entry.getValue();
+ EntryPoint entryPointAnnotation = entryPointMetadata.annotation;
HashSet requiredParams = new HashSet(Arrays
- .asList(linkToStateAnnotation.value()));
+ .asList(entryPointAnnotation.value()));
if (matrixParamsNames.equals(requiredParams)) {
Object[] arguments = retrieveArguments(matrixParams,
- linkToStateAnnotation, linkMetadata.method
+ entryPointAnnotation, entryPointMetadata.method
.getParameterTypes());
- callMethod(controller, linkMetadata.method, arguments);
+ callMethod(controller, entryPointMetadata.method, arguments);
return;
}
}
}
private Object[] retrieveArguments(Map matrixParams,
- LinkToState linkToStateAnnotation, Class>[] parameterTypes) {
+ EntryPoint linkToStateAnnotation, Class>[] parameterTypes) {
Object[] result = new Object[parameterTypes.length];
for (int i = 0; i < parameterTypes.length; i++) {
Object argumentName = linkToStateAnnotation.value()[i];
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/RedirectorRegistry.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/URLHandlerRegistry.java
similarity index 58%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/common/RedirectorRegistry.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/URLHandlerRegistry.java
index 2d8527cd8..629fd0892 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/RedirectorRegistry.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/entrypoints/URLHandlerRegistry.java
@@ -1,20 +1,21 @@
-package org.navalplanner.web.common;
+package org.navalplanner.web.common.entrypoints;
import java.util.HashMap;
import java.util.Map;
+import org.navalplanner.web.common.converters.IConverterFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
/**
- * Registry of {@link Redirector}
+ * Registry of {@link URLHandler}
* @author Óscar González Fernández
*/
@Component
@Scope(BeanDefinition.SCOPE_SINGLETON)
-public class RedirectorRegistry implements IRedirectorRegistry {
+public class URLHandlerRegistry implements IURLHandlerRegistry {
@Autowired
private ExecutorRetriever executorRetriever;
@@ -22,12 +23,13 @@ public class RedirectorRegistry implements IRedirectorRegistry {
@Autowired
private IConverterFactory converterFactory;
- private Map, Redirector> cached = new HashMap, Redirector>();;
+ private Map, URLHandler>> cached = new HashMap, URLHandler>>();;
- public Redirector getRedirectorFor(Class klassWithLinkableMetadata) {
+ @SuppressWarnings("unchecked")
+ public URLHandler getRedirectorFor(Class klassWithLinkableMetadata) {
if (cached.containsKey(klassWithLinkableMetadata))
- return cached.get(klassWithLinkableMetadata);
- Redirector result = new Redirector(converterFactory,
+ return (URLHandler) cached.get(klassWithLinkableMetadata);
+ URLHandler result = new URLHandler(converterFactory,
executorRetriever, klassWithLinkableMetadata);
cached.put(klassWithLinkableMetadata, result);
return result;
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionWorkersController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionWorkersController.java
index a2610dba4..27dc83249 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionWorkersController.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionWorkersController.java
@@ -9,7 +9,7 @@ import java.util.Set;
import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.business.resources.entities.Worker;
import org.navalplanner.web.common.Util;
-import org.navalplanner.web.resources.worker.WorkerCRUDLinks;
+import org.navalplanner.web.resources.worker.IWorkerCRUDControllerEntryPoints;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
@@ -34,7 +34,7 @@ public class CriterionWorkersController extends GenericForwardComposer {
private Button cancelListButton;
- private WorkerCRUDLinks workerCRUD;
+ private IWorkerCRUDControllerEntryPoints workerCRUD;
public void showList(Event event) {
loadDataToList();
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerCRUDLinks.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/IWorkerCRUDControllerEntryPoints.java
similarity index 54%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerCRUDLinks.java
rename to navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/IWorkerCRUDControllerEntryPoints.java
index 1491e3e20..60cd7581d 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerCRUDLinks.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/IWorkerCRUDControllerEntryPoints.java
@@ -1,23 +1,23 @@
package org.navalplanner.web.resources.worker;
import org.navalplanner.business.resources.entities.Worker;
-import org.navalplanner.web.common.LinksDefiner;
-import org.navalplanner.web.common.LinkToState;
+import org.navalplanner.web.common.entrypoints.EntryPoint;
+import org.navalplanner.web.common.entrypoints.EntryPoints;
/**
* Contract for {@link WorkerCRUDController}.
* @author Óscar González Fernández
*/
-@LinksDefiner(page = "/resources/worker/worker.zul", beanName = "workerCRUD")
-public interface WorkerCRUDLinks {
+@EntryPoints(page = "/resources/worker/worker.zul", registerAs = "workerCRUD")
+public interface IWorkerCRUDControllerEntryPoints {
- @LinkToState("edit")
+ @EntryPoint("edit")
public abstract void goToEditForm(Worker worker);
- @LinkToState("workRelationships")
+ @EntryPoint("workRelationships")
public abstract void goToWorkRelationshipsForm(Worker worker);
- @LinkToState("create")
+ @EntryPoint("create")
public abstract void goToCreateForm();
}
\ No newline at end of file
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerCRUDController.java
index 5839fefa2..bc230877a 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerCRUDController.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerCRUDController.java
@@ -14,12 +14,12 @@ import org.navalplanner.business.resources.entities.Worker;
import org.navalplanner.business.resources.entities.WorkingRelationship;
import org.navalplanner.business.resources.services.CriterionService;
import org.navalplanner.web.common.IMessagesForUser;
-import org.navalplanner.web.common.IRedirectorRegistry;
import org.navalplanner.web.common.Level;
import org.navalplanner.web.common.MessagesForUser;
import org.navalplanner.web.common.OnlyOneVisible;
-import org.navalplanner.web.common.Redirector;
import org.navalplanner.web.common.Util;
+import org.navalplanner.web.common.entrypoints.IURLHandlerRegistry;
+import org.navalplanner.web.common.entrypoints.URLHandler;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.api.Window;
@@ -29,7 +29,7 @@ import org.zkoss.zul.api.Window;
* @author Óscar González Fernández
*/
public class WorkerCRUDController extends GenericForwardComposer implements
- WorkerCRUDLinks {
+ IWorkerCRUDControllerEntryPoints {
private Window createWindow;
@@ -45,7 +45,7 @@ public class WorkerCRUDController extends GenericForwardComposer implements
private IWorkerModel workerModel;
- private IRedirectorRegistry redirectorRegistry;
+ private IURLHandlerRegistry URLHandlerRegistry;
private OnlyOneVisible visibility;
@@ -179,9 +179,9 @@ public class WorkerCRUDController extends GenericForwardComposer implements
new WorkRelationshipsController(this.workerModel,this);
this.workRelationship.doAfterCompose(
comp.getFellow("addWorkRelationshipWindow"));
- Redirector redirector = redirectorRegistry
- .getRedirectorFor(WorkerCRUDLinks.class);
- redirector.applyTo(this);
+ URLHandler handler = URLHandlerRegistry
+ .getRedirectorFor(IWorkerCRUDControllerEntryPoints.class);
+ handler.applyIfMatches(this);
}
private LocalizationsController createLocalizationsController(
diff --git a/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml b/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml
index f65f8c252..828662434 100644
--- a/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml
+++ b/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml
@@ -13,7 +13,7 @@
required for "@Autowired")
-->
-
+
\ No newline at end of file
diff --git a/navalplanner-webapp/src/test/java/org/navalplanner/web/common/MatrixParametersSupportSeveralParameters.java b/navalplanner-webapp/src/test/java/org/navalplanner/web/common/MatrixParametersSupportSeveralParameters.java
index a3e6dd211..e78359682 100644
--- a/navalplanner-webapp/src/test/java/org/navalplanner/web/common/MatrixParametersSupportSeveralParameters.java
+++ b/navalplanner-webapp/src/test/java/org/navalplanner/web/common/MatrixParametersSupportSeveralParameters.java
@@ -9,6 +9,7 @@ import org.junit.experimental.theories.DataPoint;
import org.junit.experimental.theories.Theories;
import org.junit.experimental.theories.Theory;
import org.junit.runner.RunWith;
+import org.navalplanner.web.common.entrypoints.MatrixParameters;
/**
* Tests that {@link MatrixParameters} supports extracting several
diff --git a/navalplanner-webapp/src/test/java/org/navalplanner/web/common/MatrixParametersSupportsOneParameterTheory.java b/navalplanner-webapp/src/test/java/org/navalplanner/web/common/MatrixParametersSupportsOneParameterTheory.java
index 38c7b1a38..d470b7537 100644
--- a/navalplanner-webapp/src/test/java/org/navalplanner/web/common/MatrixParametersSupportsOneParameterTheory.java
+++ b/navalplanner-webapp/src/test/java/org/navalplanner/web/common/MatrixParametersSupportsOneParameterTheory.java
@@ -9,6 +9,7 @@ import org.junit.experimental.theories.DataPoint;
import org.junit.experimental.theories.Theories;
import org.junit.experimental.theories.Theory;
import org.junit.runner.RunWith;
+import org.navalplanner.web.common.entrypoints.MatrixParameters;
/**
* Test that {@link MatrixParameters} support one parameter
diff --git a/navalplanner-webapp/src/test/java/org/navalplanner/web/common/MatrixParametersSupportsParametersWithoutValue.java b/navalplanner-webapp/src/test/java/org/navalplanner/web/common/MatrixParametersSupportsParametersWithoutValue.java
index d0ec9cf31..0531c378d 100644
--- a/navalplanner-webapp/src/test/java/org/navalplanner/web/common/MatrixParametersSupportsParametersWithoutValue.java
+++ b/navalplanner-webapp/src/test/java/org/navalplanner/web/common/MatrixParametersSupportsParametersWithoutValue.java
@@ -11,6 +11,7 @@ import org.junit.experimental.theories.DataPoint;
import org.junit.experimental.theories.Theories;
import org.junit.experimental.theories.Theory;
import org.junit.runner.RunWith;
+import org.navalplanner.web.common.entrypoints.MatrixParameters;
/**
* Tests that {@link MatrixParameters} supports matrix parameters