summaryrefslogtreecommitdiff
path: root/orkbasej/java/net/sf/oreka/serializers/ServletRequestSerializer.java
blob: 8eded7449ae9a9287671d601d3bf4ca1c1151959 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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"));
	}

	
}