// $Header$
/*
 * Copyright 2000-2004 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 */

package org.apache.jmeter.threads;

import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.engine.StandardJMeterEngine;

/**
 * @version $Revision$
 */
public class JMeterContext {
	JMeterVariables variables;

	SampleResult previousResult;

	Sampler currentSampler;

	Sampler previousSampler;

	boolean samplingStarted;

	private StandardJMeterEngine engine;

	private JMeterThread thread;

	// NOTUSED private ThreadGroup threadGroup;
	private int threadNum;

	private byte[] readBuffer = null;

	JMeterContext() {
		variables = null;
		previousResult = null;
		currentSampler = null;
		samplingStarted = false;
	}

	public void clear() {
		variables = null;
		previousResult = null;
		currentSampler = null;
		previousSampler = null;
		samplingStarted = false;
		threadNum = 0;
		readBuffer = null;
	}

	public JMeterVariables getVariables() {
		return variables;
	}

	public byte[] getReadBuffer() {
		if (readBuffer == null) {
			readBuffer = new byte[8192];
		}
		return readBuffer;
	}

	public void setVariables(JMeterVariables vars) {
		this.variables = vars;
	}

	public SampleResult getPreviousResult() {
		return previousResult;
	}

	public void setPreviousResult(SampleResult result) {
		this.previousResult = result;
	}

	public Sampler getCurrentSampler() {
		return currentSampler;
	}

	public void setCurrentSampler(Sampler sampler) {
		setPreviousSampler(currentSampler);
		this.currentSampler = sampler;
	}

	/**
	 * Returns the previousSampler.
	 * 
	 * @return Sampler
	 */
	public Sampler getPreviousSampler() {
		return previousSampler;
	}

	/**
	 * Sets the previousSampler.
	 * 
	 * @param previousSampler
	 *            the previousSampler to set
	 */
	public void setPreviousSampler(Sampler previousSampler) {
		this.previousSampler = previousSampler;
	}

	/**
	 * Returns the threadNum.
	 * 
	 * @return int
	 */
	public int getThreadNum() {
		return threadNum;
	}

	/**
	 * Sets the threadNum.
	 * 
	 * @param threadNum
	 *            the threadNum to set
	 */
	public void setThreadNum(int threadNum) {
		this.threadNum = threadNum;
	}

	public JMeterThread getThread() {
		return this.thread;
	}

	public void setThread(JMeterThread thread) {
		this.thread = thread;
	}

	public StandardJMeterEngine getEngine() {
		return engine;
	}

	public void setEngine(StandardJMeterEngine engine) {
		this.engine = engine;
	}

	public boolean isSamplingStarted() {
		return samplingStarted;
	}

	public void setSamplingStarted(boolean b) {
		samplingStarted = b;
	}
}

@@ -1,16 +1,4 @@
-// $Header$%0A
 /*%0A 
@@ -18,16 +18,21 @@
 000-2004
+,2006
  The Apa
@@ -814,27 +814,34 @@
 %0A * 
-@version $Revision$
+Holds context for a thread
 %0A */
@@ -1085,19 +1085,8 @@
 ;%0A%0A%09
-// NOTUSED 
 priv
@@ -1115,16 +1115,21 @@
 Group;%0A%09
+%0A    
 private 
@@ -2875,32 +2875,215 @@
 d = thread;%0A%09%7D%0A%0A
+    public ThreadGroup getThreadGroup() %7B%0A        return this.threadGroup;%0A    %7D%0A%0A    public void setThreadGroup(ThreadGroup threadgrp) %7B%0A        this.threadGroup = threadgrp;%0A    %7D%0A%0A
 %09public Standard

Save ThreadGroup in the context