Author: nbelaevski
Date: 2010-06-13 13:38:26 -0400 (Sun, 13 Jun 2010)
New Revision: 17623
Modified:
root/core/trunk/api/src/main/java/org/richfaces/resource/ResourceParameter.java
root/core/trunk/api/src/main/java/org/richfaces/resource/UserResource.java
root/core/trunk/impl/src/main/java/org/richfaces/application/DependencyInjectionServiceImpl.java
root/core/trunk/impl/src/main/java/org/richfaces/resource/ResourceHandlerImpl.java
root/core/trunk/impl/src/main/java/org/richfaces/resource/ResourceParameterELResolver.java
root/core/trunk/impl/src/test/java/org/richfaces/resource/StateHolderResourceImpl.java
Log:
@ResourceParameter handling updates:
- Removed 'value', added 'name' & 'expression' attributes
TODOs committed
Modified: root/core/trunk/api/src/main/java/org/richfaces/resource/ResourceParameter.java
===================================================================
---
root/core/trunk/api/src/main/java/org/richfaces/resource/ResourceParameter.java 2010-06-13
14:29:14 UTC (rev 17622)
+++
root/core/trunk/api/src/main/java/org/richfaces/resource/ResourceParameter.java 2010-06-13
17:38:26 UTC (rev 17623)
@@ -33,8 +33,25 @@
@Target({ElementType.FIELD, ElementType.METHOD})
public @interface ResourceParameter {
- public String value();
-
+ /**
+ * Name of the parameter to be injected. Defaults to property name if it is omitted.
+ *
+ * @return name
+ */
+ public String name() default "";
+
+ /**
+ * Expression, which value is injected into the property.
+ *
+ * @return
+ */
+ public String expression() default "";
+
+ /**
+ * Default value for injected property.
+ *
+ * @return
+ */
public String defaultValue() default "";
}
Modified: root/core/trunk/api/src/main/java/org/richfaces/resource/UserResource.java
===================================================================
--- root/core/trunk/api/src/main/java/org/richfaces/resource/UserResource.java 2010-06-13
14:29:14 UTC (rev 17622)
+++ root/core/trunk/api/src/main/java/org/richfaces/resource/UserResource.java 2010-06-13
17:38:26 UTC (rev 17623)
@@ -30,6 +30,7 @@
* @author Nick Belaevski
*
*/
+//TODO nick - add abstract class
public interface UserResource {
public Map<String, String> getResponseHeaders();
Modified:
root/core/trunk/impl/src/main/java/org/richfaces/application/DependencyInjectionServiceImpl.java
===================================================================
---
root/core/trunk/impl/src/main/java/org/richfaces/application/DependencyInjectionServiceImpl.java 2010-06-13
14:29:14 UTC (rev 17622)
+++
root/core/trunk/impl/src/main/java/org/richfaces/application/DependencyInjectionServiceImpl.java 2010-06-13
17:38:26 UTC (rev 17623)
@@ -45,6 +45,7 @@
import org.richfaces.log.RichfacesLogger;
import org.richfaces.resource.PostConstructResource;
import org.richfaces.resource.ResourceParameter;
+import org.richfaces.resource.ResourceParameterELResolver;
import org.slf4j.Logger;
/**
@@ -113,10 +114,33 @@
expectedType = propertyType;
}
- Object propertyValue = getExpressionValue(context, getDependency().value(),
expectedType);
+ ResourceParameter resourceParameter = getDependency();
+ String expression = resourceParameter.expression();
+ String name = resourceParameter.name();
+
+ if (expression.length() != 0 && name.length() != 0) {
+ throw new IllegalStateException(MessageFormat.format(
+ "'name' and 'expression' should not be specified
simultaneously: {0}",
+ resourceParameter));
+ }
+
+ Object propertyValue = null;
+ if (expression.length() != 0) {
+ propertyValue = getExpressionValue(context, expression, expectedType);
+ } else {
+ if (name.length() == 0) {
+ name = getPropertyDescriptor().getName();
+ }
+
+ Map<String, Object> parameters = (Map<String, Object>)
context.getAttributes().get(
+ ResourceParameterELResolver.CONTEXT_ATTRIBUTE_NAME);
+
+ propertyValue = parameters.get(name);
+ }
+
if (propertyValue == null || "".equals(propertyValue)) {
- String defaultValue = getDependency().defaultValue();
+ String defaultValue = resourceParameter.defaultValue();
if (defaultValue != null && defaultValue.length() != 0) {
propertyValue = getExpressionValue(context, defaultValue,
expectedType);
}
Modified:
root/core/trunk/impl/src/main/java/org/richfaces/resource/ResourceHandlerImpl.java
===================================================================
---
root/core/trunk/impl/src/main/java/org/richfaces/resource/ResourceHandlerImpl.java 2010-06-13
14:29:14 UTC (rev 17622)
+++
root/core/trunk/impl/src/main/java/org/richfaces/resource/ResourceHandlerImpl.java 2010-06-13
17:38:26 UTC (rev 17623)
@@ -458,6 +458,7 @@
if (resourceName.lastIndexOf(".ecss") != -1) {
result = new CompiledCSSResource(resourceName);
} else {
+ //TODO nick - libraryName as package name?
if ((resourceName != null) && ((libraryName == null) ||
(libraryName.length() == 0))) {
result = createHandlerDependentResource(resourceName, params);
}
Modified:
root/core/trunk/impl/src/main/java/org/richfaces/resource/ResourceParameterELResolver.java
===================================================================
---
root/core/trunk/impl/src/main/java/org/richfaces/resource/ResourceParameterELResolver.java 2010-06-13
14:29:14 UTC (rev 17622)
+++
root/core/trunk/impl/src/main/java/org/richfaces/resource/ResourceParameterELResolver.java 2010-06-13
17:38:26 UTC (rev 17623)
@@ -34,7 +34,7 @@
*/
public class ResourceParameterELResolver extends ELResolver {
- static final String CONTEXT_ATTRIBUTE_NAME = "rfResourceParam";
+ public static final String CONTEXT_ATTRIBUTE_NAME = "rfResourceParam";
@Override
public Class<?> getCommonPropertyType(ELContext context, Object base) {
Modified:
root/core/trunk/impl/src/test/java/org/richfaces/resource/StateHolderResourceImpl.java
===================================================================
---
root/core/trunk/impl/src/test/java/org/richfaces/resource/StateHolderResourceImpl.java 2010-06-13
14:29:14 UTC (rev 17622)
+++
root/core/trunk/impl/src/test/java/org/richfaces/resource/StateHolderResourceImpl.java 2010-06-13
17:38:26 UTC (rev 17623)
@@ -38,6 +38,7 @@
* @since 4.0
*/
@DynamicResource
+//TODO add tests for StateHolder
public class StateHolderResourceImpl extends AbstractCacheableResource implements
StateHolderResource {
private Object state = "";
Show replies by date