You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2003/12/11 10:56:58 UTC
cvs commit: cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/aspect/impl DefaultAspectDataHandler.java AspectUtil.java
cziegeler 2003/12/11 01:56:58
Modified: src/blocks/portal/java/org/apache/cocoon/portal/aspect/impl
DefaultAspectDataHandler.java AspectUtil.java
Log:
Auto-conversion of aspect datas
Revision Changes Path
1.4 +2 -2 cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/aspect/impl/DefaultAspectDataHandler.java
Index: DefaultAspectDataHandler.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/aspect/impl/DefaultAspectDataHandler.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DefaultAspectDataHandler.java 20 Oct 2003 13:36:41 -0000 1.3
+++ DefaultAspectDataHandler.java 11 Dec 2003 09:56:58 -0000 1.4
@@ -181,7 +181,7 @@
AspectDataStore store = null;
try {
store = (AspectDataStore)this.storeSelector.select(aspectDesc.getStoreName());
- store.setAspectData(owner, aspectName, data);
+ store.setAspectData(owner, aspectName, AspectUtil.convert(aspectDesc, data));
} catch (ServiceException ce) {
throw new CascadingRuntimeException("Unable to lookup aspect data store " + aspectDesc.getStoreName(), ce);
} finally {
1.4 +23 -1 cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/aspect/impl/AspectUtil.java
Index: AspectUtil.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/aspect/impl/AspectUtil.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AspectUtil.java 17 Jun 2003 19:59:32 -0000 1.3
+++ AspectUtil.java 11 Dec 2003 09:56:58 -0000 1.4
@@ -88,4 +88,26 @@
}
}
+ public static Object convert(AspectDescription desc, Object value) {
+ try {
+ Class clazz = ClassUtils.loadClass(desc.getClassName());
+ if ( clazz.getName().startsWith("java.lang.")) {
+ if ( !clazz.equals(value.getClass())) {
+ Constructor constructor = clazz.getConstructor(new Class[] {String.class});
+ return constructor.newInstance(new String[] {value.toString()});
+ } else {
+ return value;
+ }
+ } else {
+ if ( !value.getClass().equals(clazz) ) {
+ // FIXME - this is catch by "ignore"
+ throw new RuntimeException("Class of aspect doesn't match description.");
+ }
+ return value;
+ }
+ } catch (Exception ignore) {
+ // if we can't convert, well we don't do it :)
+ return value;
+ }
+ }
}