@@ -331,70 +331,6 @@ impl Reference {
331331 }
332332 }
333333
334- /// Returns a deep clone of the reference.
335- ///
336- /// # Errors
337- ///
338- /// if the reference cannot be cloned.
339- pub fn deep_clone ( & self ) -> Result < Reference > {
340- let value = match self {
341- Reference :: ByteArray ( array) => {
342- let array = array. read ( ) ;
343- Reference :: ByteArray ( Gc :: new ( RwLock :: new ( array. clone ( ) ) ) )
344- }
345- Reference :: CharArray ( array) => {
346- let array = array. read ( ) ;
347- Reference :: CharArray ( Gc :: new ( RwLock :: new ( array. to_vec ( ) ) ) )
348- }
349- Reference :: ShortArray ( array) => {
350- let array = array. read ( ) ;
351- Reference :: ShortArray ( Gc :: new ( RwLock :: new ( array. to_vec ( ) ) ) )
352- }
353- Reference :: IntArray ( array) => {
354- let array = array. read ( ) ;
355- Reference :: IntArray ( Gc :: new ( RwLock :: new ( array. to_vec ( ) ) ) )
356- }
357- Reference :: LongArray ( array) => {
358- let array = array. read ( ) ;
359- Reference :: LongArray ( Gc :: new ( RwLock :: new ( array. to_vec ( ) ) ) )
360- }
361- Reference :: FloatArray ( array) => {
362- let array = array. read ( ) ;
363- Reference :: FloatArray ( Gc :: new ( RwLock :: new ( array. to_vec ( ) ) ) )
364- }
365- Reference :: DoubleArray ( array) => {
366- let array = array. read ( ) ;
367- Reference :: DoubleArray ( Gc :: new ( RwLock :: new ( array. to_vec ( ) ) ) )
368- }
369- Reference :: Array ( object_array) => {
370- let array = object_array. elements . read ( ) ;
371- let array = array. to_vec ( ) ;
372- let mut cloned_values = Vec :: with_capacity ( array. len ( ) ) ;
373- for value in array {
374- match value {
375- Some ( reference) => cloned_values. push ( Some ( reference. deep_clone ( ) ?) ) ,
376- None => cloned_values. push ( value) ,
377- }
378- }
379- let object_array = ObjectArray {
380- class : object_array. class . clone ( ) ,
381- elements : Gc :: new ( RwLock :: new ( cloned_values) ) ,
382- } ;
383- Reference :: Array ( object_array)
384- }
385- Reference :: Object ( object) => {
386- let object = object. read ( ) ;
387- if object. class ( ) . name ( ) == "java/lang/Class" {
388- // Special case for Class objects, which should not be deep cloned.
389- self . clone ( )
390- } else {
391- Reference :: Object ( Gc :: new ( RwLock :: new ( object. deep_clone ( ) ?) ) )
392- }
393- }
394- } ;
395- Ok ( value)
396- }
397-
398334 /// Convert the object to a bool value.
399335 ///
400336 /// # Errors
@@ -1369,22 +1305,6 @@ mod tests {
13691305 Ok ( ( ) )
13701306 }
13711307
1372- #[ test]
1373- fn test_deep_clone_byte_array ( ) -> Result < ( ) > {
1374- let reference = Reference :: from ( vec ! [ 1i8 ] ) ;
1375- let clone = reference. deep_clone ( ) ?;
1376- assert_eq ! ( reference, clone) ;
1377-
1378- {
1379- let mut array = clone. as_byte_vec_mut ( ) ?;
1380- if let Some ( element) = array. get_mut ( 0 ) {
1381- * element = 2 ;
1382- }
1383- }
1384- assert_ne ! ( reference, clone) ;
1385- Ok ( ( ) )
1386- }
1387-
13881308 #[ test]
13891309 fn test_hash_code_char_array ( ) {
13901310 let reference = Reference :: from ( vec ! [ 1 as char ] ) ;
@@ -1430,22 +1350,6 @@ mod tests {
14301350 Ok ( ( ) )
14311351 }
14321352
1433- #[ test]
1434- fn test_deep_clone_char_array ( ) -> Result < ( ) > {
1435- let reference = Reference :: from ( vec ! [ 1 as char ] ) ;
1436- let clone = reference. deep_clone ( ) ?;
1437- assert_eq ! ( reference, clone) ;
1438-
1439- {
1440- let mut array = clone. as_char_vec_mut ( ) ?;
1441- if let Some ( element) = array. get_mut ( 0 ) {
1442- * element = 2 ;
1443- }
1444- }
1445- assert_ne ! ( reference, clone) ;
1446- Ok ( ( ) )
1447- }
1448-
14491353 #[ test]
14501354 fn test_hash_code_short_array ( ) {
14511355 let reference = Reference :: from ( vec ! [ 1i16 ] ) ;
@@ -1491,22 +1395,6 @@ mod tests {
14911395 Ok ( ( ) )
14921396 }
14931397
1494- #[ test]
1495- fn test_deep_clone_short_array ( ) -> Result < ( ) > {
1496- let reference = Reference :: from ( vec ! [ 1i16 ] ) ;
1497- let clone = reference. deep_clone ( ) ?;
1498- assert_eq ! ( reference, clone) ;
1499-
1500- {
1501- let mut array = clone. as_short_vec_mut ( ) ?;
1502- if let Some ( element) = array. get_mut ( 0 ) {
1503- * element = 2 ;
1504- }
1505- }
1506- assert_ne ! ( reference, clone) ;
1507- Ok ( ( ) )
1508- }
1509-
15101398 #[ test]
15111399 fn test_hash_code_int_array ( ) {
15121400 let reference = Reference :: from ( vec ! [ 1i32 ] ) ;
@@ -1552,22 +1440,6 @@ mod tests {
15521440 Ok ( ( ) )
15531441 }
15541442
1555- #[ test]
1556- fn test_deep_clone_int_array ( ) -> Result < ( ) > {
1557- let reference = Reference :: from ( vec ! [ 1i32 ] ) ;
1558- let clone = reference. deep_clone ( ) ?;
1559- assert_eq ! ( reference, clone) ;
1560-
1561- {
1562- let mut array = clone. as_int_vec_mut ( ) ?;
1563- if let Some ( element) = array. get_mut ( 0 ) {
1564- * element = 2 ;
1565- }
1566- }
1567- assert_ne ! ( reference, clone) ;
1568- Ok ( ( ) )
1569- }
1570-
15711443 #[ test]
15721444 fn test_hash_code_long_array ( ) {
15731445 let reference = Reference :: from ( vec ! [ 1i64 ] ) ;
@@ -1613,22 +1485,6 @@ mod tests {
16131485 Ok ( ( ) )
16141486 }
16151487
1616- #[ test]
1617- fn test_deep_clone_long_array ( ) -> Result < ( ) > {
1618- let reference = Reference :: from ( vec ! [ 1i64 ] ) ;
1619- let clone = reference. deep_clone ( ) ?;
1620- assert_eq ! ( reference, clone) ;
1621-
1622- {
1623- let mut array = clone. as_long_vec_mut ( ) ?;
1624- if let Some ( element) = array. get_mut ( 0 ) {
1625- * element = 2 ;
1626- }
1627- }
1628- assert_ne ! ( reference, clone) ;
1629- Ok ( ( ) )
1630- }
1631-
16321488 #[ test]
16331489 fn test_hash_code_float_array ( ) {
16341490 let reference = Reference :: from ( vec ! [ 1.0f32 ] ) ;
@@ -1674,22 +1530,6 @@ mod tests {
16741530 Ok ( ( ) )
16751531 }
16761532
1677- #[ test]
1678- fn test_deep_clone_float_array ( ) -> Result < ( ) > {
1679- let reference = Reference :: from ( vec ! [ 1.0f32 ] ) ;
1680- let clone = reference. deep_clone ( ) ?;
1681- assert_eq ! ( reference, clone) ;
1682-
1683- {
1684- let mut array = clone. as_float_vec_mut ( ) ?;
1685- if let Some ( element) = array. get_mut ( 0 ) {
1686- * element = 2.0 ;
1687- }
1688- }
1689- assert_ne ! ( reference, clone) ;
1690- Ok ( ( ) )
1691- }
1692-
16931533 #[ test]
16941534 fn test_hash_code_double_array ( ) {
16951535 let reference = Reference :: from ( vec ! [ 1.0f64 ] ) ;
@@ -1735,22 +1575,6 @@ mod tests {
17351575 Ok ( ( ) )
17361576 }
17371577
1738- #[ test]
1739- fn test_deep_clone_double_array ( ) -> Result < ( ) > {
1740- let reference = Reference :: from ( vec ! [ 1.0f64 ] ) ;
1741- let clone = reference. deep_clone ( ) ?;
1742- assert_eq ! ( reference, clone) ;
1743-
1744- {
1745- let mut array = clone. as_double_vec_mut ( ) ?;
1746- if let Some ( element) = array. get_mut ( 0 ) {
1747- * element = 2.0 ;
1748- }
1749- }
1750- assert_ne ! ( reference, clone) ;
1751- Ok ( ( ) )
1752- }
1753-
17541578 #[ tokio:: test]
17551579 async fn test_hash_code_reference_array ( ) -> Result < ( ) > {
17561580 let class = load_class ( "java.lang.Object" ) . await ?;
@@ -1803,23 +1627,6 @@ mod tests {
18031627 Ok ( ( ) )
18041628 }
18051629
1806- #[ tokio:: test]
1807- async fn test_deep_clone_reference_array ( ) -> Result < ( ) > {
1808- let class = load_class ( "java.lang.Object" ) . await ?;
1809- let reference = Reference :: from ( ( class. clone ( ) , vec ! [ None ] ) ) ;
1810- let clone = reference. deep_clone ( ) ?;
1811- assert_eq ! ( reference, clone) ;
1812-
1813- {
1814- let ( _class, mut array) = clone. as_class_vec_mut ( ) ?;
1815- if let Some ( element) = array. get_mut ( 0 ) {
1816- * element = Some ( Reference :: from ( vec ! [ 1i8 ] ) ) ;
1817- }
1818- }
1819- assert_ne ! ( reference, clone) ;
1820- Ok ( ( ) )
1821- }
1822-
18231630 #[ tokio:: test]
18241631 async fn test_hash_code_object ( ) -> Result < ( ) > {
18251632 let class = load_class ( "java.lang.Object" ) . await ?;
@@ -1870,23 +1677,6 @@ mod tests {
18701677 Ok ( ( ) )
18711678 }
18721679
1873- #[ tokio:: test]
1874- async fn test_deep_clone_object ( ) -> Result < ( ) > {
1875- let class = load_class ( "java.lang.Integer" ) . await ?;
1876- let mut object = Object :: new ( class) ?;
1877- object. set_value ( "value" , Value :: Int ( 1 ) ) ?;
1878- let reference = Reference :: from ( object) ;
1879- let clone = reference. deep_clone ( ) ?;
1880- assert_eq ! ( reference, clone) ;
1881-
1882- {
1883- let mut cloned_object = clone. as_object_mut ( ) ?;
1884- cloned_object. set_value ( "value" , Value :: Int ( 2 ) ) ?;
1885- }
1886- assert_ne ! ( reference, clone) ;
1887- Ok ( ( ) )
1888- }
1889-
18901680 #[ tokio:: test]
18911681 async fn test_array_eq ( ) -> Result < ( ) > {
18921682 let class = load_class ( "java.lang.Object" ) . await ?;
0 commit comments