Issue is still occurring - and frequently. E.g.
Exception in thread "StrategyRunner Thread" java.lang.IllegalArgumentException: Desired candles (1 Sec) time is earlier than tick history (AUD/USD) start time '2014-11-29 00:00:00:000' < '2014-12-02 00:21:16:000 at com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.<init>(LoadCandlesFromTicksAction.java:97) at com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.<init>(LoadCandlesFromTicksAction.java:119) at com.dukascopy.charts.data.datacache.LoadCustomPeriodNumberOfCandlesAction.loadCandlesFromTicks(LoadCustomPeriodNumberOfCandlesAction.java:124) at com.dukascopy.charts.data.datacache.LoadCustomPeriodNumberOfCandlesAction.run(LoadCustomPeriodNumberOfCandlesAction.java:111) at com.dukascopy.charts.data.datacache.LoadNumberOfCandlesAction.run(LoadNumberOfCandlesAction.java:210) at com.dukascopy.charts.data.datacache.FeedDataProvider.loadCandlesDataBeforeSynched(FeedDataProvider.java:765) at com.dukascopy.dds2.greed.agent.strategy.tester.AbstractStrategyRunner.getFirstTicks(AbstractStrategyRunner.java:206) at com.dukascopy.dds2.greed.agent.strategy.tester.AbstractStrategyRunner.getFirstTicks(AbstractStrategyRunner.java:193) at com.dukascopy.dds2.greed.agent.strategy.tester.StrategyRunner.run(StrategyRunner.java:253) at java.lang.Thread.run(Unknown Source)
I'm NOT using the historical tester through the JForex client - I'm loading history data through the JForex API. Occasionally starting the JForex client will *temporarily* resolve this issue. As I've stated previously - the problem here appears to be the "management" JForex does to the most recently stored local data cache tick data on history calls. There is no reason why a history call through the API should invoke this process - calls for history data should be independent of this adjustment process for recent tick data in the local data cache. I understand why the JForex client needs to manage and update errors in the recent local data cache tick data (to help with JForex client charts etc) and I understand how easily this can get out of sych, but calls through the API for history data shouldn't fail because of this local cache tick data management. Especially as history data I am asking for DOES NOT INCLUDE the tick data that causes the exception.
Asking for 30M CANDLE HISTORY DATA FROM 06/01/2014 to 22/11/2014 - getting this exception - java.lang.IllegalArgumentException: Desired candles (1 Sec) time is earlier than tick history (AUD/USD) start time '2014-11-29 00:00:00:000' < '2014-12-02 00:21:16:000
NOTICE that neither the period (1 sec) or either of of the dates quoted in the exception are in the range of my history data call through the API? I assume this is because somehow, and for some very strange reason, a call for history data through the API invokes JForex local datacache tick management processes. Which then FAIL.
Potential solutions -
1/ untangle history calls for local cache data management 2/ fix the exception handling for history calls so this issues doesn't cause the exception and the history data load to FAIL
Don't know if this helps you guys debug it but here is the eclipse log of calls prior to the exception:
greed-common-310.jar
[pc: 141, same] [pc: 225, same_extended] [pc: 307, same_extended] // Method descriptor #202 (Lcom/dukascopy/charts/data/datacache/IFeedDataProvider;Lcom/dukascopy/api/Instrument;Lcom/dukascopy/api/OfferSide;Lcom/dukascopy/api/Filter;Lcom/dukascopy/api/Period;Lcom/dukascopy/charts/data/datacache/CurvesDataLoader$IntraperiodExistsPolicy;Lcom/dukascopy/charts/data/datacache/ILoadingProgressListener;Lcom/dukascopy/charts/data/datacache/LiveFeedListener;IIJ)V // Stack: 17, Locals: 13 public LoadCandlesFromTicksAction(com.dukascopy.charts.data.datacache.IFeedDataProvider feedDataProvider, com.dukascopy.api.Instrument instrument, com.dukascopy.api.OfferSide offerSide, com.dukascopy.api.Filter filter, com.dukascopy.api.Period desiredPeriod, com.dukascopy.charts.data.datacache.CurvesDataLoader.IntraperiodExistsPolicy intraperiodExistsPolicy, com.dukascopy.charts.data.datacache.ILoadingProgressListener originalLoadingProgress, com.dukascopy.charts.data.datacache.LiveFeedListener originalLiveFeedListener, int numberOfCandlesBefore, int numberOfCandlesAfter, long time); 0 aload_0 [this] 1 aload_1 [feedDataProvider] 2 aload_2 [instrument] 3 aload_3 [offerSide] 4 aload 4 [filter] 6 aload 5 [desiredPeriod] 8 aload 6 [intraperiodExistsPolicy] 10 aload 7 [originalLoadingProgress] 12 aload 8 [originalLiveFeedListener] 14 iload 9 [numberOfCandlesBefore] 16 iload 10 [numberOfCandlesAfter] 18 ldc2_w <Long -1> [34] 21 ldc2_w <Long -1> [34] 24 lload 11 [time] 26 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction(com.dukascopy.charts.data.datacache.IFeedDataProvider, com.dukascopy.api.Instrument, com.dukascopy.api.OfferSide, com.dukascopy.api.Filter, com.dukascopy.api.Period, com.dukascopy.charts.data.datacache.CurvesDataLoader$IntraperiodExistsPolicy, com.dukascopy.charts.data.datacache.ILoadingProgressListener, com.dukascopy.charts.data.datacache.LiveFeedListener, int, int, long, long, long) [36] 29 return Line numbers: [pc: 0, line: 119] [pc: 29, line: 134] Local variable table: [pc: 0, pc: 30] local: this index: 0 type: com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction [pc: 0, pc: 30] local: feedDataProvider index: 1 type: com.dukascopy.charts.data.datacache.IFeedDataProvider [pc: 0, pc: 30] local: instrument index: 2 type: com.dukascopy.api.Instrument [pc: 0, pc: 30] local: offerSide index: 3 type: com.dukascopy.api.OfferSide [pc: 0, pc: 30] local: filter index: 4 type: com.dukascopy.api.Filter [pc: 0, pc: 30] local: desiredPeriod index: 5 type: com.dukascopy.api.Period [pc: 0, pc: 30] local: intraperiodExistsPolicy index: 6 type: com.dukascopy.charts.data.datacache.CurvesDataLoader.IntraperiodExistsPolicy [pc: 0, pc: 30] local: originalLoadingProgress index: 7 type: com.dukascopy.charts.data.datacache.ILoadingProgressListener [pc: 0, pc: 30] local: originalLiveFeedListener index: 8 type: com.dukascopy.charts.data.datacache.LiveFeedListener [pc: 0, pc: 30] local: numberOfCandlesBefore index: 9 type: int [pc: 0, pc: 30] local: numberOfCandlesAfter index: 10 type: int [pc: 0, pc: 30] local: time index: 11 type: long // Method descriptor #203 (Lcom/dukascopy/charts/data/datacache/IFeedDataProvider;Lcom/dukascopy/api/Instrument;Lcom/dukascopy/api/OfferSide;Lcom/dukascopy/api/Filter;Lcom/dukascopy/api/Period;Lcom/dukascopy/charts/data/datacache/CurvesDataLoader$IntraperiodExistsPolicy;Lcom/dukascopy/charts/data/datacache/ILoadingProgressListener;Lcom/dukascopy/charts/data/datacache/LiveFeedListener;JJ)V // Stack: 17, Locals: 13 public LoadCandlesFromTicksAction(com.dukascopy.charts.data.datacache.IFeedDataProvider feedDataProvider, com.dukascopy.api.Instrument instrument, com.dukascopy.api.OfferSide offerSide, com.dukascopy.api.Filter filter, com.dukascopy.api.Period desiredPeriod, com.dukascopy.charts.data.datacache.CurvesDataLoader.IntraperiodExistsPolicy intraperiodExistsPolicy, com.dukascopy.charts.data.datacache.ILoadingProgressListener originalLoadingProgress, com.dukascopy.charts.data.datacache.LiveFeedListener originalLiveFeedListener, long fromTime, long toTime); 0 aload_0 [this] 1 aload_1 [feedDataProvider] 2 aload_2 [instrument] 3 aload_3 [offerSide] 4 aload 4 [filter] 6 aload 5 [desiredPeriod] 8 aload 6 [intraperiodExistsPolicy] 10 aload 7 [originalLoadingProgress] 12 aload 8 [originalLiveFeedListener] 14 iconst_m1 15 iconst_m1 16 lload 9 [fromTime] 18 lload 11 [toTime] 20 ldc2_w <Long -1> [34] 23 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction(com.dukascopy.charts.data.datacache.IFeedDataProvider, com.dukascopy.api.Instrument, com.dukascopy.api.OfferSide, com.dukascopy.api.Filter, com.dukascopy.api.Period, com.dukascopy.charts.data.datacache.CurvesDataLoader$IntraperiodExistsPolicy, com.dukascopy.charts.data.datacache.ILoadingProgressListener, com.dukascopy.charts.data.datacache.LiveFeedListener, int, int, long, long, long) [36] 26 return Line numbers: [pc: 0, line: 148] [pc: 26, line: 163] Local variable table: [pc: 0, pc: 27] local: this index: 0 type: com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction [pc: 0, pc: 27] local: feedDataProvider index: 1 type: com.dukascopy.charts.data.datacache.IFeedDataProvider [pc: 0, pc: 27] local: instrument index: 2 type: com.dukascopy.api.Instrument [pc: 0, pc: 27] local: offerSide index: 3 type: com.dukascopy.api.OfferSide [pc: 0, pc: 27] local: filter index: 4 type: com.dukascopy.api.Filter [pc: 0, pc: 27] local: desiredPeriod index: 5 type: com.dukascopy.api.Period [pc: 0, pc: 27] local: intraperiodExistsPolicy index: 6 type: com.dukascopy.charts.data.datacache.CurvesDataLoader.IntraperiodExistsPolicy [pc: 0, pc: 27] local: originalLoadingProgress index: 7 type: com.dukascopy.charts.data.datacache.ILoadingProgressListener [pc: 0, pc: 27] local: originalLiveFeedListener index: 8 type: com.dukascopy.charts.data.datacache.LiveFeedListener [pc: 0, pc: 27] local: fromTime index: 9 type: long [pc: 0, pc: 27] local: toTime index: 11 type: long // Method descriptor #205 ()V // Stack: 5, Locals: 3 public void run(); 0 aload_0 [this] 1 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getFromTime() : long [37] 4 ldc2_w <Long -1> [34] 7 lcmp 8 ifle 46 11 aload_0 [this] 12 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getToTime() : long [38] 15 ldc2_w <Long -1> [34] 18 lcmp 19 ifle 46 22 aload_0 [this] 23 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getDesiredPeriod() : com.dukascopy.api.Period [39] 26 aload_0 [this] 27 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getToTime() : long [38] 30 invokestatic com.dukascopy.charts.data.datacache.DataCacheUtils.getNextCandleStartFast(com.dukascopy.api.Period, long) : long [40] 33 lstore_1 [correctedToTheNextCandleToTime] 34 aload_0 [this] 35 aload_0 [this] 36 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getFromTime() : long [37] 39 lload_1 [correctedToTheNextCandleToTime] 40 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.performLoadingForFromToTimes(long, long) : void [41] 43 goto 90 46 aload_0 [this] 47 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getTime() : long [42] 50 ldc2_w <Long -1> [34] 53 lcmp 54 ifle 80 57 aload_0 [this] 58 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getNumberOfCandlesAfter() : int [43] 61 iconst_m1 62 if_icmple 80 65 aload_0 [this] 66 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getNumberOfCandlesBefore() : int [44] 69 iconst_m1 70 if_icmple 80 73 aload_0 [this] 74 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.performLoadingForCandlesCount() : void [45] 77 goto 90 80 new java.lang.IllegalArgumentException [18] 83 dup 84 ldc <String "Wrong params are set"> [46] 86 invokespecial java.lang.IllegalArgumentException(java.lang.String) [26] 89 athrow 90 return Line numbers: [pc: 0, line: 168] [pc: 22, line: 169] [pc: 34, line: 170] [pc: 43, line: 171] [pc: 46, line: 172] [pc: 73, line: 173] [pc: 80, line: 176] [pc: 90, line: 178] Local variable table: [pc: 34, pc: 43] local: correctedToTheNextCandleToTime index: 1 type: long [pc: 0, pc: 91] local: this index: 0 type: com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction Stack map table: number of frames 3 [pc: 46, same] [pc: 80, same] [pc: 90, same] // Method descriptor #208 (JJ)V // Stack: 11, Locals: 18 private void performLoadingForFromToTimes(long fromTime, long toTime); 0 aconst_null 1 astore 5 [exception] 3 aconst_null 4 astore 6 [customPeriodFromTicksCreator] 6 iconst_0 7 istore 7 [loadingProcessStopped] 9 new com.dukascopy.charts.data.datacache.customperiod.tick.FlowCustomPeriodFromTicksCreator [47] 12 dup 13 aload_0 [this] 14 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getInstrument() : com.dukascopy.api.Instrument [48] 17 aload_0 [this] 18 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getOfferSide() : com.dukascopy.api.OfferSide [49] 21 aload_0 [this] 22 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getDesiredPeriod() : com.dukascopy.api.Period [39] 25 aload_0 [this] 26 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getFilter() : com.dukascopy.api.Filter [50] 29 iconst_0 30 new java.lang.Long [51] 33 dup 34 lload_1 [fromTime] 35 invokespecial java.lang.Long(long) [52] 38 aconst_null 39 aload_0 [this] 40 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.feedDataProvider : com.dukascopy.charts.data.datacache.IFeedDataProvider [2] 43 invokeinterface com.dukascopy.charts.data.datacache.IFeedDataProvider.getFilterManager() : com.dukascopy.charts.data.datacache.filtering.IFilterManager [53] [nargs: 1] 48 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.FlowCustomPeriodFromTicksCreator(com.dukascopy.api.Instrument, com.dukascopy.api.OfferSide, com.dukascopy.api.Period, com.dukascopy.api.Filter, boolean, java.lang.Long, java.lang.Double, com.dukascopy.charts.data.datacache.filtering.IFilterManager) [54] 51 astore 6 [customPeriodFromTicksCreator] 53 aload 6 [customPeriodFromTicksCreator] 55 aload_0 [this] 56 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getOriginalLiveFeedListener() : com.dukascopy.charts.data.datacache.LiveFeedListener [55] 59 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator.addListener(com.dukascopy.charts.data.datacache.LiveFeedListener) : void [56] 62 new com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodTickLiveFeedListener [57] 65 dup 66 aload 6 [customPeriodFromTicksCreator] 68 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodTickLiveFeedListener(com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator) [58] 71 astore 8 [ticLiveFeedListener] 73 aload_0 [this] 74 aload_0 [this] 75 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getOriginalLoadingProgress() : com.dukascopy.charts.data.datacache.ILoadingProgressListener [59] 78 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.createTickLoadingProgressListener(com.dukascopy.charts.data.datacache.ILoadingProgressListener) : com.dukascopy.charts.data.datacache.customperiod.tick.TickLoadingProgressListener [60] 81 astore 9 [tickAfterLoadingProgressListener] 83 aload_0 [this] 84 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getFeedDataProvider() : com.dukascopy.charts.data.datacache.IFeedDataProvider [61] 87 aload_0 [this] 88 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getInstrument() : com.dukascopy.api.Instrument [48] 91 getstatic com.dukascopy.api.Period.TICK : com.dukascopy.api.Period [62] 94 invokeinterface com.dukascopy.charts.data.datacache.IFeedDataProvider.getTimeOfFirstCandle(com.dukascopy.api.Instrument, com.dukascopy.api.Period) : long [63] [nargs: 3] 99 lstore 10 [timeOfFirstCandle] 101 lload_1 [fromTime] 102 lload 10 [timeOfFirstCandle] 104 lcmp 105 ifle 112 108 lload_1 [fromTime] 109 goto 114 112 lload 10 [timeOfFirstCandle] 114 lstore 12 [startTime] 116 lload 12 [startTime] 118 lload_3 [toTime] 119 lcmp 120 ifge 213 123 aload_0 [this] 124 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getOriginalLoadingProgress() : com.dukascopy.charts.data.datacache.ILoadingProgressListener [59] 127 invokeinterface com.dukascopy.charts.data.datacache.ILoadingProgressListener.stopJob() : boolean [64] [nargs: 1] 132 ifeq 170 135 iconst_1 136 istore 7 [loadingProcessStopped] 138 aload_0 [this] 139 aload 6 [customPeriodFromTicksCreator] 141 aconst_null 142 aload 5 [exception] 144 iload 7 [loadingProcessStopped] 146 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.postFinishDataLoading(com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, java.lang.Exception, boolean) : void [65] 149 goto 169 152 astore 14 [e] 154 getstatic com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.LOGGER : org.slf4j.Logger [67] 157 aload 14 [e] 159 invokevirtual java.lang.Exception.getMessage() : java.lang.String [68] 162 aload 14 [e] 164 invokeinterface org.slf4j.Logger.error(java.lang.String, java.lang.Throwable) : void [69] [nargs: 3] 169 return 170 lload 12 [startTime] 172 aload_0 [this] 173 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getIncreaseTimeInterval() : long [70] 176 ladd 177 lstore 14 [endTime] 179 lload 14 [endTime] 181 lload_3 [toTime] 182 lcmp 183 ifge 191 186 lload 14 [endTime] 188 goto 192 191 lload_3 [toTime] 192 lstore 14 [endTime] 194 aload_0 [this] 195 lload 12 [startTime] 197 lload 14 [endTime] 199 aload 8 [ticLiveFeedListener] 201 aload 9 [tickAfterLoadingProgressListener] 203 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.loadDataForTimeInterval(long, long, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodTickLiveFeedListener, com.dukascopy.charts.data.datacache.customperiod.tick.TickLoadingProgressListener) : void [71] 206 lload 14 [endTime] 208 lstore 12 [startTime] 210 goto 116 213 aload_0 [this] 214 aload_0 [this] 215 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.offerSide : com.dukascopy.api.OfferSide [5] 218 aload_0 [this] 219 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.desiredPeriod : com.dukascopy.api.Period [4] 222 aload_0 [this] 223 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.filter : com.dukascopy.api.Filter [6] 226 aload 6 [customPeriodFromTicksCreator] 228 aload_0 [this] 229 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getToTime() : long [38] 232 aload_0 [this] 233 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.feedDataProvider : com.dukascopy.charts.data.datacache.IFeedDataProvider [2] 236 invokeinterface com.dukascopy.charts.data.datacache.IFeedDataProvider.getFilterManager() : com.dukascopy.charts.data.datacache.filtering.IFilterManager [53] [nargs: 1] 241 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.checkAndProcessLastCandle(com.dukascopy.api.OfferSide, com.dukascopy.api.Period, com.dukascopy.api.Filter, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, long, com.dukascopy.charts.data.datacache.filtering.IFilterManager) : void [72] 244 aload_0 [this] 245 aload 6 [customPeriodFromTicksCreator] 247 aconst_null 248 aload 5 [exception] 250 iload 7 [loadingProcessStopped] 252 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.postFinishDataLoading(com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, java.lang.Exception, boolean) : void [65] 255 goto 369 258 astore 8 [e] 260 getstatic com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.LOGGER : org.slf4j.Logger [67] 263 aload 8 [e] 265 invokevirtual java.lang.Exception.getMessage() : java.lang.String [68] 268 aload 8 [e] 270 invokeinterface org.slf4j.Logger.error(java.lang.String, java.lang.Throwable) : void [69] [nargs: 3] 275 goto 369 278 astore 8 [e] 280 aload 8 [e] 282 astore 5 [exception] 284 getstatic com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.LOGGER : org.slf4j.Logger [67] 287 aload 8 [e] 289 invokevirtual java.lang.Exception.getMessage() : java.lang.String [68] 292 aload 8 [e] 294 invokeinterface org.slf4j.Logger.error(java.lang.String, java.lang.Throwable) : void [69] [nargs: 3] 299 aload_0 [this] 300 aload 6 [customPeriodFromTicksCreator] 302 aconst_null 303 aload 5 [exception] 305 iload 7 [loadingProcessStopped] 307 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.postFinishDataLoading(com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, java.lang.Exception, boolean) : void [65] 310 goto 369 313 astore 8 [e] 315 getstatic com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.LOGGER : org.slf4j.Logger [67] 318 aload 8 [e] 320 invokevirtual java.lang.Exception.getMessage() : java.lang.String [68] 323 aload 8 [e] 325 invokeinterface org.slf4j.Logger.error(java.lang.String, java.lang.Throwable) : void [69] [nargs: 3] 330 goto 369 333 astore 16 335 aload_0 [this] 336 aload 6 [customPeriodFromTicksCreator] 338 aconst_null 339 aload 5 [exception] 341 iload 7 [loadingProcessStopped] 343 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.postFinishDataLoading(com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, java.lang.Exception, boolean) : void [65] 346 goto 366 349 astore 17 [e] 351 getstatic com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.LOGGER : org.slf4j.Logger [67] 354 aload 17 [e] 356 invokevirtual java.lang.Exception.getMessage() : java.lang.String [68] 359 aload 17 [e] 361 invokeinterface org.slf4j.Logger.error(java.lang.String, java.lang.Throwable) : void [69] [nargs: 3] 366 aload 16 368 athrow 369 return Exception Table: [pc: 138, pc: 149] -> 152 when : java.lang.Exception [pc: 244, pc: 255] -> 258 when : java.lang.Exception [pc: 9, pc: 138] -> 278 when : java.lang.Exception [pc: 170, pc: 244] -> 278 when : java.lang.Exception [pc: 299, pc: 310] -> 313 when : java.lang.Exception [pc: 9, pc: 138] -> 333 when : any [pc: 170, pc: 244] -> 333 when : any [pc: 278, pc: 299] -> 333 when : any [pc: 335, pc: 346] -> 349 when : java.lang.Exception [pc: 333, pc: 335] -> 333 when : any Line numbers: [pc: 0, line: 181] [pc: 3, line: 182] [pc: 6, line: 183] [pc: 9, line: 186] [pc: 53, line: 197] [pc: 62, line: 199] [pc: 73, line: 200] [pc: 83, line: 202] [pc: 101, line: 203] [pc: 116, line: 205] [pc: 123, line: 206] [pc: 135, line: 207] [pc: 138, line: 272] [pc: 149, line: 279] [pc: 152, line: 274] [pc: 154, line: 278] [pc: 169, line: 279] [pc: 170, line: 211] [pc: 179, line: 212] [pc: 194, line: 214] [pc: 206, line: 215] [pc: 210, line: 216] [pc: 213, line: 218] [pc: 244, line: 272] [pc: 255, line: 279] [pc: 258, line: 274] [pc: 260, line: 278] [pc: 275, line: 280] [pc: 278, line: 263] [pc: 280, line: 264] [pc: 284, line: 265] [pc: 299, line: 272] [pc: 310, line: 279] [pc: 313, line: 274] [pc: 315, line: 278] [pc: 330, line: 280] [pc: 333, line: 268] [pc: 335, line: 272] [pc: 346, line: 279] [pc: 349, line: 274] [pc: 351, line: 278] [pc: 366, line: 279] [pc: 369, line: 281] Local variable table: [pc: 154, pc: 169] local: e index: 14 type: java.lang.Exception [pc: 179, pc: 210] local: endTime index: 14 type: long [pc: 73, pc: 244] local: ticLiveFeedListener index: 8 type: com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodTickLiveFeedListener [pc: 83, pc: 244] local: tickAfterLoadingProgressListener index: 9 type: com.dukascopy.charts.data.datacache.customperiod.tick.TickLoadingProgressListener [pc: 101, pc: 244] local: timeOfFirstCandle index: 10 type: long [pc: 116, pc: 244] local: startTime index: 12 type: long [pc: 260, pc: 275] local: e index: 8 type: java.lang.Exception [pc: 280, pc: 299] local: e index: 8 type: java.lang.Exception [pc: 315, pc: 330] local: e index: 8 type: java.lang.Exception [pc: 351, pc: 366] local: e index: 17 type: java.lang.Exception [pc: 0, pc: 370] local: this index: 0 type: com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction [pc: 0, pc: 370] local: fromTime index: 1 type: long [pc: 0, pc: 370] local: toTime index: 3 type: long [pc: 3, pc: 370] local: exception index: 5 type: java.lang.Exception [pc: 6, pc: 370] local: customPeriodFromTicksCreator index: 6 type: com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator [pc: 9, pc: 370] local: loadingProcessStopped index: 7 type: boolean Stack map table: number of frames 16 [pc: 112, full, stack: {}, locals: {com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction, long, long, java.lang.Exception, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, int, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodTickLiveFeedListener, com.dukascopy.charts.data.datacache.customperiod.tick.TickLoadingProgressListener, long}] [pc: 114, same_locals_1_stack_item, stack: {long}] [pc: 116, append: {long}] [pc: 152, same_locals_1_stack_item, stack: {java.lang.Exception}] [pc: 169, same] [pc: 170, same] [pc: 191, append: {long}] [pc: 192, same_locals_1_stack_item, stack: {long}] [pc: 213, chop 1 local(s)] [pc: 258, full, stack: {java.lang.Exception}, locals: {com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction, long, long, java.lang.Exception, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, int}] [pc: 278, same_locals_1_stack_item, stack: {java.lang.Exception}] [pc: 313, same_locals_1_stack_item, stack: {java.lang.Exception}] [pc: 333, same_locals_1_stack_item, stack: {java.lang.Throwable}] [pc: 349, full, stack: {java.lang.Exception}, locals: {com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction, long, long, java.lang.Exception, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, int, _, _, _, _, _, _, _, _, java.lang.Throwable}] [pc: 366, same] [pc: 369, full, stack: {}, locals: {com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction, long, long, java.lang.Exception, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, int}] // Method descriptor #229 (Lcom/dukascopy/api/OfferSide;Lcom/dukascopy/api/Period;Lcom/dukascopy/api/Filter;Lcom/dukascopy/charts/data/datacache/customperiod/tick/CustomPeriodFromTicksCreator;JLcom/dukascopy/charts/data/datacache/filtering/IFilterManager;)V // Stack: 6, Locals: 15 private void checkAndProcessLastCandle(com.dukascopy.api.OfferSide offerSide, com.dukascopy.api.Period desiredPeriod, com.dukascopy.api.Filter filter, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator customPeriodFromTicksCreator, long lastCandleTime, com.dukascopy.charts.data.datacache.filtering.IFilterManager filterManager) throws com.dukascopy.charts.data.datacache.DataCacheException; 0 aload 4 [customPeriodFromTicksCreator] 2 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator.getLastData() : com.dukascopy.charts.data.datacache.CandleData [73] 5 astore 8 [lastCandle] 7 aload 4 [customPeriodFromTicksCreator] 9 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator.getCurrentCandleDataUnderAnalysis() : com.dukascopy.charts.data.datacache.CandleData [74] 12 astore 9 [notFinishedCandle] 14 getstatic com.dukascopy.api.Filter.WEEKENDS : com.dukascopy.api.Filter [75] 17 aload_3 [filter] 18 invokevirtual com.dukascopy.api.Filter.equals(java.lang.Object) : boolean [76] 21 ifeq 48 24 aload 7 [filterManager] 26 lload 5 [lastCandleTime] 28 aload_2 [desiredPeriod] 29 invokeinterface com.dukascopy.charts.data.datacache.filtering.IFilterManager.isWeekendTime(long, com.dukascopy.api.Period) : boolean [77] [nargs: 4] 34 ifeq 48 37 aload_2 [desiredPeriod] 38 lload 5 [lastCandleTime] 40 invokestatic com.dukascopy.charts.data.datacache.DataCacheUtils.getPreviousCandleStartFast(com.dukascopy.api.Period, long) : long [78] 43 lstore 5 [lastCandleTime] 45 goto 24 48 aload_2 [desiredPeriod] 49 lload 5 [lastCandleTime] 51 invokestatic com.dukascopy.charts.data.datacache.DataCacheUtils.getNextCandleStartFast(com.dukascopy.api.Period, long) : long [40] 54 lstore 10 [nextCandleTime] 56 aload 8 [lastCandle] 58 ifnull 88 61 aload 8 [lastCandle] 63 invokevirtual com.dukascopy.charts.data.datacache.CandleData.getTime() : long [79] 66 lload 5 [lastCandleTime] 68 lcmp 69 ifge 88 72 aload_0 [this] 73 aload 4 [customPeriodFromTicksCreator] 75 aload 8 [lastCandle] 77 invokevirtual com.dukascopy.charts.data.datacache.CandleData.getClose() : double [80] 80 lload 10 [nextCandleTime] 82 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.processFakeTickToCompleteLastCandle(com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, double, long) : void [81] 85 goto 217 88 aload 8 [lastCandle] 90 ifnonnull 125 93 aload 9 [notFinishedCandle] 95 ifnull 125 98 aload 9 [notFinishedCandle] 100 invokevirtual com.dukascopy.charts.data.datacache.CandleData.getTime() : long [79] 103 lload 5 [lastCandleTime] 105 lcmp 106 ifgt 125 109 aload_0 [this] 110 aload 4 [customPeriodFromTicksCreator] 112 aload 9 [notFinishedCandle] 114 invokevirtual com.dukascopy.charts.data.datacache.CandleData.getClose() : double [80] 117 lload 10 [nextCandleTime] 119 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.processFakeTickToCompleteLastCandle(com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, double, long) : void [81] 122 goto 217 125 aload 8 [lastCandle] 127 ifnonnull 217 130 aload 9 [notFinishedCandle] 132 ifnonnull 217 135 getstatic com.dukascopy.api.Filter.NO_FILTER : com.dukascopy.api.Filter [82] 138 aload_3 [filter] 139 invokevirtual com.dukascopy.api.Filter.equals(java.lang.Object) : boolean [76] 142 ifne 168 145 getstatic com.dukascopy.api.Filter.WEEKENDS : com.dukascopy.api.Filter [75] 148 aload_3 [filter] 149 invokevirtual com.dukascopy.api.Filter.equals(java.lang.Object) : boolean [76] 152 ifeq 217 155 aload 7 [filterManager] 157 lload 10 [nextCandleTime] 159 aload_2 [desiredPeriod] 160 invokeinterface com.dukascopy.charts.data.datacache.filtering.IFilterManager.isWeekendTime(long, com.dukascopy.api.Period) : boolean [77] [nargs: 4] 165 ifne 217 168 aload_0 [this] 169 lload 10 [nextCandleTime] 171 aload_2 [desiredPeriod] 172 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getLastTickBeforeTime(long, com.dukascopy.api.Period) : com.dukascopy.charts.data.datacache.TickData [83] 175 astore 12 [lastBeforeTimeTick] 177 aload 12 [lastBeforeTimeTick] 179 ifnull 217 182 getstatic com.dukascopy.api.OfferSide.ASK : com.dukascopy.api.OfferSide [84] 185 aload_1 [offerSide] 186 invokevirtual com.dukascopy.api.OfferSide.equals(java.lang.Object) : boolean [85] 189 ifeq 200 192 aload 12 [lastBeforeTimeTick] 194 invokevirtual com.dukascopy.charts.data.datacache.TickData.getAsk() : double [86] 197 goto 205 200 aload 12 [lastBeforeTimeTick] 202 invokevirtual com.dukascopy.charts.data.datacache.TickData.getBid() : double [87] 205 dstore 13 [price] 207 aload_0 [this] 208 aload 4 [customPeriodFromTicksCreator] 210 dload 13 [price] 212 lload 10 [nextCandleTime] 214 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.processFakeTickToCompleteLastCandle(com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, double, long) : void [81] 217 return Line numbers: [pc: 0, line: 293] [pc: 7, line: 294] [pc: 14, line: 296] [pc: 24, line: 297] [pc: 37, line: 298] [pc: 48, line: 302] [pc: 56, line: 304] [pc: 72, line: 308] [pc: 88, line: 310] [pc: 109, line: 314] [pc: 125, line: 316] [pc: 135, line: 320] [pc: 168, line: 327] [pc: 177, line: 328] [pc: 182, line: 329] [pc: 207, line: 332] [pc: 217, line: 336] Local variable table: [pc: 207, pc: 217] local: price index: 13 type: double [pc: 177, pc: 217] local: lastBeforeTimeTick index: 12 type: com.dukascopy.charts.data.datacache.TickData [pc: 0, pc: 218] local: this index: 0 type: com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction [pc: 0, pc: 218] local: offerSide index: 1 type: com.dukascopy.api.OfferSide [pc: 0, pc: 218] local: desiredPeriod index: 2 type: com.dukascopy.api.Period [pc: 0, pc: 218] local: filter index: 3 type: com.dukascopy.api.Filter [pc: 0, pc: 218] local: customPeriodFromTicksCreator index: 4 type: com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator [pc: 0, pc: 218] local: lastCandleTime index: 5 type: long [pc: 0, pc: 218] local: filterManager index: 7 type: com.dukascopy.charts.data.datacache.filtering.IFilterManager [pc: 7, pc: 218] local: lastCandle index: 8 type: com.dukascopy.charts.data.datacache.CandleData [pc: 14, pc: 218] local: notFinishedCandle index: 9 type: com.dukascopy.charts.data.datacache.CandleData [pc: 56, pc: 218] local: nextCandleTime index: 10 type: long Stack map table: number of frames 8 [pc: 24, append: {com.dukascopy.charts.data.datacache.CandleData, com.dukascopy.charts.data.datacache.CandleData}] [pc: 48, same] [pc: 88, append: {long}] [pc: 125, same] [pc: 168, same] [pc: 200, append: {com.dukascopy.charts.data.datacache.TickData}] [pc: 205, same_locals_1_stack_item, stack: {double}] [pc: 217, chop 1 local(s)] // Method descriptor #246 (Lcom/dukascopy/charts/data/datacache/customperiod/tick/CustomPeriodFromTicksCreator;DJ)V // Stack: 12, Locals: 7 private void processFakeTickToCompleteLastCandle(com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator customPeriodFromTicksCreator, double price, long time); 0 new com.dukascopy.charts.data.datacache.TickData [88] 3 dup 4 lload 4 [time] 6 dload_2 [price] 7 dload_2 [price] 8 dconst_0 9 dconst_0 10 invokespecial com.dukascopy.charts.data.datacache.TickData(long, double, double, double, double) [89] 13 astore 6 [fakeTick] 15 aload_1 [customPeriodFromTicksCreator] 16 aload 6 [fakeTick] 18 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator.analyseTickData(com.dukascopy.charts.data.datacache.TickData) : boolean [90] 21 pop 22 return Line numbers: [pc: 0, line: 343] [pc: 15, line: 344] [pc: 22, line: 346] Local variable table: [pc: 0, pc: 23] local: this index: 0 type: com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction [pc: 0, pc: 23] local: customPeriodFromTicksCreator index: 1 type: com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator [pc: 0, pc: 23] local: price index: 2 type: double [pc: 0, pc: 23] local: time index: 4 type: long [pc: 15, pc: 23] local: fakeTick index: 6 type: com.dukascopy.charts.data.datacache.TickData // Method descriptor #205 ()V // Stack: 9, Locals: 12 private void performLoadingForCandlesCount(); 0 aconst_null 1 astore_1 [exception] 2 aconst_null 3 astore_2 [customPeriodAfterCreator] 4 aconst_null 5 astore_3 [customPeriodBeforeCreator] 6 aload_0 [this] 7 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getTime() : long [42] 10 lstore 4 [timeForBeforeCreator] 12 aload_0 [this] 13 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.numberOfCandlesBefore : int [10] 16 ifle 83 19 aload_0 [this] 20 aload_0 [this] 21 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.instrument : com.dukascopy.api.Instrument [3] 24 aload_0 [this] 25 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.offerSide : com.dukascopy.api.OfferSide [5] 28 aload_0 [this] 29 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.filter : com.dukascopy.api.Filter [6] 32 aload_0 [this] 33 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.desiredPeriod : com.dukascopy.api.Period [4] 36 aload_0 [this] 37 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.numberOfCandlesBefore : int [10] 40 lload 4 [timeForBeforeCreator] 42 aload_0 [this] 43 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.feedDataProvider : com.dukascopy.charts.data.datacache.IFeedDataProvider [2] 46 invokeinterface com.dukascopy.charts.data.datacache.IFeedDataProvider.getFilterManager() : com.dukascopy.charts.data.datacache.filtering.IFilterManager [53] [nargs: 1] 51 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.loadDataBeforeTime(com.dukascopy.api.Instrument, com.dukascopy.api.OfferSide, com.dukascopy.api.Filter, com.dukascopy.api.Period, int, long, com.dukascopy.charts.data.datacache.filtering.IFilterManager) : com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator [91] 54 astore_3 [customPeriodBeforeCreator] 55 aload_0 [this] 56 aload_0 [this] 57 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.offerSide : com.dukascopy.api.OfferSide [5] 60 aload_0 [this] 61 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.desiredPeriod : com.dukascopy.api.Period [4] 64 aload_0 [this] 65 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.filter : com.dukascopy.api.Filter [6] 68 aload_3 [customPeriodBeforeCreator] 69 lload 4 [timeForBeforeCreator] 71 aload_0 [this] 72 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.feedDataProvider : com.dukascopy.charts.data.datacache.IFeedDataProvider [2] 75 invokeinterface com.dukascopy.charts.data.datacache.IFeedDataProvider.getFilterManager() : com.dukascopy.charts.data.datacache.filtering.IFilterManager [53] [nargs: 1] 80 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.checkAndProcessLastCandle(com.dukascopy.api.OfferSide, com.dukascopy.api.Period, com.dukascopy.api.Filter, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, long, com.dukascopy.charts.data.datacache.filtering.IFilterManager) : void [72] 83 aload_0 [this] 84 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getTime() : long [42] 87 lstore 6 [timeForAfterCreator] 89 aload_0 [this] 90 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.numberOfCandlesBefore : int [10] 93 ifle 109 96 aload_0 [this] 97 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.desiredPeriod : com.dukascopy.api.Period [4] 100 aload_0 [this] 101 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getTime() : long [42] 104 invokestatic com.dukascopy.charts.data.datacache.DataCacheUtils.getNextCandleStart(com.dukascopy.api.Period, long) : long [92] 107 lstore 6 [timeForAfterCreator] 109 aload_0 [this] 110 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.numberOfCandlesAfter : int [11] 113 ifle 195 116 aload_0 [this] 117 aload_0 [this] 118 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.instrument : com.dukascopy.api.Instrument [3] 121 aload_0 [this] 122 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.offerSide : com.dukascopy.api.OfferSide [5] 125 aload_0 [this] 126 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.filter : com.dukascopy.api.Filter [6] 129 aload_0 [this] 130 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.desiredPeriod : com.dukascopy.api.Period [4] 133 aload_0 [this] 134 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.numberOfCandlesAfter : int [11] 137 lload 6 [timeForAfterCreator] 139 aload_0 [this] 140 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.feedDataProvider : com.dukascopy.charts.data.datacache.IFeedDataProvider [2] 143 invokeinterface com.dukascopy.charts.data.datacache.IFeedDataProvider.getFilterManager() : com.dukascopy.charts.data.datacache.filtering.IFilterManager [53] [nargs: 1] 148 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.loadDataAfterTime(com.dukascopy.api.Instrument, com.dukascopy.api.OfferSide, com.dukascopy.api.Filter, com.dukascopy.api.Period, int, long, com.dukascopy.charts.data.datacache.filtering.IFilterManager) : com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator [93] 151 astore_2 [customPeriodAfterCreator] 152 aload_0 [this] 153 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.desiredPeriod : com.dukascopy.api.Period [4] 156 lload 6 [timeForAfterCreator] 158 aload_0 [this] 159 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.numberOfCandlesAfter : int [11] 162 invokestatic com.dukascopy.charts.data.datacache.DataCacheUtils.getTimeForNCandlesForwardFast(com.dukascopy.api.Period, long, int) : long [94] 165 lstore 8 [lastCandleTime] 167 aload_0 [this] 168 aload_0 [this] 169 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.offerSide : com.dukascopy.api.OfferSide [5] 172 aload_0 [this] 173 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.desiredPeriod : com.dukascopy.api.Period [4] 176 aload_0 [this] 177 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.filter : com.dukascopy.api.Filter [6] 180 aload_2 [customPeriodAfterCreator] 181 lload 8 [lastCandleTime] 183 aload_0 [this] 184 getfield com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.feedDataProvider : com.dukascopy.charts.data.datacache.IFeedDataProvider [2] 187 invokeinterface com.dukascopy.charts.data.datacache.IFeedDataProvider.getFilterManager() : com.dukascopy.charts.data.datacache.filtering.IFilterManager [53] [nargs: 1] 192 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.checkAndProcessLastCandle(com.dukascopy.api.OfferSide, com.dukascopy.api.Period, com.dukascopy.api.Filter, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, long, com.dukascopy.charts.data.datacache.filtering.IFilterManager) : void [72] 195 aload_0 [this] 196 aload_3 [customPeriodBeforeCreator] 197 aload_2 [customPeriodAfterCreator] 198 aload_1 [exception] 199 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.postData(com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, java.lang.Exception) : void [95] 202 goto 307 205 astore 4 [e] 207 getstatic com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.LOGGER : org.slf4j.Logger [67] 210 aload 4 [e] 212 invokevirtual java.lang.Exception.getMessage() : java.lang.String [68] 215 aload 4 [e] 217 invokeinterface org.slf4j.Logger.error(java.lang.String, java.lang.Throwable) : void [69] [nargs: 3] 222 goto 307 225 astore 4 [e] 227 aload 4 [e] 229 astore_1 [exception] 230 getstatic com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.LOGGER : org.slf4j.Logger [67] 233 aload 4 [e] 235 invokevirtual java.lang.Exception.getMessage() : java.lang.String [68] 238 aload 4 [e] 240 invokeinterface org.slf4j.Logger.error(java.lang.String, java.lang.Throwable) : void [69] [nargs: 3] 245 aload_0 [this] 246 aload_3 [customPeriodBeforeCreator] 247 aload_2 [customPeriodAfterCreator] 248 aload_1 [exception] 249 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.postData(com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, java.lang.Exception) : void [95] 252 goto 307 255 astore 4 [e] 257 getstatic com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.LOGGER : org.slf4j.Logger [67] 260 aload 4 [e] 262 invokevirtual java.lang.Exception.getMessage() : java.lang.String [68] 265 aload 4 [e] 267 invokeinterface org.slf4j.Logger.error(java.lang.String, java.lang.Throwable) : void [69] [nargs: 3] 272 goto 307 275 astore 10 277 aload_0 [this] 278 aload_3 [customPeriodBeforeCreator] 279 aload_2 [customPeriodAfterCreator] 280 aload_1 [exception] 281 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.postData(com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, java.lang.Exception) : void [95] 284 goto 304 287 astore 11 [e] 289 getstatic com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.LOGGER : org.slf4j.Logger [67] 292 aload 11 [e] 294 invokevirtual java.lang.Exception.getMessage() : java.lang.String [68] 297 aload 11 [e] 299 invokeinterface org.slf4j.Logger.error(java.lang.String, java.lang.Throwable) : void [69] [nargs: 3] 304 aload 10 306 athrow 307 return Exception Table: [pc: 195, pc: 202] -> 205 when : java.lang.Exception [pc: 6, pc: 195] -> 225 when : java.lang.Exception [pc: 245, pc: 252] -> 255 when : java.lang.Exception [pc: 6, pc: 195] -> 275 when : any [pc: 225, pc: 245] -> 275 when : any [pc: 277, pc: 284] -> 287 when : java.lang.Exception [pc: 275, pc: 277] -> 275 when : any Line numbers: [pc: 0, line: 349] [pc: 2, line: 351] [pc: 4, line: 352] [pc: 6, line: 358] [pc: 12, line: 359] [pc: 19, line: 360] [pc: 55, line: 370] [pc: 83, line: 383] [pc: 89, line: 384] [pc: 96, line: 385] [pc: 109, line: 387] [pc: 116, line: 388] [pc: 152, line: 398] [pc: 167, line: 399] [pc: 195, line: 416] [pc: 202, line: 423] [pc: 205, line: 418] [pc: 207, line: 422] [pc: 222, line: 424] [pc: 225, line: 409] [pc: 227, line: 410] [pc: 230, line: 411] [pc: 245, line: 416] [pc: 252, line: 423] [pc: 255, line: 418] [pc: 257, line: 422] [pc: 272, line: 424] [pc: 275, line: 415] [pc: 277, line: 416] [pc: 284, line: 423] [pc: 287, line: 418] [pc: 289, line: 422] [pc: 304, line: 423] [pc: 307, line: 425] Local variable table: [pc: 167, pc: 195] local: lastCandleTime index: 8 type: long [pc: 12, pc: 195] local: timeForBeforeCreator index: 4 type: long [pc: 89, pc: 195] local: timeForAfterCreator index: 6 type: long [pc: 207, pc: 222] local: e index: 4 type: java.lang.Exception [pc: 227, pc: 245] local: e index: 4 type: java.lang.Exception [pc: 257, pc: 272] local: e index: 4 type: java.lang.Exception [pc: 289, pc: 304] local: e index: 11 type: java.lang.Exception [pc: 0, pc: 308] local: this index: 0 type: com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction [pc: 2, pc: 308] local: exception index: 1 type: java.lang.Exception [pc: 4, pc: 308] local: customPeriodAfterCreator index: 2 type: com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator [pc: 6, pc: 308] local: customPeriodBeforeCreator index: 3 type: com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator Stack map table: number of frames 10 [pc: 83, full, stack: {}, locals: {com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction, java.lang.Exception, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, long}] [pc: 109, append: {long}] [pc: 195, chop 2 local(s)] [pc: 205, same_locals_1_stack_item, stack: {java.lang.Exception}] [pc: 225, same_locals_1_stack_item, stack: {java.lang.Exception}] [pc: 255, same_locals_1_stack_item, stack: {java.lang.Exception}] [pc: 275, same_locals_1_stack_item, stack: {java.lang.Throwable}] [pc: 287, full, stack: {java.lang.Exception}, locals: {com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction, java.lang.Exception, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, _, _, _, _, _, _, java.lang.Throwable}] [pc: 304, same] [pc: 307, full, stack: {}, locals: {com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction, java.lang.Exception, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator}] // Method descriptor #254 (Lcom/dukascopy/api/Instrument;Lcom/dukascopy/api/OfferSide;Lcom/dukascopy/api/Filter;Lcom/dukascopy/api/Period;IJLcom/dukascopy/charts/data/datacache/filtering/IFilterManager;)Lcom/dukascopy/charts/data/datacache/customperiod/tick/CustomPeriodFromTicksCreator; // Stack: 11, Locals: 18 private com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator loadDataBeforeTime(com.dukascopy.api.Instrument instrument, com.dukascopy.api.OfferSide offerSide, com.dukascopy.api.Filter filter, com.dukascopy.api.Period desiredPeriod, int numberOfCandlesBefore, long time, com.dukascopy.charts.data.datacache.filtering.IFilterManager filterManager) throws com.dukascopy.charts.data.datacache.DataCacheException; 0 iload 5 [numberOfCandlesBefore] 2 ifgt 7 5 aconst_null 6 areturn 7 aload_3 [filter] 8 ifnull 21 11 getstatic com.dukascopy.api.Filter.NO_FILTER : com.dukascopy.api.Filter [82] 14 aload_3 [filter] 15 invokevirtual com.dukascopy.api.Filter.equals(java.lang.Object) : boolean [76] 18 ifeq 35 21 aload 4 [desiredPeriod] 23 lload 6 [time] 25 iload 5 [numberOfCandlesBefore] 27 invokestatic com.dukascopy.charts.data.datacache.DataCacheUtils.getTimeForNCandlesBackFast(com.dukascopy.api.Period, long, int) : long [32] 30 lstore 9 [from] 32 goto 154 35 aload 4 [desiredPeriod] 37 lload 6 [time] 39 invokestatic com.dukascopy.charts.data.datacache.DataCacheUtils.getNextCandleStartFast(com.dukascopy.api.Period, long) : long [40] 42 lconst_1 43 lsub 44 lstore 11 [to] 46 new com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator [96] 49 dup 50 aload_1 [instrument] 51 aload_2 [offerSide] 52 iload 5 [numberOfCandlesBefore] 54 aload 4 [desiredPeriod] 56 aload_3 [filter] 57 iconst_1 58 lload 11 [to] 60 invokestatic java.lang.Long.valueOf(long) : java.lang.Long [97] 63 aconst_null 64 aload 8 [filterManager] 66 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator(com.dukascopy.api.Instrument, com.dukascopy.api.OfferSide, int, com.dukascopy.api.Period, com.dukascopy.api.Filter, boolean, java.lang.Long, java.lang.Double, com.dukascopy.charts.data.datacache.filtering.IFilterManager) [98] 69 astore 13 [customPeriodBeforeInverseCreator] 71 new com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodTickLiveFeedListener [57] 74 dup 75 aload 13 [customPeriodBeforeInverseCreator] 77 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodTickLiveFeedListener(com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator) [58] 80 astore 14 [tickInverseLiveFeedListener] 82 aload_0 [this] 83 aload_0 [this] 84 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getOriginalLoadingProgress() : com.dukascopy.charts.data.datacache.ILoadingProgressListener [59] 87 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.createTickLoadingProgressListener(com.dukascopy.charts.data.datacache.ILoadingProgressListener) : com.dukascopy.charts.data.datacache.customperiod.tick.TickLoadingProgressListener [60] 90 astore 15 [tickInverseLoadingProgressListener] 92 aload_0 [this] 93 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getFeedDataProvider() : com.dukascopy.charts.data.datacache.IFeedDataProvider [61] 96 aload_0 [this] 97 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.getInstrument() : com.dukascopy.api.Instrument [48] 100 getstatic com.dukascopy.api.Period.TICK : com.dukascopy.api.Period [62] 103 invokeinterface com.dukascopy.charts.data.datacache.IFeedDataProvider.getTimeOfFirstCandle(com.dukascopy.api.Instrument, com.dukascopy.api.Period) : long [63] [nargs: 3] 108 lstore 16 [firstCandleTime] 110 aload_0 [this] 111 lload 11 [to] 113 lload 16 [firstCandleTime] 115 aload 14 [tickInverseLiveFeedListener] 117 aload 15 [tickInverseLoadingProgressListener] 119 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.loadDataBeforeTime(long, long, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodTickLiveFeedListener, com.dukascopy.charts.data.datacache.customperiod.tick.TickLoadingProgressListener) : void [99] 122 aload 13 [customPeriodBeforeInverseCreator] 124 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator.getLoadedCandleCount() : int [100] 127 ifle 143 130 aload 13 [customPeriodBeforeInverseCreator] 132 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator.getLastData() : com.dukascopy.charts.data.datacache.CandleData [73] 135 getfield com.dukascopy.charts.data.datacache.CandleData.time : long [101] 138 lstore 9 [from] 140 goto 154 143 aload 4 [desiredPeriod] 145 lload 6 [time] 147 iload 5 [numberOfCandlesBefore] 149 invokestatic com.dukascopy.charts.data.datacache.DataCacheUtils.getTimeForNCandlesBackFast(com.dukascopy.api.Period, long, int) : long [32] 152 lstore 9 [from] 154 aload_0 [this] 155 aload_1 [instrument] 156 aload_2 [offerSide] 157 aload_3 [filter] 158 aload 4 [desiredPeriod] 160 iload 5 [numberOfCandlesBefore] 162 lload 9 [from] 164 aload 8 [filterManager] 166 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.loadDataAfterTime(com.dukascopy.api.Instrument, com.dukascopy.api.OfferSide, com.dukascopy.api.Filter, com.dukascopy.api.Period, int, long, com.dukascopy.charts.data.datacache.filtering.IFilterManager) : com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator [93] 169 astore 11 [creator] 171 aload 11 [creator] 173 areturn Line numbers: [pc: 0, line: 437] [pc: 5, line: 438] [pc: 7, line: 443] [pc: 21, line: 444] [pc: 35, line: 448] [pc: 46, line: 450] [pc: 71, line: 462] [pc: 82, line: 463] [pc: 92, line: 465] [pc: 110, line: 466] [pc: 122, line: 468] [pc: 130, line: 469] [pc: 143, line: 472] [pc: 154, line: 476] [pc: 171, line: 486] Local variable table: [pc: 32, pc: 35] local: from index: 9 type: long [pc: 140, pc: 143] local: from index: 9 type: long [pc: 46, pc: 154] local: to index: 11 type: long [pc: 71, pc: 154] local: customPeriodBeforeInverseCreator index: 13 type: com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator [pc: 82, pc: 154] local: tickInverseLiveFeedListener index: 14 type: com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodTickLiveFeedListener [pc: 92, pc: 154] local: tickInverseLoadingProgressListener index: 15 type: com.dukascopy.charts.data.datacache.customperiod.tick.TickLoadingProgressListener [pc: 110, pc: 154] local: firstCandleTime index: 16 type: long [pc: 0, pc: 174] local: this index: 0 type: com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction [pc: 0, pc: 174] local: instrument index: 1 type: com.dukascopy.api.Instrument [pc: 0, pc: 174] local: offerSide index: 2 type: com.dukascopy.api.OfferSide [pc: 0, pc: 174] local: filter index: 3 type: com.dukascopy.api.Filter [pc: 0, pc: 174] local: desiredPeriod index: 4 type: com.dukascopy.api.Period [pc: 0, pc: 174] local: numberOfCandlesBefore index: 5 type: int [pc: 0, pc: 174] local: time index: 6 type: long [pc: 0, pc: 174] local: filterManager index: 8 type: com.dukascopy.charts.data.datacache.filtering.IFilterManager [pc: 154, pc: 174] local: from index: 9 type: long [pc: 171, pc: 174] local: creator index: 11 type: com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator Stack map table: number of frames 5 [pc: 7, same] [pc: 21, same] [pc: 35, same] [pc: 143, full, stack: {}, locals: {com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction, com.dukascopy.api.Instrument, com.dukascopy.api.OfferSide, com.dukascopy.api.Filter, com.dukascopy.api.Period, int, long, com.dukascopy.charts.data.datacache.filtering.IFilterManager, _, _, long, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodFromTicksCreator, com.dukascopy.charts.data.datacache.customperiod.tick.CustomPeriodTickLiveFeedListener, com.dukascopy.charts.data.datacache.customperiod.tick.TickLoadingProgressListener, long}] [pc: 154, full, stack: {}, locals: {com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction, com.dukascopy.api.Instrument, com.dukascopy.api.OfferSide, com.dukascopy.api.Filter, com.dukascopy.api.Period, int, long, com.dukascopy.charts.data.datacache.filtering.IFilterManager, long}] // Method descriptor #264 (JLcom/dukascopy/api/Period;)Lcom/dukascopy/charts/data/datacache/TickData; // Stack: 7, Locals: 16 private com.dukascopy.charts.data.datacache.TickData getLastTickBeforeTime(long timeTo, com.dukascopy.api.Period period) throws com.dukascopy.charts.data.datacache.DataCacheException; 0 lload_1 [timeTo] 1 lstore 4 [from] 3 new com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction$1 [102] 6 dup 7 aload_0 [this] 8 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction$1(com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction) [103] 11 astore 6 [loadingProgressListener] 13 new com.dukascopy.charts.data.datacache.customperiod.tick.FirstTickLiveFeedListener [104] 16 dup 17 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.FirstTickLiveFeedListener() [105] 20 astore 7 [firstTickLoadingProgressListener] 22 aload_3 [period] 23 lload_1 [timeTo] 24 invokestatic com.dukascopy.charts.data.datacache.DataCacheUtils.getNextCandleStartFast(com.dukascopy.api.Period, long) : long [40] 27 lconst_1 28 lsub 29 lstore 8 [to] 31 aload_0 [this] 32 lload 4 [from] 34 lload 8 [to] 36 aload 7 [firstTickLoadingProgressListener] 38 aload 6 [loadingProgressListener] 40 invokespecial com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.createLoadDataAction(long, long, com.dukascopy.charts.data.datacache.LiveFeedListener, com.dukascopy.charts.data.datacache.ILoadingProgressListener) : com.dukascopy.charts.data.datacache.LoadDataAction [106] 43 astore 10 [action] 45 aload 10 [action] 47 invokevirtual com.dukascopy.charts.data.datacache.LoadDataAction.run() : void [107] 50 aload 7 [firstTickLoadingProgressListener] 52 invokevirtual com.dukascopy.charts.data.datacache.customperiod.tick.FirstTickLiveFeedLi
|