diff options
Diffstat (limited to 'orkbasej/java/net/sf/oreka/serializers/ServletRequestSerializer.java')
-rw-r--r-- | orkbasej/java/net/sf/oreka/serializers/ServletRequestSerializer.java | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/orkbasej/java/net/sf/oreka/serializers/ServletRequestSerializer.java b/orkbasej/java/net/sf/oreka/serializers/ServletRequestSerializer.java new file mode 100644 index 0000000..8eded74 --- /dev/null +++ b/orkbasej/java/net/sf/oreka/serializers/ServletRequestSerializer.java @@ -0,0 +1,79 @@ +/* + * Oreka -- A media capture and retrieval platform + * + * Copyright (C) 2005, orecx LLC + * + * http://www.orecx.com + * + * This program is free software, distributed under the terms of + * the GNU General Public License. + * Please refer to http://www.gnu.org/copyleft/gpl.html + * + */ + +package net.sf.oreka.serializers; + +import javax.servlet.http.*; + +import net.sf.oreka.OrkException; +import net.sf.oreka.OrkObject; +import net.sf.oreka.OrkObjectFactory; + +public class ServletRequestSerializer extends OrkSerializer { + + HttpServletRequest request = null; + final String classMarker = "cmd"; + + public OrkObject deSerialize(HttpServletRequest request) throws OrkException + { + this.request = request; + deserialize = true; // Set DeSerialize mode + + // Instanciate the right object + String classMarker2 = (String)request.getParameterNames().nextElement(); + String orkClass = null; + if(classMarker2 != null) + { + orkClass = request.getParameter(classMarker2); + } + if(orkClass == null) { + throw (new OrkException("ServletRequestSerializer.deSerialize: where is the command in:" + request.getQueryString())); + } + + OrkObject obj = OrkObjectFactory.instance().newOrkObject(orkClass.toLowerCase()); + obj.define(this); + obj.validate(); + return obj; + } + + @Override + public void addClassName(String value) { + ; // not needed, this serializer is only a de-serializer + } + + @Override + void addString(String key, String value) { + ; // not needed, this serializer is only a de-serializer + } + + @Override + String getString(String key, String oldValue, boolean required) throws OrkException { + String value = request.getParameter(key); + if(value == null) { + if (required) { + throw (new OrkException("ServletRequestSerializer.getString: parameter not found:" + key)); + } + else { + value = oldValue; + } + } + return value; + } + + @Override + public OrkObject objectValue(String key, OrkObject value, boolean required) throws OrkException { + throw (new OrkException("ServletRequestSerializer.objectValue: Nested objects not allowed")); + } + + +} |