My favorites
▼
|
Sign in
flexxb
FlexXB - an annotation based serializer for Flex and Air applications with built-in xml support
Project Home
Downloads
Wiki
Issues
Source
Export to GitHub
READ-ONLY: This project has been
archived
. For more information see
this post
.
Search
Search within:
All issues
Open issues
New issues
Issues to verify
for
Advanced search
Search tips
Subscriptions
Issue
4
attachment: diff.patch
(2.7 KB)
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
diff --git a/googlecode/flexxb/XMLSerializer.as b/googlecode/flexxb/XMLSerializer.as
index f245252..a3b3560 100644
--- a/googlecode/flexxb/XMLSerializer.as
+++ b/googlecode/flexxb/XMLSerializer.as
@@ -210,6 +210,8 @@
var serializer : ISerializer = descriptorCache.getSerializer(annotation);
result[annotation.fieldName] = serializer.deserialize(xmlData, annotation, this);
}
+ if(classDescriptor.valueField)
+ result[classDescriptor.valueField]=xmlData.text();
}
if(result is PersistableObject){
PersistableObject(result).commit();
diff --git a/googlecode/flexxb/annotation/XmlClass.as b/googlecode/flexxb/annotation/XmlClass.as
index 7189f49..338a2fe 100644
--- a/googlecode/flexxb/annotation/XmlClass.as
+++ b/googlecode/flexxb/annotation/XmlClass.as
@@ -49,6 +49,7 @@ package com.googlecode.flexxb.annotation
*
*/
public static const ARGUMENT_ID : String = "idField";
+ public static const ARGUMENT_VALUE : String = "valueField";
/**
*
*/
@@ -57,6 +58,7 @@ package com.googlecode.flexxb.annotation
*
*/
protected var _idField : Annotation;
+ public var valueField : String;
/**
*
*/
@@ -110,6 +112,7 @@ package com.googlecode.flexxb.annotation
public function get idField() : Annotation{
return _idField;
}
+
/**
*
* @return
@@ -157,6 +160,7 @@ package com.googlecode.flexxb.annotation
nameSpace = getNamespace(metadata);
setAlias(metadata.arg.(@key == ARGUMENT_ALIAS).@value);
setIdField(metadata.arg.(@key == ARGUMENT_ID).@value);
+ setValueField(metadata.arg.(@key == ARGUMENT_VALUE).@value);
_useChildNamespace = metadata.arg.(@key == ARGUMENT_USE_CHILD_NAMESPACE).@value;
}
@@ -165,6 +169,12 @@ package com.googlecode.flexxb.annotation
id = field;
}
}
+
+ protected function setValueField(field : String) : void{
+ if(field && field.length > 0) {
+ valueField = field;
+ }
+ }
/**
*
* @param metadata
diff --git a/googlecode/flexxb/serializer/XmlClassSerializer.as b/googlecode/flexxb/serializer/XmlClassSerializer.as
index d53ea0d..2e070b4 100644
--- a/googlecode/flexxb/serializer/XmlClassSerializer.as
+++ b/googlecode/flexxb/serializer/XmlClassSerializer.as
@@ -42,8 +42,9 @@
public function serialize(object:Object, annotation : Annotation, parentXml : XML, serializer : XMLSerializer) : XML
{
var xmlClass : XmlClass = annotation as XmlClass;
- var xml : XML = <xml />
+ var xml : XML = (xmlClass.valueField)? <xml>{object[xmlClass.valueField]}</xml> : <xml/>
xml.setName(new QName(xmlClass.nameSpace, xmlClass.alias));
+
if(xmlClass.useOwnNamespace()){
xml.addNamespace(xmlClass.nameSpace);
}else{
--
Powered by
Google Project Hosting