@@ -98,32 +98,54 @@ firebase.toHashMap = obj => {
9898 if ( obj [ property ] === null ) {
9999 node . put ( property , null ) ;
100100 } else {
101- switch ( typeof obj [ property ] ) {
102- case 'object' :
103- node . put ( property , firebase . toHashMap ( obj [ property ] , node ) ) ;
104- break ;
105- case 'boolean' :
106- node . put ( property , java . lang . Boolean . valueOf ( String ( obj [ property ] ) ) ) ;
107- break ;
108- case 'number' :
109- if ( Number ( obj [ property ] ) === obj [ property ] && obj [ property ] % 1 === 0 )
110- node . put ( property , java . lang . Long . valueOf ( String ( obj [ property ] ) ) ) ;
111- else
112- node . put ( property , java . lang . Double . valueOf ( String ( obj [ property ] ) ) ) ;
113- break ;
114- case 'string' :
115- node . put ( property , String ( obj [ property ] ) ) ;
116- break ;
101+ if ( obj [ property ] instanceof Date ) {
102+ node . put ( property , new java . util . Date ( obj [ property ] . getTime ( ) ) ) ;
103+ } else if ( Array . isArray ( obj [ property ] ) ) {
104+ node . put ( property , firebase . toJavaArray ( obj [ property ] ) ) ;
105+ } else {
106+ switch ( typeof obj [ property ] ) {
107+ case 'object' :
108+ node . put ( property , firebase . toHashMap ( obj [ property ] , node ) ) ;
109+ break ;
110+ case 'boolean' :
111+ node . put ( property , java . lang . Boolean . valueOf ( String ( obj [ property ] ) ) ) ;
112+ break ;
113+ case 'number' :
114+ if ( Number ( obj [ property ] ) === obj [ property ] && obj [ property ] % 1 === 0 )
115+ node . put ( property , java . lang . Long . valueOf ( String ( obj [ property ] ) ) ) ;
116+ else
117+ node . put ( property , java . lang . Double . valueOf ( String ( obj [ property ] ) ) ) ;
118+ break ;
119+ case 'string' :
120+ node . put ( property , String ( obj [ property ] ) ) ;
121+ break ;
122+ }
117123 }
118124 }
119125 }
120126 }
121127 return node ;
122128} ;
123129
130+ firebase . toJavaArray = val => {
131+ var javaArray = new java . util . ArrayList ( ) ;
132+ for ( var i = 0 ; i < val . length ; i ++ ) {
133+ javaArray . add ( firebase . toValue ( val [ i ] ) ) ;
134+ }
135+ return javaArray ;
136+ } ;
137+
124138firebase . toValue = val => {
125139 let returnVal = null ;
126140 if ( val !== null ) {
141+
142+ if ( val instanceof Date ) {
143+ return new java . util . Date ( val . getTime ( ) ) ;
144+ }
145+ if ( Array . isArray ( val ) ) {
146+ return firebase . toJavaArray ( val ) ;
147+ }
148+
127149 switch ( typeof val ) {
128150 case 'object' :
129151 returnVal = firebase . toHashMap ( val ) ;
0 commit comments