Skip to content

Commit fbc4635

Browse files
author
Alexander Lippling
committed
Moved object conversion to one place (removed code redundancy)
Change-Id: Ib73efcb15552aa4d42a57aeda2d4411df5a9415a
1 parent f6bf18f commit fbc4635

File tree

3 files changed

+64
-57
lines changed

3 files changed

+64
-57
lines changed

src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBArrayAdapter.java

Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import javax.xml.bind.annotation.adapters.XmlAdapter;
2323

2424
import com.sap.prd.mobile.ios.mios.xcodeprojreader.Array;
25-
import com.sap.prd.mobile.ios.mios.xcodeprojreader.Dict;
2625

2726
public class JAXBArrayAdapter extends XmlAdapter<JAXBArray, Array>
2827
{
@@ -31,20 +30,10 @@ public JAXBArray marshal(Array array) throws Exception
3130
{
3231
JAXBArray jaxbArray = new JAXBArray();
3332
Array elements = new JAXBPlist().createArray();
33+
JAXBPlistElementConverter converter = new JAXBPlistElementConverter(new JAXBDictAdapter(), this);
3434
for (Object value : array)
3535
{
36-
if (value instanceof Dict)
37-
{
38-
value = new JAXBDictAdapter().marshal((Dict) value);
39-
}
40-
else if (value instanceof Array)
41-
{
42-
value = marshal((Array) value);
43-
}
44-
else if (value instanceof Boolean)
45-
{
46-
value = ((Boolean)value) ? new JAXBTrue() : new JAXBFalse();
47-
}
36+
value = converter.convertToJAXB(value);
4837
elements.add(value);
4938
}
5039
jaxbArray.setElements(elements);
@@ -55,24 +44,10 @@ else if (value instanceof Boolean)
5544
public Array unmarshal(JAXBArray jaxbArray) throws Exception
5645
{
5746
Array array = new JAXBPlist().createArray();
47+
JAXBPlistElementConverter converter = new JAXBPlistElementConverter(new JAXBDictAdapter(), this);
5848
for (Object value : jaxbArray.getElements())
5949
{
60-
if (value instanceof JAXBDict)
61-
{
62-
value = new JAXBDictAdapter().unmarshal((JAXBDict) value);
63-
}
64-
else if (value instanceof JAXBArray)
65-
{
66-
value = unmarshal((JAXBArray) value);
67-
}
68-
else if (value instanceof JAXBTrue)
69-
{
70-
value = Boolean.TRUE;
71-
}
72-
else if (value instanceof JAXBFalse)
73-
{
74-
value = Boolean.FALSE;
75-
}
50+
value = converter.convertFromJAXB(value);
7651
array.add(value);
7752
}
7853
return array;

src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBDictAdapter.java

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -33,25 +33,16 @@ public JAXBDict marshal(Dict dict) throws Exception
3333
{
3434
JAXBDict jaxbDict = new JAXBDict();
3535
Array elements = new JAXBPlist().createArray();
36+
JAXBPlistElementConverter converter = new JAXBPlistElementConverter(this, new JAXBArrayAdapter());
3637
for (Map.Entry<String, Object> entry : dict.entrySet())
3738
{
3839
JAXBKey key = new JAXBKey();
3940
key.setValue(entry.getKey());
4041
elements.add(key);
4142

4243
Object value = entry.getValue();
43-
if (value instanceof Dict)
44-
{
45-
value = marshal((Dict) value);
46-
}
47-
else if (value instanceof Array)
48-
{
49-
value = new JAXBArrayAdapter().marshal((Array) value);
50-
}
51-
else if (value instanceof Boolean)
52-
{
53-
value = ((Boolean)value) ? new JAXBTrue() : new JAXBFalse();
54-
}
44+
value = converter.convertToJAXB(value);
45+
5546
elements.add(value);
5647
}
5748
jaxbDict.setElements(elements);
@@ -62,6 +53,7 @@ else if (value instanceof Boolean)
6253
public Dict unmarshal(JAXBDict jaxbDict) throws Exception
6354
{
6455
Dict dict = new LinkedHashMapDict();
56+
JAXBPlistElementConverter converter = new JAXBPlistElementConverter(this, new JAXBArrayAdapter());
6557
for (int i = 0; i < jaxbDict.getElements().size(); i += 2)
6658
{
6759
Object key = jaxbDict.getElements().get(i);
@@ -71,22 +63,8 @@ public Dict unmarshal(JAXBDict jaxbDict) throws Exception
7163
}
7264

7365
Object value = jaxbDict.getElements().get(i + 1);
74-
if (value instanceof JAXBDict)
75-
{
76-
value = unmarshal((JAXBDict) value);
77-
}
78-
else if (value instanceof JAXBArray)
79-
{
80-
value = new JAXBArrayAdapter().unmarshal((JAXBArray) value);
81-
}
82-
else if (value instanceof JAXBTrue)
83-
{
84-
value = Boolean.TRUE;
85-
}
86-
else if (value instanceof JAXBFalse)
87-
{
88-
value = Boolean.FALSE;
89-
}
66+
value = converter.convertFromJAXB(value);
67+
9068
dict.put((String) key, value);
9169
}
9270
return dict;
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.sap.prd.mobile.ios.mios.xcodeprojreader.jaxb;
2+
3+
import com.sap.prd.mobile.ios.mios.xcodeprojreader.Array;
4+
import com.sap.prd.mobile.ios.mios.xcodeprojreader.Dict;
5+
6+
public class JAXBPlistElementConverter
7+
{
8+
private final JAXBDictAdapter dictAdapter;
9+
private final JAXBArrayAdapter arrayAdapter;
10+
11+
public JAXBPlistElementConverter(JAXBDictAdapter dictAdapter, JAXBArrayAdapter arrayAdapter)
12+
{
13+
this.dictAdapter = dictAdapter;
14+
this.arrayAdapter = arrayAdapter;
15+
}
16+
17+
public Object convertFromJAXB(Object value) throws Exception
18+
{
19+
if (value instanceof JAXBDict)
20+
{
21+
value = dictAdapter.unmarshal((JAXBDict) value);
22+
}
23+
else if (value instanceof JAXBArray)
24+
{
25+
value = arrayAdapter.unmarshal((JAXBArray) value);
26+
}
27+
else if (value instanceof JAXBTrue)
28+
{
29+
value = Boolean.TRUE;
30+
}
31+
else if (value instanceof JAXBFalse)
32+
{
33+
value = Boolean.FALSE;
34+
}
35+
return value;
36+
}
37+
38+
public Object convertToJAXB(Object value) throws Exception
39+
{
40+
if (value instanceof Dict)
41+
{
42+
value = dictAdapter.marshal((Dict) value);
43+
}
44+
else if (value instanceof Array)
45+
{
46+
value = arrayAdapter.marshal((Array) value);
47+
}
48+
else if (value instanceof Boolean)
49+
{
50+
value = ((Boolean) value) ? new JAXBTrue() : new JAXBFalse();
51+
}
52+
return value;
53+
}
54+
}

0 commit comments

Comments
 (0)