Skip to content

Commit

Permalink
Reworking metadata handling.
Browse files Browse the repository at this point in the history
  • Loading branch information
dima committed Feb 23, 2009
1 parent 4f1a732 commit af52406
Show file tree
Hide file tree
Showing 18 changed files with 110 additions and 91 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ package org.restfulx.serializers {
/**
* @inheritDoc
*/
public override function marshall(object:Object, recursive:Boolean = false, metadata:Object = null):Object {
var marshalled:Object = Rx.serializers.vo.marshall(object, recursive, metadata);
public override function marshall(object:Object, recursive:Boolean = false):Object {
var marshalled:Object = Rx.serializers.vo.marshall(object, recursive);
for (var prop:String in marshalled) {
if (marshalled[prop] == null) {
marshalled[prop] = "";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ package org.restfulx.serializers {
* @see org.restfulx.serializers.ISerializer#marshall
* @copy org.restfulx.serializers.ISerializer#marshall
*/
public function marshall(object:Object, recursive:Boolean = false, metadata:Object = null):Object {
public function marshall(object:Object, recursive:Boolean = false):Object {
return object;
}

Expand Down
3 changes: 1 addition & 2 deletions framework/src/org/restfulx/serializers/ISerializer.as
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,8 @@ package org.restfulx.serializers {
*
* @param object object to marshall into serialized form
* @param recursive flag indicating if entire object graph should be serialized inline
* @param metadata metadata that gets appended to the serialized object representation
*/
function marshall(object:Object, recursive:Boolean = false, metadata:Object = null):Object;
function marshall(object:Object, recursive:Boolean = false):Object;

/**
* The reverse of marshall. Takes a serialized form and turns it into
Expand Down
4 changes: 2 additions & 2 deletions framework/src/org/restfulx/serializers/JSONSerializer.as
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ package org.restfulx.serializers {
/**
* @inheritDoc
*/
public override function marshall(object:Object, recursive:Boolean = false, metadata:Object = null):Object {
var vo:Object = super.marshall(object, recursive, metadata);
public override function marshall(object:Object, recursive:Boolean = false):Object {
var vo:Object = super.marshall(object, recursive);
var localName:String = RxUtils.toSnakeCase(vo["clazz"]);
delete vo["clazz"];
for (var prop:String in vo) {
Expand Down
11 changes: 3 additions & 8 deletions framework/src/org/restfulx/serializers/VOSerializer.as
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ package org.restfulx.serializers {
/**
* @inheritDoc
*/
public override function marshall(object:Object, recursive:Boolean = false, metadata:Object = null):Object {
return marshallToVO(object, metadata);
public override function marshall(object:Object, recursive:Boolean = false):Object {
return marshallToVO(object);
}

/**
Expand Down Expand Up @@ -114,7 +114,7 @@ package org.restfulx.serializers {
return object;
}

protected function marshallToVO(object:Object, metadata:Object = null):Object {
protected function marshallToVO(object:Object):Object {
var fqn:String = getQualifiedClassName(object);

var result:Object = new Object;
Expand Down Expand Up @@ -147,11 +147,6 @@ package org.restfulx.serializers {
}

result["clazz"] = fqn.split("::")[1];

if (metadata != null) {
result["_metadata"] = metadata;
}

return result;
}

Expand Down
16 changes: 3 additions & 13 deletions framework/src/org/restfulx/serializers/XMLSerializer.as
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ package org.restfulx.serializers {
/**
* @inheritDoc
*/
public override function marshall(object:Object, recursive:Boolean = false, metadata:Object = null):Object {
return marshallToXML(object, recursive, metadata);
public override function marshall(object:Object, recursive:Boolean = false):Object {
return marshallToXML(object, recursive);
}

/**
Expand Down Expand Up @@ -137,17 +137,7 @@ package org.restfulx.serializers {
}
}

var extras:String = "";
if (metadata != null) {
extras = "<_metadata>";
for (var elm:String in metadata) {
var elmName:String = RxUtils.toSnakeCase(elm);
extras += "<" + elmName + ">" + RxUtils.uncast(metadata, elm) + "</" + elmName + ">";
}
extras += "</_metadata>";
}

result = "<" + localName + ">" + vars.join("") + extras + "</" + localName + ">";
result = "<" + localName + ">" + vars.join("") + "</" + localName + ">";

return new XML(result);
}
Expand Down
3 changes: 1 addition & 2 deletions framework/src/org/restfulx/services/IServiceProvider.as
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,8 @@ package org.restfulx.services {
*
* @param object object to marshall into serialized form
* @param recursive flag indicating if entire object graph should be serialized inline
* @param metadata metadata that gets appended to the serialized object representation
*/
function marshall(object:Object, recursive:Boolean = false, metadata:Object = null):Object;
function marshall(object:Object, recursive:Boolean = false):Object;

/**
* The reverse of marshall. Takes a response from the underlying service provider and turns it into
Expand Down
4 changes: 2 additions & 2 deletions framework/src/org/restfulx/services/air/AIRServiceProvider.as
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,8 @@ package org.restfulx.services.air {
/**
* @see org.restfulx.services.IServiceProvider#marshall
*/
public function marshall(object:Object, recursive:Boolean = false, metadata:Object = null):Object {
return Rx.serializers.vo.marshall(object, recursive, metadata);
public function marshall(object:Object, recursive:Boolean = false):Object {
return Rx.serializers.vo.marshall(object, recursive);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,18 @@ package org.restfulx.services.as3http {
recursive:Boolean = false, undoRedoFlag:int = 0):void {
if (RxUtils.isEmpty(object["id"])) {
var url:String = rootUrl + RxUtils.nestResource(object, nestedBy);

var urlParams:String = urlEncodeMetadata(metadata);
if (urlParams != "") {
url += "?" + urlParams;
}

trace("sending create request to: " + url);

var uri:URI = new URI(url);

getCreateOrUpdateHttpClient(object, responder, metadata, nestedBy, recursive,
undoRedoFlag, true).postFormData(uri, [marshallToVO(object, recursive, metadata)]);
undoRedoFlag, true).postFormData(uri, [marshallToVO(object, recursive)]);
} else {
update(object, responder, metadata, nestedBy, recursive, undoRedoFlag);
}
Expand All @@ -82,11 +89,17 @@ package org.restfulx.services.as3http {
recursive:Boolean = false, undoRedoFlag:int = 0):void {
var url:String = rootUrl + RxUtils.nestResource(object, nestedBy);
url = RxUtils.addObjectIdToResourceURL(url, object);

var urlParams:String = urlEncodeMetadata(metadata);
if (urlParams != "") {
url += "?" + urlParams;
}

trace("sending update request to: " + url);

var uri:URI = new URI(url);
getCreateOrUpdateHttpClient(object, responder, metadata, nestedBy, recursive,
undoRedoFlag).putFormData(uri, [marshallToVO(object, recursive, metadata)]);
undoRedoFlag).putFormData(uri, [marshallToVO(object, recursive)]);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,13 @@ package org.restfulx.services.as3http {

var uri:URI = new URI(url);

var urlParams:String = urlEncodeMetadata(metadata);
if (urlParams != "") {
url += "?" + urlParams;
}

var data:ByteArray = new ByteArray();
var serialized:String = serializer.marshall(object, recursive, metadata).toString();
var serialized:String = serializer.marshall(object, recursive).toString();
data.writeUTFBytes(serialized);
data.position = 0;

Expand All @@ -143,8 +148,13 @@ package org.restfulx.services.as3http {

var uri:URI = new URI(url);

var urlParams:String = urlEncodeMetadata(metadata);
if (urlParams != "") {
url += "?" + urlParams;
}

var data:ByteArray = new ByteArray();
var serialized:String = serializer.marshall(object, recursive, metadata).toString();
var serialized:String = serializer.marshall(object, recursive).toString();
data.writeUTFBytes(serialized);
data.position = 0;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ package org.restfulx.services.as3http {
/**
* @see org.restfulx.services.IServiceProvider#marshall
*/
public function marshall(object:Object, recursive:Boolean = false, metadata:Object = null):Object {
return marshallToJSON(object, recursive, metadata);
public function marshall(object:Object, recursive:Boolean = false):Object {
return marshallToJSON(object, recursive);
}

/**
Expand Down Expand Up @@ -316,8 +316,8 @@ package org.restfulx.services.as3http {
return client;
}

protected function marshallToJSON(object:Object, recursive:Boolean = false, metadata:Object = null):String {
var vo:Object = Rx.serializers.vo.marshall(object, recursive, metadata);
protected function marshallToJSON(object:Object, recursive:Boolean = false):String {
var vo:Object = Rx.serializers.vo.marshall(object, recursive);
if (object.hasOwnProperty("id") && !RxUtils.isEmpty(object["id"])) {
vo["_id"] = object["id"];
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ package org.restfulx.services.http {
}

// play with this
protected override function marshallToVO(object:Object, recursive:Boolean = false, metadata:Object = null):Object {
var vo:Object = Rx.serializers.vo.marshall(object, false, metadata);
protected override function marshallToVO(object:Object, recursive:Boolean = false):Object {
var vo:Object = Rx.serializers.vo.marshall(object, false);
delete vo["clazz"];
for (var prop:String in vo) {
if (vo[prop] == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ package org.restfulx.services.http {
/**
* @see org.restfulx.services.IServiceProvider#marshall
*/
public override function marshall(object:Object, recursive:Boolean = false, metadata:Object = null):Object {
return serializer.marshall(object, recursive, metadata);
public override function marshall(object:Object, recursive:Boolean = false):Object {
return serializer.marshall(object, recursive);
}

/**
Expand Down
Loading

0 comments on commit af52406

Please sign in to comment.