mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 05:01:07 +00:00
Add LinkedList as a class that the copy constructor knows how to handle w/o Serialization
This commit is contained in:
@ -32,6 +32,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||||
@ -167,6 +168,11 @@ public class QRecord implements Serializable
|
|||||||
ArrayList<?> cloneList = new ArrayList<>(arrayList);
|
ArrayList<?> cloneList = new ArrayList<>(arrayList);
|
||||||
clone.put(entry.getKey(), (V) cloneList);
|
clone.put(entry.getKey(), (V) cloneList);
|
||||||
}
|
}
|
||||||
|
else if(entry.getValue() instanceof LinkedList<?> linkedList)
|
||||||
|
{
|
||||||
|
LinkedList<?> cloneList = new LinkedList<>(linkedList);
|
||||||
|
clone.put(entry.getKey(), (V) cloneList);
|
||||||
|
}
|
||||||
else if(entry.getValue() instanceof LinkedHashMap<?, ?> linkedHashMap)
|
else if(entry.getValue() instanceof LinkedHashMap<?, ?> linkedHashMap)
|
||||||
{
|
{
|
||||||
LinkedHashMap<?, ?> cloneMap = new LinkedHashMap<>(linkedHashMap);
|
LinkedHashMap<?, ?> cloneMap = new LinkedHashMap<>(linkedHashMap);
|
||||||
|
@ -26,6 +26,7 @@ import java.math.BigDecimal;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import com.kingsrook.qqq.backend.core.BaseTest;
|
import com.kingsrook.qqq.backend.core.BaseTest;
|
||||||
@ -175,7 +176,7 @@ class QRecordTest extends BaseTest
|
|||||||
**
|
**
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
@Test
|
@Test
|
||||||
void testListAsValue()
|
void testArrayListAsValue()
|
||||||
{
|
{
|
||||||
ArrayList<Integer> originalArrayList = new ArrayList<>(List.of(1, 2, 3));
|
ArrayList<Integer> originalArrayList = new ArrayList<>(List.of(1, 2, 3));
|
||||||
QRecord recordWithArrayListValue = new QRecord().withValue("myList", originalArrayList);
|
QRecord recordWithArrayListValue = new QRecord().withValue("myList", originalArrayList);
|
||||||
@ -196,6 +197,31 @@ class QRecordTest extends BaseTest
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
@Test
|
||||||
|
void testLinkedListAsValue()
|
||||||
|
{
|
||||||
|
LinkedList<Integer> originalLinkedList = new LinkedList<>(List.of(1, 2, 3));
|
||||||
|
QRecord recordWithLinkedListValue = new QRecord().withValue("myList", originalLinkedList);
|
||||||
|
QRecord cloneWithLinkedListValue = new QRecord(recordWithLinkedListValue);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// the clone list and original list should be equals (have contents that are equals), but not be the same (reference) //
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
assertEquals(List.of(1, 2, 3), cloneWithLinkedListValue.getValue("myList"));
|
||||||
|
assertNotSame(originalLinkedList, cloneWithLinkedListValue.getValue("myList"));
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// make sure a change to the original list doesn't change the cloned list (as it was cloned deeply) //
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
originalLinkedList.add(4);
|
||||||
|
assertNotEquals(originalLinkedList, cloneWithLinkedListValue.getValue("myList"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
**
|
**
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
Reference in New Issue
Block a user