@@ -67,21 +67,18 @@ public JSJAXBUnmarshaller(JAXBContext context) {
6767
6868 @ Override
6969 public Object unmarshal (Node node ) throws JAXBException {
70- // TODO Auto-generated method stub
7170 return null ;
7271 }
7372
7473 @ Override
7574 public UnmarshallerHandler getUnmarshallerHandler () {
76- // TODO Auto-generated method stub
7775 return null ;
7876 }
7977
8078 @ Override
8179 public <T > JAXBElement <T > unmarshal (XMLStreamReader reader , Class <T > expectedType ) throws JAXBException {
8280 parser = new JSSAXParser ();
8381 xmlSource = ((JSXMLStreamReader ) reader ).getSource ();
84- @ SuppressWarnings ("unchecked" )
8582 JAXBElement <T > o = (JAXBElement <T >) doUnmarshal (null , expectedType , MODE_RETURN_ELEMENT );
8683 clearStatics ();
8784 return o ;
@@ -133,7 +130,6 @@ private Class<?> findClassForNode(DOMNode doc, Class<?>[] classes) {
133130 if (nodeName .equals (name ))
134131 return classes [i ];
135132 }
136- // TODO Auto-generated method stub
137133 return null ;
138134 }
139135
@@ -154,7 +150,6 @@ private Object unmarshalField(JSJAXBField field, DOMNode node, String className)
154150 * @param javaClass
155151 * @return an instance of this class
156152 */
157- @ SuppressWarnings ({ "unchecked" , "rawtypes" })
158153 private Object doUnmarshal (DOMNode node , Class <?> javaClass , int mode ) {
159154 if (jaxbClass != null )
160155 addSeeAlso (javaClass );
@@ -175,6 +170,8 @@ private Object doUnmarshal(DOMNode node, Class<?> javaClass, int mode) {
175170 this .javaObject = javaObject ;
176171 jaxbClass = newUnmarshalledInstance (javaClass , javaObject );
177172 try {
173+ // Note that we only ever parse the top level.
174+ // This method iterates to generate subsequent levels.
178175 parser .setContentHandler (this );
179176 switch (mode ) {
180177 case MODE_RESTARTING :
@@ -232,13 +229,12 @@ private void processArraysAndLists() {
232229// System.out.println("Filling List " + field.javaName);
233230 String type = (field .isArray ? field .javaClassName .replace ("[]" , "" ) : field .listClassName );
234231 boolean holdsObject = (field .holdsObjects != JSJAXBField .NO_OBJECT );
235- field .setValue (fillArrayData (field , null , null , (holdsObject ? null : type ), ! field . isArray ), this .javaObject );
232+ field .setValue (fillArrayData (field , null , null , (holdsObject ? null : type )), this .javaObject );
236233 }
237234 field .boundListNodes = null ;
238235 }
239236 }
240237
241- @ SuppressWarnings ("unchecked" )
242238 private void processMaps () {
243239 for (int j = jaxbClass .fields .size (); --j >= 0 ;) {
244240 JSJAXBField field = jaxbClass .fields .get (j );
@@ -265,8 +261,8 @@ private void processMaps() {
265261 valueType = className ;
266262 JSJAXBField valueFieldToUnmarshal = (className == null ? null : field );
267263 for (int i = 1 , n = nodes .size (); i < n ;) {
268- Object key = getNodeObject (keyFieldToUnmarshal , (DOMNode ) nodes .get (i ++), keyType , null , true );
269- Object value = getNodeObject (valueFieldToUnmarshal , (DOMNode ) nodes .get (i ++), valueType , null , true );
264+ Object key = getNodeObject (keyFieldToUnmarshal , (DOMNode ) nodes .get (i ++), keyType , null );
265+ Object value = getNodeObject (valueFieldToUnmarshal , (DOMNode ) nodes .get (i ++), valueType , null );
270266// System.out.println("map.put " + key + " = " + value);
271267 map .put (key , value );
272268 }
@@ -303,7 +299,7 @@ private Object[] getArrayOfType(JSJAXBField field, String type, int len) {
303299 return new Object [len ];
304300 }
305301
306- private Object [] fillArrayData (JSJAXBField field , DOMNode node , Object [] data , String arrayType , boolean asObject ) {
302+ private Object [] fillArrayData (JSJAXBField field , DOMNode node , Object [] data , String arrayType ) {
307303 boolean haveData = (data != null );
308304 int n = (haveData ? data .length : field .boundListNodes != null ? field .boundListNodes .size () : field .listValues .size ());
309305 Object [] a = getArrayOfType (field , arrayType , n );
@@ -315,12 +311,11 @@ private Object[] fillArrayData(JSJAXBField field, DOMNode node, Object[] data, S
315311 if (className != null )
316312 arrayType = className ;
317313 for (int i = 0 ; i < n ; i ++)
318- a [i ] = (field .listValues != null ? field .listValues .get (i ) : getNodeObject (fieldToUnmarshal , (node == null ? (DOMNode ) field .boundListNodes .get (i ) : node ), arrayType , data [i ],
319- asObject ));
314+ a [i ] = (field .listValues != null ? field .listValues .get (i ) : getNodeObject (fieldToUnmarshal , (node == null ? (DOMNode ) field .boundListNodes .get (i ) : node ), arrayType , data [i ]));
320315 return a ;
321316 }
322317
323- private Object getNodeObject (JSJAXBField fieldToUnmarshal , DOMNode node , String type , Object data , boolean asObject ) {
318+ private Object getNodeObject (JSJAXBField fieldToUnmarshal , DOMNode node , String type , Object data ) {
324319 if (fieldToUnmarshal != null ) {
325320 return unmarshalField (fieldToUnmarshal , node , type );
326321 }
@@ -339,7 +334,7 @@ private Object getNodeObject(JSJAXBField fieldToUnmarshal, DOMNode node, String
339334 return unmarshalField (field , node , null );
340335 }
341336 }
342- return convertFromType (null , data , type , asObject );
337+ return convertFromType (null , data , type );
343338 }
344339
345340 private void start (DOMNode node , QName qName , Attributes atts ) {
@@ -510,14 +505,9 @@ private void bindQName(QName q, JSJAXBField field, boolean isSeeAlso) {
510505 JSJAXBField getFieldFromQName (QName qName ) {
511506 String key = qName .getNamespaceURI () + ":" + qName .getLocalPart ();
512507 JSJAXBField f = jaxbClass .unmarshallerFieldMap .get (key );
513- // if (f == null)
514- // f = jaxbClass.unmarshallerFieldMap.get(qName.getLocalPart());
515508 if (f == null )
516509 f = seeAlsoMap .get (key );
517- // if (f == null)
518- // f = seeAlsoMap.get(qName.getLocalPart());
519-
520- // desparately doing this because I cannot find the capitalization algorithm in JAXB!
510+ // desperately doing this because I cannot find the capitalization algorithm in JAXB!
521511 if (f == null )
522512 f = jaxbClass .unmarshallerFieldMap .get ("/lc/" + key .toLowerCase ());
523513 if (f == null )
@@ -541,7 +531,7 @@ private void setFieldValue(JSJAXBField field) {
541531 // char data for field
542532 if (field .asList ) {
543533 field .setValue (fillArrayData (field , field .boundNode , data .split (" " ),
544- getArrayType (field ), false ), javaObject );
534+ getArrayType (field )), javaObject );
545535 return ;
546536 }
547537
@@ -581,7 +571,7 @@ private void setFieldValue(JSJAXBField field) {
581571 }
582572
583573 String dataType = (field .xmlType == null ? field .javaClassName : field .xmlType );
584- field .setValue (convertFromType (field , data , dataType , field . xmlType != null ), javaObject );
574+ field .setValue (convertFromType (field , data , dataType ), javaObject );
585575 }
586576
587577 private DOMNode addXmlns (DOMNode node ) {
@@ -606,11 +596,9 @@ private boolean isPrimitive(String type) {
606596 * @param field
607597 * @param objVal
608598 * @param type
609- * @param asObject TODO
610599 * @return
611600 */
612- @ SuppressWarnings ({ "unchecked" , "deprecation" })
613- private Object convertFromType (JSJAXBField field , Object objVal , String type , boolean asObject ) {
601+ private Object convertFromType (JSJAXBField field , Object objVal , String type ) {
614602 @ SuppressWarnings ("unused" )
615603 Object newVal = null ;
616604 try {
@@ -622,7 +610,6 @@ private Object convertFromType(JSJAXBField field, Object objVal, String type, bo
622610
623611 if (field != null ) {
624612 if (field .typeAdapter != null ) {
625- @ SuppressWarnings ("rawtypes" )
626613 XmlAdapter adapter = field .getAdapter ();
627614 try {
628615 return newVal = adapter .unmarshal (val );
@@ -788,23 +775,17 @@ private Object getNanInf(Object objVal) {
788775 return null ;
789776 }
790777
791- /////////// JSSAXParser callbacks ////////
778+ /////////// ContentHandler ( JSSAXParser callback) ////////
792779
793780 @ Override
794781 public void startElement (String uri , String localName , String qName , Attributes atts ) throws SAXException {
795782 start (parser .getNode (), new QName (uri , localName , "" ), atts );
796783 }
797784
798- /////////// unused XMLReader /////////
799-
800- @ Override
801- public void startDocument () throws SAXException {
802- }
785+ /////////// unused ContentHandler /////////
803786
804787 @ Override
805788 public void characters (char [] ch , int start , int length ) throws SAXException {
806- // TODO Auto-generated method stub
807-
808789 }
809790
810791 @ Override
@@ -816,39 +797,31 @@ public void endDocument() throws SAXException {
816797 }
817798
818799 @ Override
819- public void setDocumentLocator (Locator locator ) {
820- // TODO Auto-generated method stub
821-
800+ public void endPrefixMapping (String prefix ) throws SAXException {
822801 }
823802
824803 @ Override
825- public void startPrefixMapping (String prefix , String uri ) throws SAXException {
826- // TODO Auto-generated method stub
827-
804+ public void ignorableWhitespace (char [] ch , int start , int length ) throws SAXException {
828805 }
829806
830807 @ Override
831- public void endPrefixMapping (String prefix ) throws SAXException {
832- // TODO Auto-generated method stub
833-
808+ public void processingInstruction (String target , String data ) throws SAXException {
834809 }
835810
836811 @ Override
837- public void ignorableWhitespace (char [] ch , int start , int length ) throws SAXException {
838- // TODO Auto-generated method stub
839-
812+ public void setDocumentLocator (Locator locator ) {
840813 }
841814
842815 @ Override
843- public void processingInstruction (String target , String data ) throws SAXException {
844- // TODO Auto-generated method stub
845-
816+ public void skippedEntity (String name ) throws SAXException {
846817 }
847818
848819 @ Override
849- public void skippedEntity ( String name ) throws SAXException {
850- // TODO Auto-generated method stub
820+ public void startDocument ( ) throws SAXException {
821+ }
851822
823+ @ Override
824+ public void startPrefixMapping (String prefix , String uri ) throws SAXException {
852825 }
853826
854827}
0 commit comments