View | Details | Raw Unified | Return to bug 47921
Collapse All | Expand All

(-)src/core/org/apache/jmeter/control/GenericController.java (+13 lines)
Lines 333-338 Link Here
333
         */
333
         */
334
        iterationListeners.addFirst(lis);
334
        iterationListeners.addFirst(lis);
335
    }
335
    }
336
    
337
    /**
338
     * Remove listener
339
     */
340
    public void removeIterationListener(LoopIterationListener iterationListener) {
341
        for (Iterator iterator = iterationListeners.iterator(); iterator.hasNext();) {
342
            LoopIterationListener listener = (LoopIterationListener) iterator.next();
343
            if(listener == iterationListener)
344
            {
345
                iterator.remove();
346
            }
347
        }
348
    }
336
349
337
    protected void fireIterEvents() {
350
    protected void fireIterEvents() {
338
        if (isFirst()) {
351
        if (isFirst()) {
(-)src/core/org/apache/jmeter/control/Controller.java (+6 lines)
Lines 56-59 Link Here
56
     * Called to initialize a controller at the beginning of a test iteration.
56
     * Called to initialize a controller at the beginning of a test iteration.
57
     */
57
     */
58
    public void initialize();
58
    public void initialize();
59
60
    /**
61
     * Unregister IterationListener
62
     * @param iterationListener {@link LoopIterationListener}
63
     */
64
    public void removeIterationListener(LoopIterationListener iterationListener);
59
}
65
}
(-)src/core/org/apache/jmeter/threads/AbstractThreadGroup.java (+5 lines)
Lines 111-116 Link Here
111
    public void addIterationListener(LoopIterationListener lis) {
111
    public void addIterationListener(LoopIterationListener lis) {
112
        getSamplerController().addIterationListener(lis);
112
        getSamplerController().addIterationListener(lis);
113
    }
113
    }
114
    
115
    /** {@inheritDoc} */
116
    public void removeIterationListener(LoopIterationListener iterationListener) {
117
        getSamplerController().removeIterationListener(iterationListener);
118
    }
114
119
115
    /** {@inheritDoc} */
120
    /** {@inheritDoc} */
116
    public void initialize() {
121
    public void initialize() {
(-)src/core/org/apache/jmeter/threads/JMeterThread.java (-2 / +7 lines)
Lines 123-128 Link Here
123
123
124
    private volatile Sampler currentSampler;
124
    private volatile Sampler currentSampler;
125
125
126
    private LoopIterationListener iterationListener;
127
128
126
    public JMeterThread(HashTree test, JMeterThreadMonitor monitor, ListenerNotifier note) {
129
    public JMeterThread(HashTree test, JMeterThreadMonitor monitor, ListenerNotifier note) {
127
        this.monitor = monitor;
130
        this.monitor = monitor;
128
        threadVars = new JMeterVariables();
131
        threadVars = new JMeterVariables();
Lines 496-502 Link Here
496
            threadContext.setSamplingStarted(true);
499
            threadContext.setSamplingStarted(true);
497
        }
500
        }
498
        controller.initialize();
501
        controller.initialize();
499
        controller.addIterationListener(new IterationListener());
502
        this.iterationListener = new IterationListener();
503
        controller.addIterationListener(iterationListener);
500
        if (!startEarlier) {
504
        if (!startEarlier) {
501
            threadContext.setSamplingStarted(true);
505
            threadContext.setSamplingStarted(true);
502
        }
506
        }
Lines 523-528 Link Here
523
        if (gp != null){// check there is a GUI
527
        if (gp != null){// check there is a GUI
524
            gp.getMainFrame().updateCounts();
528
            gp.getMainFrame().updateCounts();
525
        }
529
        }
530
        controller.removeIterationListener(iterationListener);
526
    }
531
    }
527
532
528
    private static class ThreadListenerTraverser implements HashTreeTraverser {
533
    private static class ThreadListenerTraverser implements HashTreeTraverser {
Lines 708-714 Link Here
708
        }
713
        }
709
    }
714
    }
710
715
711
    private void notifyTestListeners() {
716
    void notifyTestListeners() {
712
        threadVars.incIteration();
717
        threadVars.incIteration();
713
        Iterator<TestListener> iter = testListeners.iterator();
718
        Iterator<TestListener> iter = testListeners.iterator();
714
        while (iter.hasNext()) {
719
        while (iter.hasNext()) {
(-)src/core/org/apache/jmeter/threads/JMeterContext.java (+1 lines)
Lines 65-70 Link Here
65
        samplingStarted = false;
65
        samplingStarted = false;
66
        threadNum = 0;
66
        threadNum = 0;
67
        readBuffer = null;
67
        readBuffer = null;
68
        thread = null;
68
    }
69
    }
69
70
70
    /**
71
    /**

Return to bug 47921