Author: sebb Date: Fri Aug 14 22:37:19 2009 New Revision: 804399 URL: http://svn.apache.org/viewvc?rev=804399&view=rev Log: Make ThreadLocal variables type-safe
Modified: jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/ResponseAssertion.java jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/XMLAssertion.java jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java jakarta/jmeter/trunk/src/components/org/apache/jmeter/modifiers/CounterConfig.java jakarta/jmeter/trunk/src/core/org/apache/jmeter/functions/Function.java jakarta/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContextService.java jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/JsseSSLManager.java jakarta/jmeter/trunk/src/functions/org/apache/jmeter/functions/FileWrapper.java jakarta/jmeter/trunk/src/functions/org/apache/jmeter/functions/IterationCounter.java jakarta/jmeter/trunk/src/functions/org/apache/jmeter/functions/XPathWrapper.java jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/CacheManager.java jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java jakarta/jmeter/trunk/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPSampler.java Modified: jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/ResponseAssertion.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/ResponseAssertion.java?rev=804399&r1=804398&r2=804399&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/ResponseAssertion.java (original) +++ jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/ResponseAssertion.java Fri Aug 14 22:37:19 2009 @@ -97,13 +97,13 @@ = JMeterUtils.getPropDefault("assertion.equals_diff_delta_end", "]]]"); public ResponseAssertion() { - setProperty(new CollectionProperty(TEST_STRINGS, new ArrayList())); + setProperty(new CollectionProperty(TEST_STRINGS, new ArrayList<String>())); } @Override public void clear() { super.clear(); - setProperty(new CollectionProperty(TEST_STRINGS, new ArrayList())); + setProperty(new CollectionProperty(TEST_STRINGS, new ArrayList<String>())); } private void setTestField(String testField) { Modified: jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/XMLAssertion.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/XMLAssertion.java?rev=804399&r1=804398&r2=804399&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/XMLAssertion.java (original) +++ jakarta/jmeter/trunk/src/components/org/apache/jmeter/assertions/XMLAssertion.java Fri Aug 14 22:37:19 2009 @@ -39,9 +39,9 @@ private static final char NEW_LINE = '\n'; // $NON-NLS-1$ // one builder for all requests in a thread - private static final ThreadLocal myBuilder = new ThreadLocal() { + private static final ThreadLocal<SAXBuilder> myBuilder = new ThreadLocal<SAXBuilder>() { @Override - protected Object initialValue() { + protected SAXBuilder initialValue() { return new SAXBuilder(); } }; @@ -64,7 +64,7 @@ // the result data String resultData = new String(getResultBody(responseData)); // TODO - charset? - SAXBuilder builder = (SAXBuilder) myBuilder.get(); + SAXBuilder builder = myBuilder.get(); try { builder.build(new StringReader(resultData)); Modified: jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java?rev=804399&r1=804398&r2=804399&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java (original) +++ jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java Fri Aug 14 22:37:19 2009 @@ -55,12 +55,12 @@ // Used for per-thread/user numbers // Cannot be static, as random numbers are not to be shared between instances - private transient ThreadLocal perThreadRandom = initThreadLocal(); + private transient ThreadLocal<Random> perThreadRandom = initThreadLocal(); - private ThreadLocal initThreadLocal() { - return new ThreadLocal() { + private ThreadLocal<Random> initThreadLocal() { + return new ThreadLocal<Random>() { @Override - protected Object initialValue() { + protected Random initialValue() { init(); return new Random(getRandomSeedAsLong()); }}; @@ -100,7 +100,7 @@ public void iterationStart(LoopIterationEvent iterEvent) { Random randGen=null; if (getPerThread()){ - randGen = (Random) perThreadRandom.get(); + randGen = perThreadRandom.get(); } else { synchronized(this){ if (globalRandom == null){ Modified: jakarta/jmeter/trunk/src/components/org/apache/jmeter/modifiers/CounterConfig.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/modifiers/CounterConfig.java?rev=804399&r1=804398&r2=804399&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/components/org/apache/jmeter/modifiers/CounterConfig.java (original) +++ jakarta/jmeter/trunk/src/components/org/apache/jmeter/modifiers/CounterConfig.java Fri Aug 14 22:37:19 2009 @@ -54,12 +54,12 @@ private long globalCounter = Long.MIN_VALUE; // Used for per-thread/user numbers - private transient ThreadLocal perTheadNumber; + private transient ThreadLocal<Long> perTheadNumber; private void init() { - perTheadNumber = new ThreadLocal() { + perTheadNumber = new ThreadLocal<Long>() { @Override - protected synchronized Object initialValue() { + protected Long initialValue() { return new Long(getStart()); } }; @@ -89,7 +89,7 @@ variables.put(getVarName(), formatNumber(globalCounter)); globalCounter += increment; } else { - long current = ((Long) perTheadNumber.get()).longValue(); + long current = perTheadNumber.get().longValue(); variables.put(getVarName(), formatNumber(current)); current += increment; if (current > end) { Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/functions/Function.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/functions/Function.java?rev=804399&r1=804398&r2=804399&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/core/org/apache/jmeter/functions/Function.java (original) +++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/functions/Function.java Fri Aug 14 22:37:19 2009 @@ -65,5 +65,5 @@ * least return a List containing the correct number of blank strings, one * for each argument. */ - public List getArgumentDesc(); + public List<String> getArgumentDesc(); } Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContextService.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContextService.java?rev=804399&r1=804398&r2=804399&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContextService.java (original) +++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContextService.java Fri Aug 14 22:37:19 2009 @@ -25,9 +25,9 @@ * Keeps track of active and total thread counts. */ public final class JMeterContextService { - private static final ThreadLocal threadContext = new ThreadLocal() { + private static final ThreadLocal<JMeterContext> threadContext = new ThreadLocal<JMeterContext>() { @Override - public Object initialValue() { + public JMeterContext initialValue() { return new JMeterContext(); } }; @@ -53,7 +53,7 @@ * @return the current thread Context */ public static JMeterContext getContext() { - return (JMeterContext) threadContext.get(); + return threadContext.get(); } /** Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java?rev=804399&r1=804398&r2=804399&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java (original) +++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/JMeterUtils.java Fri Aug 14 22:37:19 2009 @@ -76,7 +76,7 @@ private static volatile Properties appProperties; - private static final Vector localeChangeListeners = new Vector(); + private static final Vector<LocaleChangeListener> localeChangeListeners = new Vector<LocaleChangeListener>(); private static volatile Locale locale; @@ -93,9 +93,9 @@ private static volatile boolean ignoreResorces = false; // Special flag for use in debugging resources - private static final ThreadLocal localMatcher = new ThreadLocal() { + private static final ThreadLocal<Perl5Matcher> localMatcher = new ThreadLocal<Perl5Matcher>() { @Override - protected Object initialValue() { + protected Perl5Matcher initialValue() { return new Perl5Matcher(); } }; @@ -107,7 +107,7 @@ * Gets Perl5Matcher for this thread. */ public static Perl5Matcher getMatcher() { - return (Perl5Matcher) localMatcher.get(); + return localMatcher.get(); } /** @@ -570,8 +570,8 @@ // TODO - does not appear to be called directly public static Vector getControllers(Properties properties) { String name = "controller."; // $NON-NLS-1$ - Vector v = new Vector(); - Enumeration names = properties.keys(); + Vector<Object> v = new Vector<Object>(); + Enumeration<?> names = properties.keys(); while (names.hasMoreElements()) { String prop = (String) names.nextElement(); if (prop.startsWith(name)) { @@ -816,9 +816,9 @@ } try { - Class c = Class.forName(impls); + Class<?> c = Class.forName(impls); try { - Class o = Class.forName(className); + Class<?> o = Class.forName(className); Object res = o.newInstance(); if (c.isInstance(res)) { return res; @@ -851,7 +851,7 @@ public static Vector instantiate(Vector v, String className) { Vector i = new Vector(); try { - Class c = Class.forName(className); + Class<?> c = Class.forName(className); Enumeration elements = v.elements(); while (elements.hasMoreElements()) { String name = (String) elements.nextElement(); Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/JsseSSLManager.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/JsseSSLManager.java?rev=804399&r1=804398&r2=804399&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/JsseSSLManager.java (original) +++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/util/JsseSSLManager.java Fri Aug 14 22:37:19 2009 @@ -89,7 +89,7 @@ private Provider pro = null; private SSLContext defaultContext; // If we are using a single session - private ThreadLocal threadlocal; // Otherwise + private ThreadLocal<SSLContext> threadlocal; // Otherwise /** * Create the SSLContext, and wrap all the X509KeyManagers with @@ -109,7 +109,7 @@ log.debug("Creating shared context"); this.defaultContext = createContext(); } else { - this.threadlocal = new ThreadLocal(); + this.threadlocal = new ThreadLocal<SSLContext>(); } /* @@ -190,7 +190,7 @@ return this.defaultContext; } - SSLContext sslContext = (SSLContext) this.threadlocal.get(); + SSLContext sslContext = this.threadlocal.get(); if (sslContext == null) { if (log.isDebugEnabled()){ log.debug("Creating threadLocal SSL context for: "+Thread.currentThread().getName()); Modified: jakarta/jmeter/trunk/src/functions/org/apache/jmeter/functions/FileWrapper.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/functions/org/apache/jmeter/functions/FileWrapper.java?rev=804399&r1=804398&r2=804399&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/functions/org/apache/jmeter/functions/FileWrapper.java (original) +++ jakarta/jmeter/trunk/src/functions/org/apache/jmeter/functions/FileWrapper.java Fri Aug 14 22:37:19 2009 @@ -52,7 +52,8 @@ * - maps file names to containers * - ensures only one container per file across all threads */ - private static final Map fileContainers = new HashMap(); + private static final Map<String, FileRowColContainer> fileContainers = + new HashMap<String, FileRowColContainer>(); /* * Only needed locally @@ -64,10 +65,11 @@ } /* The cache of file packs - used to improve thread access */ - private static final ThreadLocal filePacks = new ThreadLocal() { + private static final ThreadLocal<Map<String, FileWrapper>> filePacks = + new ThreadLocal<Map<String, FileWrapper>>() { @Override - protected Object initialValue() { - return new HashMap(); + protected Map<String, FileWrapper> initialValue() { + return new HashMap<String, FileWrapper>(); } }; @@ -93,7 +95,7 @@ log.error("Alias cannot be empty"); return; } - Map m = (Map) filePacks.get(); + Map<String, FileWrapper> m = filePacks.get(); if (m.get(alias) == null) { FileRowColContainer frcc; try { @@ -110,7 +112,7 @@ private static FileRowColContainer getFile(String file, String alias) throws FileNotFoundException, IOException { FileRowColContainer frcc; - if ((frcc = (FileRowColContainer) fileContainers.get(alias)) == null) { + if ((frcc = fileContainers.get(alias)) == null) { frcc = new FileRowColContainer(file); fileContainers.put(alias, frcc); log.info("Saved " + file + " as " + alias + " delimiter=<" + frcc.getDelimiter() + ">"); @@ -128,8 +130,8 @@ */ public static void endRow(String file) { file = checkDefault(file); - Map my = (Map) filePacks.get(); - FileWrapper fw = (FileWrapper) (my).get(file); + Map<String, FileWrapper> my = filePacks.get(); + FileWrapper fw = my.get(file); if (fw == null) { log.warn("endRow(): no entry for " + file); } else { @@ -145,8 +147,8 @@ } public static String getColumn(String file, int col) { - Map my = (Map) filePacks.get(); - FileWrapper fw = (FileWrapper) (my).get(file); + Map<String, FileWrapper> my = filePacks.get(); + FileWrapper fw = my.get(file); if (fw == null) // First call { if (file.startsWith("*")) { //$NON-NLS-1$ @@ -155,7 +157,7 @@ file = checkDefault(file); log.info("Attaching " + file); open(file, file); - fw = (FileWrapper) my.get(file); + fw = my.get(file); } // TODO improve the error handling if (fw == null) { @@ -181,8 +183,8 @@ */ public static int getCurrentRow(String file) { - Map my = (Map) filePacks.get(); - FileWrapper fw = (FileWrapper) (my).get(file); + Map<String, FileWrapper> my = filePacks.get(); + FileWrapper fw = my.get(file); if (fw == null) // Not yet open { return -1; @@ -195,9 +197,9 @@ */ public static void clearAll() { log.debug("clearAll()"); - Map my = (Map) filePacks.get(); - for (Iterator i = my.entrySet().iterator(); i.hasNext();) { - Object fw = i.next(); + Map<String, FileWrapper> my = filePacks.get(); + for (Iterator<Map.Entry<String, FileWrapper>> i = my.entrySet().iterator(); i.hasNext();) { + Map.Entry<String, FileWrapper> fw = i.next(); log.info("Removing " + fw.toString()); i.remove(); } Modified: jakarta/jmeter/trunk/src/functions/org/apache/jmeter/functions/IterationCounter.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/functions/org/apache/jmeter/functions/IterationCounter.java?rev=804399&r1=804398&r2=804399&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/functions/org/apache/jmeter/functions/IterationCounter.java (original) +++ jakarta/jmeter/trunk/src/functions/org/apache/jmeter/functions/IterationCounter.java Fri Aug 14 22:37:19 2009 @@ -30,11 +30,11 @@ public class IterationCounter extends AbstractFunction { - private static final List desc = new LinkedList(); + private static final List<String> desc = new LinkedList<String>(); private static final String KEY = "__counter"; //$NON-NLS-1$ - private ThreadLocal perThreadInt; + private ThreadLocal<Integer> perThreadInt; private Object[] variables; @@ -44,9 +44,9 @@ synchronized(this){ globalCounter=0; } - perThreadInt = new ThreadLocal(){ + perThreadInt = new ThreadLocal<Integer>(){ @Override - protected synchronized Object initialValue() { + protected Integer initialValue() { return new Integer(0); } }; @@ -86,7 +86,7 @@ if (perThread) { int threadCounter; - threadCounter = ((Integer) perThreadInt.get()).intValue() + 1; + threadCounter = perThreadInt.get().intValue() + 1; perThreadInt.set(new Integer(threadCounter)); counterString = String.valueOf(threadCounter); } else { @@ -126,7 +126,7 @@ * * @see org.apache.jmeter.functions.Function#getArgumentDesc() */ - public List getArgumentDesc() { + public List<String> getArgumentDesc() { return desc; } } Modified: jakarta/jmeter/trunk/src/functions/org/apache/jmeter/functions/XPathWrapper.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/functions/org/apache/jmeter/functions/XPathWrapper.java?rev=804399&r1=804398&r2=804399&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/functions/org/apache/jmeter/functions/XPathWrapper.java (original) +++ jakarta/jmeter/trunk/src/functions/org/apache/jmeter/functions/XPathWrapper.java Fri Aug 14 22:37:19 2009 @@ -47,14 +47,15 @@ * The key is the concatenation of the file name and the XPath string */ //@GuardedBy("fileContainers") - private static final Map/*<String, XPathFileContainer>*/ fileContainers = - new HashMap/*<String, XPathFileContainer>*/(); + private static final Map<String, XPathFileContainer> fileContainers = + new HashMap<String, XPathFileContainer>(); /* The cache of file packs - for faster local access */ - private static final ThreadLocal filePacks = new ThreadLocal() { + private static final ThreadLocal<Map<String, XPathFileContainer>> filePacks = + new ThreadLocal<Map<String, XPathFileContainer>>() { @Override - protected Object initialValue() { - return new HashMap(); + protected Map<String, XPathFileContainer> initialValue() { + return new HashMap<String, XPathFileContainer>(); } }; @@ -90,13 +91,13 @@ * @return the next row from the file container */ public static String getXPathString(String file, String xpathString) { - Map my = (Map) filePacks.get(); + Map<String, XPathFileContainer> my = filePacks.get(); String key = file+xpathString; - XPathFileContainer xpfc = (XPathFileContainer) my.get(key); + XPathFileContainer xpfc = my.get(key); if (xpfc == null) // We don't have a local copy { synchronized(fileContainers){ - xpfc = (XPathFileContainer) fileContainers.get(key); + xpfc = fileContainers.get(key); if (xpfc == null) { // There's no global copy either xpfc=open(file, xpathString); } @@ -122,8 +123,7 @@ public static void clearAll() { log.debug("clearAll()"); - Map my = (Map) filePacks.get(); - my.clear(); + filePacks.get().clear(); String tname = Thread.currentThread().getName(); log.info(tname+": clearing container"); synchronized (fileContainers) { Modified: jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/CacheManager.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/CacheManager.java?rev=804399&r1=804398&r2=804399&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/CacheManager.java (original) +++ jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/CacheManager.java Fri Aug 14 22:37:19 2009 @@ -50,7 +50,7 @@ public static final String CLEAR = "clearEachIteration"; // $NON-NLS-1$ - private transient ThreadLocal threadCache; + private transient ThreadLocal<Map<String, CacheEntry>> threadCache; public CacheManager() { setProperty(new BooleanProperty(CLEAR, false)); @@ -142,7 +142,7 @@ * @param method where to set the headers */ public void setHeaders(URL url, HttpMethod method) { - CacheEntry entry = (CacheEntry) getCache().get(url.toString()); + CacheEntry entry = getCache().get(url.toString()); if (log.isDebugEnabled()){ log.debug(method.getName()+"(OAHC) "+url.toString()+" "+entry); } @@ -166,7 +166,7 @@ * @param conn where to set the headers */ public void setHeaders(HttpURLConnection conn, URL url) { - CacheEntry entry = (CacheEntry) getCache().get(url.toString()); + CacheEntry entry = getCache().get(url.toString()); if (log.isDebugEnabled()){ log.debug(conn.getRequestMethod()+"(Java) "+url.toString()+" "+entry); } @@ -182,8 +182,8 @@ } } - private Map getCache(){ - return (Map) threadCache.get(); + private Map<String, CacheEntry> getCache(){ + return threadCache.get(); } public boolean getClearEachIteration() { @@ -202,10 +202,10 @@ private void clearCache() { log.debug("Clear cache"); - threadCache = new ThreadLocal(){ + threadCache = new ThreadLocal<Map<String, CacheEntry>>(){ @Override - protected Object initialValue(){ - return new HashMap(); + protected Map<String, CacheEntry> initialValue(){ + return new HashMap<String, CacheEntry>(); } }; } Modified: jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java?rev=804399&r1=804398&r2=804399&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java (original) +++ jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java Fri Aug 14 22:37:19 2009 @@ -115,9 +115,10 @@ /** * Thread-local input: */ - private static final ThreadLocal localInput = new ThreadLocal() { + private static final ThreadLocal<PatternMatcherInput> localInput = + new ThreadLocal<PatternMatcherInput>() { @Override - protected Object initialValue() { + protected PatternMatcherInput initialValue() { return new PatternMatcherInput(new char[0]); } }; @@ -144,7 +145,7 @@ public Iterator getEmbeddedResourceURLs(byte[] html, URL baseUrl, URLCollection urls) { Perl5Matcher matcher = JMeterUtils.getMatcher(); - PatternMatcherInput input = (PatternMatcherInput) localInput.get(); + PatternMatcherInput input = localInput.get(); // TODO: find a way to avoid the cost of creating a String here -- // probably a new PatternMatcherInput working on a byte[] would do // better. Modified: jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java?rev=804399&r1=804398&r2=804399&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java (original) +++ jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java Fri Aug 14 22:37:19 2009 @@ -60,6 +60,7 @@ import org.apache.commons.httpclient.methods.multipart.FilePart; import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity; import org.apache.commons.httpclient.methods.multipart.Part; +import org.apache.commons.httpclient.methods.multipart.PartBase; import org.apache.commons.httpclient.methods.multipart.StringPart; import org.apache.commons.httpclient.params.DefaultHttpParams; import org.apache.commons.httpclient.params.HttpMethodParams; @@ -126,10 +127,11 @@ /* * Connection is re-used within the thread if possible */ - static final ThreadLocal httpClients = new ThreadLocal(); + static final ThreadLocal<Map<HostConfiguration, HttpClient>> httpClients = + new ThreadLocal<Map<HostConfiguration, HttpClient>>(); - private static final Set nonProxyHostFull = new HashSet();// www.apache.org - private static final List nonProxyHostSuffix = new ArrayList();// .apache.org + private static final Set<String> nonProxyHostFull = new HashSet<String>();// www.apache.org + private static final List<String> nonProxyHostSuffix = new ArrayList<String>();// .apache.org private static final int nonProxyHostSuffixSize; @@ -141,7 +143,7 @@ private static boolean isPartialMatch(String host) { for (int i=0;i<nonProxyHostSuffixSize;i++){ - if (host.endsWith((String)nonProxyHostSuffix.get(i))) { + if (host.endsWith(nonProxyHostSuffix.get(i))) { return true; } } @@ -271,7 +273,7 @@ } // We don't know how many entries will be skipped - ArrayList partlist = new ArrayList(); + ArrayList<PartBase> partlist = new ArrayList<PartBase>(); // Create the parts // Add any parameters PropertyIterator args = getArguments().iterator(); @@ -296,7 +298,7 @@ // Set the multipart for the post int partNo = partlist.size(); - Part[] parts = (Part[])partlist.toArray(new Part[partNo]); + Part[] parts = partlist.toArray(new Part[partNo]); MultipartRequestEntity multiPart = new MultipartRequestEntity(parts, post.getParams()); post.setRequestEntity(multiPart); @@ -544,8 +546,8 @@ hc.setProxy(PROXY_HOST, PROXY_PORT); } - Map map = (Map) httpClients.get(); - HttpClient httpClient = (HttpClient) map.get(hc); + Map<HostConfiguration, HttpClient> map = httpClients.get(); + HttpClient httpClient = map.get(hc); if ( httpClient == null ) { @@ -1088,7 +1090,7 @@ log.debug("Thread Started"); // Does not need to be synchronised, as all access is from same thread - httpClients.set ( new HashMap() ); + httpClients.set ( new HashMap<HostConfiguration, HttpClient>() ); } @Override @@ -1096,13 +1098,13 @@ log.debug("Thread Finished"); // Does not need to be synchronised, as all access is from same thread - Map map = (Map)httpClients.get(); + Map<HostConfiguration, HttpClient> map = httpClients.get(); if ( map != null ) { - for ( Iterator it = map.entrySet().iterator(); it.hasNext(); ) + for ( Iterator<Map.Entry<HostConfiguration, HttpClient> > it = map.entrySet().iterator(); it.hasNext(); ) { - Map.Entry entry = (Map.Entry) it.next(); - HttpClient cl = (HttpClient) entry.getValue(); + Map.Entry<HostConfiguration, HttpClient> entry = it.next(); + HttpClient cl = entry.getValue(); // Can cause NPE in HttpClient 3.1 //((SimpleHttpConnectionManager)cl.getHttpConnectionManager()).shutdown();// Closes the connection // Revert to original method: Modified: jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java?rev=804399&r1=804398&r2=804399&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java (original) +++ jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java Fri Aug 14 22:37:19 2009 @@ -62,7 +62,7 @@ private transient ResourceLimitingJdbcDataSource excaliburSource; // Keep a record of the pre-thread pools so that they can be disposed of at the end of a test - private transient Set perThreadPoolSet; + private transient Set<ResourceLimitingJdbcDataSource> perThreadPoolSet; public DataSourceElement() { } @@ -75,9 +75,9 @@ excaliburSource = null; } if (perThreadPoolSet != null) {// in case - Iterator it = perThreadPoolSet.iterator(); + Iterator<ResourceLimitingJdbcDataSource> it = perThreadPoolSet.iterator(); while(it.hasNext()){ - ResourceLimitingJdbcDataSource dsc = (ResourceLimitingJdbcDataSource)it.next(); + ResourceLimitingJdbcDataSource dsc = it.next(); log.debug("Disposing pool: "+dsc.getInstrumentableName()+" @"+System.identityHashCode(dsc)); dsc.dispose(); } @@ -101,7 +101,7 @@ log.error("JDBC data source already defined for: "+poolName); } else { String maxPool = getPoolMax(); - perThreadPoolSet = Collections.synchronizedSet(new HashSet()); + perThreadPoolSet = Collections.synchronizedSet(new HashSet<ResourceLimitingJdbcDataSource>()); if (maxPool.equals("0")){ // i.e. if we want per thread pooling variables.putObject(poolName, new DataSourceComponentImpl()); // pool will be created later } else { @@ -229,10 +229,11 @@ } // used to hold per-thread singleton connection pools - private static final ThreadLocal perThreadPoolMap = new ThreadLocal(){ + private static final ThreadLocal<Map<String, ResourceLimitingJdbcDataSource>> perThreadPoolMap = + new ThreadLocal<Map<String, ResourceLimitingJdbcDataSource>>(){ @Override - protected synchronized Object initialValue() { - return new HashMap(); + protected Map<String, ResourceLimitingJdbcDataSource> initialValue() { + return new HashMap<String, ResourceLimitingJdbcDataSource>(); } }; @@ -259,8 +260,8 @@ if (sharedDSC != null){ // i.e. shared pool dsc = sharedDSC; } else { - Map poolMap = (Map) perThreadPoolMap.get(); - dsc = (ResourceLimitingJdbcDataSource) poolMap.get(getDataSource()); + Map<String, ResourceLimitingJdbcDataSource> poolMap = (Map) perThreadPoolMap.get(); + dsc = poolMap.get(getDataSource()); if (dsc == null){ dsc = initPool("1"); poolMap.put(getDataSource(),dsc); Modified: jakarta/jmeter/trunk/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPSampler.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPSampler.java?rev=804399&r1=804398&r2=804399&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPSampler.java (original) +++ jakarta/jmeter/trunk/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPSampler.java Fri Aug 14 22:37:19 2009 @@ -112,10 +112,12 @@ } /** the cache of TCP Connections */ - private static final ThreadLocal tp = new ThreadLocal() { + // KEY = TCPKEY or ERRKEY, Entry= Socket or String + private static final ThreadLocal<Map<String, Object>> tp = + new ThreadLocal<Map<String, Object>>() { @Override - protected Object initialValue() { - return new HashMap(); + protected Map<String, Object> initialValue() { + return new HashMap<String, Object>(); } }; @@ -126,12 +128,12 @@ } private String getError() { - Map cp = (Map) tp.get(); + Map<String, Object> cp = tp.get(); return (String) cp.get(ERRKEY); } private Socket getSocket() { - Map cp = (Map) tp.get(); + Map<String, Object> cp = tp.get(); Socket con = null; if (isReUseConnection()) { con = (Socket) cp.get(TCPKEY); @@ -250,7 +252,7 @@ private static final String protoPrefix = "org.apache.jmeter.protocol.tcp.sampler."; //$NON-NLS-1$ private Class getClass(String className) { - Class c = null; + Class<?> c = null; try { c = Class.forName(className, false, Thread.currentThread().getContextClassLoader()); } catch (ClassNotFoundException e) { @@ -266,7 +268,7 @@ private TCPClient getProtocol() { TCPClient TCPClient = null; - Class javaClass = getClass(getClassname()); + Class<?> javaClass = getClass(getClassname()); if (javaClass == null){ return null; } @@ -375,7 +377,7 @@ } private void closeSocket() { - Map cp = (Map) tp.get(); + Map<String, Object> cp = tp.get(); Socket con = (Socket) cp.remove(TCPKEY); if (con != null) { log.debug(this + " Closing connection " + con); //$NON-NLS-1$ --------------------------------------------------------------------- To unsubscribe, e-mail: jmeter-dev-unsubscr...@jakarta.apache.org For additional commands, e-mail: jmeter-dev-h...@jakarta.apache.org