[Title]Fix about ConcurrentModificationException
authorsanghyunnim.lee <sanghyunnim.lee@samsung.com>
Wed, 1 Aug 2012 01:23:47 +0000 (10:23 +0900)
committersanghyunnim.lee <sanghyunnim.lee@samsung.com>
Wed, 1 Aug 2012 01:23:47 +0000 (10:23 +0900)
[Type]plugin
[Module]timeline chart
[Priority]major
[CQ#]
[Redmine#]5765
[Problem]
[Cause]
[Solution]
[TestCase]

org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/chart/CPUChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/chart/CPUCoreChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/chart/CPUFrequencyChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/chart/ProcessMemoryChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/chart/SystemMemoryChart.java

index 4299bfe..3ecdb97 100644 (file)
@@ -112,17 +112,20 @@ public class CPUChart extends TimelineChart {
        @Override
        public void update() {
                Display.getDefault().asyncExec(new Runnable() {
+                       @SuppressWarnings("unchecked")
                        @Override
                        public void run() {
-                               for(XYDataItem xyDataItem : appLoadInfo.newXYDataItems) {
+                               Vector<XYDataItem> tempXYDataItems = (Vector<XYDataItem>) appLoadInfo.newXYDataItems.clone();
+                               appLoadInfo.newXYDataItems.clear();
+                               for(XYDataItem xyDataItem : tempXYDataItems) {
                                        appLoadInfo.baseSeries.add(xyDataItem);
                                }
-                               appLoadInfo.newXYDataItems.clear();
                                
-                               for(XYDataItem xyDataItem : totalLoadInfo.newXYDataItems) {
+                               tempXYDataItems = (Vector<XYDataItem>) totalLoadInfo.newXYDataItems.clone();
+                               totalLoadInfo.newXYDataItems.clear();
+                               for(XYDataItem xyDataItem : tempXYDataItems) {
                                        totalLoadInfo.baseSeries.add(xyDataItem);
                                }
-                               totalLoadInfo.newXYDataItems.clear();
                        }
                });
        }
index d0ccfb4..e024da7 100644 (file)
@@ -153,27 +153,32 @@ public class CPUCoreChart extends TimelineChart {
                xyplot.setRenderer(lineRenderer);
        }
 
+       @SuppressWarnings("unchecked")
        @Override
        public void update() {
-               for(XYDataItem xyDataItem : coreInfo0.newXYDataItems) {
+               Vector<XYDataItem> tempXYDataItems = (Vector<XYDataItem>) coreInfo0.newXYDataItems.clone();
+               coreInfo0.newXYDataItems.clear();
+               for(XYDataItem xyDataItem : tempXYDataItems) {
                        coreInfo0.baseSeries.add(xyDataItem);
                }
-               coreInfo0.newXYDataItems.clear();
                
-               for(XYDataItem xyDataItem : coreInfo1.newXYDataItems) {
+               tempXYDataItems = (Vector<XYDataItem>) coreInfo1.newXYDataItems.clone();
+               coreInfo1.newXYDataItems.clear();
+               for(XYDataItem xyDataItem : tempXYDataItems) {
                        coreInfo1.baseSeries.add(xyDataItem);
                }
-               coreInfo1.newXYDataItems.clear();
                
-               for(XYDataItem xyDataItem : coreInfo2.newXYDataItems) {
+               tempXYDataItems = (Vector<XYDataItem>) coreInfo2.newXYDataItems.clone();
+               coreInfo2.newXYDataItems.clear();
+               for(XYDataItem xyDataItem : tempXYDataItems) {
                        coreInfo2.baseSeries.add(xyDataItem);
                }
-               coreInfo2.newXYDataItems.clear();
                
-               for(XYDataItem xyDataItem : coreInfo3.newXYDataItems) {
+               tempXYDataItems = (Vector<XYDataItem>) coreInfo3.newXYDataItems.clone();
+               coreInfo3.newXYDataItems.clear();
+               for(XYDataItem xyDataItem : tempXYDataItems) {
                        coreInfo3.baseSeries.add(xyDataItem);
                }
-               coreInfo3.newXYDataItems.clear();
        }
 
        @Override
index 3ff338f..0ddc562 100644 (file)
@@ -99,12 +99,14 @@ public class CPUFrequencyChart extends TimelineChart {
        @Override
        public void update() {
                Display.getDefault().asyncExec(new Runnable() {
+                       @SuppressWarnings("unchecked")
                        @Override
                        public void run() {
-                               for (XYDataItem xyDataItem : freequencyInfo.newXYDataItems) {
+                               Vector<XYDataItem> tempXYDataItems = (Vector<XYDataItem>) freequencyInfo.newXYDataItems.clone();
+                               freequencyInfo.newXYDataItems.clear();
+                               for (XYDataItem xyDataItem : tempXYDataItems) {
                                        freequencyInfo.baseSeries.add(xyDataItem);
                                }
-                               freequencyInfo.newXYDataItems.clear();
 
                                if (needUpdateChartRange) {
                                        xyPlot.getRangeAxis().setRange(new Range(0, chartMaxVal / TempConstants.chartRangeRatio));
index 77d2f1f..e2f82ba 100644 (file)
@@ -121,22 +121,26 @@ public class ProcessMemoryChart extends TimelineChart {
        @Override
        public void update() {
                Display.getDefault().asyncExec(new Runnable() {
+                       @SuppressWarnings("unchecked")
                        @Override
                        public void run() {
-                               for (XYDataItem xyDataItem : VSSMemoryInfo.newXYDataItems) {
+                               Vector<XYDataItem> tempXYDataItems = (Vector<XYDataItem>) VSSMemoryInfo.newXYDataItems.clone();
+                               VSSMemoryInfo.newXYDataItems.clear();
+                               for (XYDataItem xyDataItem : tempXYDataItems) {
                                        VSSMemoryInfo.baseSeries.add(xyDataItem);
                                }
-                               VSSMemoryInfo.newXYDataItems.clear();
 
-                               for (XYDataItem xyDataItem : RSSMemoryInfo.newXYDataItems) {
+                               tempXYDataItems = (Vector<XYDataItem>) RSSMemoryInfo.newXYDataItems.clone();
+                               RSSMemoryInfo.newXYDataItems.clear();
+                               for (XYDataItem xyDataItem : tempXYDataItems) {
                                        RSSMemoryInfo.baseSeries.add(xyDataItem);
                                }
-                               RSSMemoryInfo.newXYDataItems.clear();
                                
-                               for (XYDataItem xyDataItem : PSSMemoryInfo.newXYDataItems) {
+                               tempXYDataItems = (Vector<XYDataItem>) PSSMemoryInfo.newXYDataItems.clone();
+                               PSSMemoryInfo.newXYDataItems.clear();
+                               for (XYDataItem xyDataItem : tempXYDataItems) {
                                        PSSMemoryInfo.baseSeries.add(xyDataItem);
                                }
-                               PSSMemoryInfo.newXYDataItems.clear();
                                
                                if(needUpdateChartRange) {
                                        xyPlot.getRangeAxis().setRange(new Range(0, chartMaxVal / TempConstants.chartRangeRatio));
index 6982de5..5dd526a 100644 (file)
@@ -139,13 +139,13 @@ public class SystemMemoryChart extends TimelineChart {
                                
                                tempXYDataItems = (Vector<XYDataItem>) systemInfo.newXYDataItems.clone();
                                systemInfo.newXYDataItems.clear();
-                               for(XYDataItem xyDataItem : systemInfo.newXYDataItems) {
+                               for(XYDataItem xyDataItem : tempXYDataItems) {
                                        systemInfo.baseSeries.add(xyDataItem);
                                }
                                
                                tempXYDataItems = (Vector<XYDataItem>) totalInfo.newXYDataItems.clone();
                                totalInfo.newXYDataItems.clear();
-                               for(XYDataItem xyDataItem : totalInfo.newXYDataItems) {
+                               for(XYDataItem xyDataItem : tempXYDataItems) {
                                        totalInfo.baseSeries.add(xyDataItem);
                                }