// $Header$
/*
 * Copyright 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.examples.sampler;

import org.apache.jmeter.samplers.AbstractSampler;
import org.apache.jmeter.samplers.Entry;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;

/**
 * Example Sampler (non-Bean version)
 * 
 * JMeter creates an instance of a sampler class for every occurrence of the
 * element in every thread. [some additional copies may be created before the
 * test run starts]
 * 
 * Thus each sampler is guaranteed to be called by a single thread - there is no
 * need to synchronize access to instance variables.
 * 
 * However, access to class fields must be synchronized.
 * 
 * @version $Revision$ $Date$
 */
public class ExampleSampler extends AbstractSampler {

	protected static Logger log = LoggingManager.getLoggerForClass();

	// The name of the property used to hold our data
	public final static String DATA = "ExampleSampler.data"; //$NON-NLS-1$

	private transient static int classCount = 0; // keep track of classes
													// created

	// (for instructional purposes only!)

	public ExampleSampler() {
		classCount++;
		trace("ExampleSampler()");
	}

	/*
	 * (non-Javadoc) Performs the sample, and returns the result
	 * 
	 * @see org.apache.jmeter.samplers.Sampler#sample(org.apache.jmeter.samplers.Entry)
	 */
	public SampleResult sample(Entry e) {
		trace("sample()");
		SampleResult res = new SampleResult();
		boolean isOK = false; // Did sample succeed?
		String data = getData(); // Sampler data
		String response = null;

		res.setSampleLabel(getTitle());
		/*
		 * Perform the sampling
		 */
		res.sampleStart(); // Start timing
		try {

			// Do something here ...

			response = Thread.currentThread().getName();

			/*
			 * Set up the sample result details
			 */
			res.setSamplerData(data);
			res.setResponseData(response.getBytes());
			res.setDataType(SampleResult.TEXT);

			res.setResponseCodeOK();
			res.setResponseMessage("OK");
			isOK = true;
		} catch (Exception ex) {
			log.debug("", ex);
			res.setResponseCode("500");
			res.setResponseMessage(ex.toString());
		}
		res.sampleEnd(); // End timimg

		res.setSuccessful(isOK);

		return res;
	}

	/**
	 * @return a string for the sampleResult Title
	 */
	private String getTitle() {
		return this.getName();
	}

	/**
	 * @return the data for the sample
	 */
	public String getData() {
		return getPropertyAsString(DATA);
	}

	/*
	 * Helper method
	 */
	private void trace(String s) {
		String tl = getTitle();
		String tn = Thread.currentThread().getName();
		String th = this.toString();
		log.debug(tn + " (" + classCount + ") " + tl + " " + s + " " + th);
	}
}
@@ -1,16 +1,4 @@
-// $Header$%0A
 /*%0A 
@@ -1397,23 +1397,21 @@
 %0A%09pr
-otec
+iva
 te
-d
  static 
 Logg
@@ -1406,16 +1406,22 @@
  static 
+final 
 Logger l
@@ -1599,18 +1599,8 @@
 ate 
-transient 
 stat
@@ -1650,24 +1650,8 @@
 sses
-%0A%09%09%09%09%09%09%09%09%09%09%09%09%09//
  cre
@@ -2572,16 +2572,30 @@
 e(%22OK%22);
+// $NON-NLS-1$
 %0A%09%09%09isOK
@@ -2682,16 +2682,30 @@
 (%22500%22);
+// $NON-NLS-1$
 %0A%09%09%09res.

Tidy up; add NLS markers