Timeouts.java :  » IDE-Netbeans » jemmy » org » netbeans » jemmy » Java Open Source

Java Open Source » IDE Netbeans » jemmy 
jemmy » org » netbeans » jemmy » Timeouts.java
/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common
 * Development and Distribution License("CDDL") (collectively, the
 * "License"). You may not use this file except in compliance with the
 * License. You can obtain a copy of the License at
 * http://www.netbeans.org/cddl-gplv2.html
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
 * specific language governing permissions and limitations under the
 * License.  When distributing the software, include this License Header
 * Notice in each file and include the License file at
 * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Sun in the GPL Version 2 section of the License file that
 * accompanied this code. If applicable, add the following below the
 * License Header, with the fields enclosed by brackets [] replaced by
 * your own identifying information:
 * "Portions Copyrighted [year] [name of copyright owner]"
 *
 * Contributor(s): Alexandre Iline.
 *
 * The Original Software is the Jemmy library.
 * The Initial Developer of the Original Software is Alexandre Iline.
 * All Rights Reserved.
 *
 * If you wish your version of this file to be governed by only the CDDL
 * or only the GPL Version 2, indicate your decision by adding
 * "[Contributor] elects to include this software in this distribution
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
 * single choice of license, a recipient has the option to distribute
 * your version of this file under either the CDDL, the GPL Version 2 or
 * to extend the choice of license to its licensees as provided above.
 * However, if you add GPL Version 2 code and therefore, elected the GPL
 * Version 2 license, then the option applies only if the new code is
 * made subject to such option by the copyright holder.
 *
 *
 *
 * $Id$ $Revision$ $Date$
 *
 */

package org.netbeans.jemmy;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;

import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Properties;

/**
 *
 * Class to store and process a set of timeout values.
 *
 * @see #setDefault(String, long)
 * @see #getDefault(String)
 * @see #setTimeout(String, long)
 * @see #getTimeout(String)
 *  
 * @author Alexandre Iline (alexandre.iline@sun.com)
 */

public class Timeouts extends Object{

    private static final long DELTA_TIME = 100;

    private static Timeouts defaults;

    private Hashtable timeouts;

    /**
     * Creates empty Timeouts object.
     */
    public Timeouts() {
  super();
  timeouts = new Hashtable();
  setTimeout("Timeouts.DeltaTimeout", DELTA_TIME);
  try {
      load();
  } catch(IOException e) {
  }
    }

    /**
     * Stores default timeout value.
     * @param name Timeout name.
     * @param newValue Timeout value.
     * @see #getDefault(String)
     * @see #initDefault(String, long)
     * @see #containsDefault(String)
     */
    public static void setDefault(String name, long newValue) {
  defaults.setTimeout(name, newValue);
    }

    /**
     * Sets default timeout value if it was not set before.
     * @param name Timeout name.
     * @param newValue Timeout value.
     * @see #setDefault(String, long)
     * @see #getDefault(String)
     * @see #containsDefault(String)
     */
    public static void initDefault(String name, long newValue) {
  defaults.initTimeout(name, newValue);
    }

    /**
     * Gets default timeout value.
     * @param name Timeout name.
     * @return Timeout value or -1 if timeout is not defined.
     * @see #setDefault(String, long)
     * @see #initDefault(String, long)
     * @see #containsDefault(String)
     */
    public static long getDefault(String name) {
  return(defaults.getTimeout(name));
    }

    /**
     * Check that default timeout value was defined.
     * @param name Timeout name.
     * @return True if timeout has been defined, false otherwise.
     * @see #setDefault(String, long)
     * @see #getDefault(String)
     * @see #initDefault(String, long)
     */
    public static boolean containsDefault(String name) {
  return(defaults.contains(name));
    }

    static {
  defaults = new Timeouts();
    }

    /**
     * Loads default timeouts values.
     * 
     * @param  stream Stream to load timeouts from.
     * @see  org.netbeans.jemmy.Timeouts#loadDefaults(String)
     * @see  org.netbeans.jemmy.Timeouts#loadDefaults()
     * @exception  IOException
     */
    public void loadDefaults(InputStream stream) 
  throws IOException{
  defaults.load(stream);
    }

    /**
     * Loads default timeouts values from file.
     * 
     * @param  fileName File to load timeouts from.
     * @see  org.netbeans.jemmy.Timeouts#loadDefaults(InputStream)
     * @see  org.netbeans.jemmy.Timeouts#loadDefaults(String)
     * @exception  IOException
     * @exception  FileNotFoundException
     */
    public void loadDefaults(String fileName) 
  throws FileNotFoundException, IOException {
  defaults.load(fileName);
    }

    /**
     * Loads default timeouts values.
     * Uses jemmy.timeouts system property to get timeouts file.
     * 
     * @see  org.netbeans.jemmy.Timeouts#loadDefaults(InputStream)
     * @see  org.netbeans.jemmy.Timeouts#loadDefaults(String)
     * @exception  IOException
     * @exception  FileNotFoundException
     */
    public void loadDefaults() 
  throws FileNotFoundException, IOException {
  defaults.load();
    }

    /**
     * Creates Timeout new object by name and getTimeout(name) value.
     * @param  name Timeout name.
     * @return a Timeout instance.
     */
    public Timeout create(String name) {
  return(new Timeout(name, getTimeout(name)));
    }

    /**
     * Create timeout for "Timeouts.DeltaTimeout" name.
     * @return a Timeout instance.
     */
    public Timeout createDelta() {
  return(create("Timeouts.DeltaTimeout"));
    }

    /**
     * Checks if timeout has already been defined in this timeout instance.
     * @param name Timeout name.
     * @return True if timeout has been defined, false otherwise.
     * @see #containsDefault(String)
     */
    public boolean contains(String name) {
  return(timeouts.containsKey(name));
    }

    /**
     * Sets new timeout value.
     * @param name Timeout name.
     * @param newValue Timeout value.
     * @return old timeout value
     * @see #getTimeout
     */
    public long setTimeout(String name, long newValue) {
  long oldValue = -1;
  if(contains(name)) {
      oldValue = getTimeout(name);
      timeouts.remove(name);
  }
  timeouts.put(name, new Long(newValue));
  return(oldValue);
    }

    /**
     * Gets timeout value.
     * It timeout was not defined in this instance,
     * returns default timeout value.
     * @param name Timeout name.
     * @return Timeout value.
     * @see #getDefault(String)
     * @see #setTimeout
     */
    public long getTimeout(String name) {
  if(contains(name)) {
            Long value = (Long)timeouts.get(name);
            if(value != null) {
                return(value.longValue());
            }
        }
        if(this != defaults) {
            return(getDefault(name));
        } else {
            return(-1);
        }
    }

    /**
     * Gets "Timeouts.DeltaTimeout" timeout value.
     * @return Timeout value.
     * @see #getDefault(String)
     */
    public long getDeltaTimeout() {
  return(getTimeout("Timeouts.DeltaTimeout"));
    }

    /**
     * Sets timeout value if it was not set before.
     * @param name Timeout name.
     * @param newValue Timeout value.
     * @return old timeout value
     */
    public long initTimeout(String name, long newValue) {
  long result = getTimeout(name);
  if(!contains(name)) {
      setTimeout(name, newValue);
  }
  return(result);
    }

    /**
     * Creates a copy of the current timeouts set.
     * @return A copy.
     */
    public Timeouts cloneThis() {
  Timeouts t = new Timeouts();
  Enumeration e = timeouts.keys();
  String name = "";
  while(e.hasMoreElements()) {
      name = (String)e.nextElement();
      t.setTimeout(name,
       getTimeout(name));
  }
  return(t);
    }

    /**
     * Sleeps for the "name" timeout value.
     * Can throw InterruptedException if current thread was interrupted.
     * 
     * @param  name Timeout name.
     * @exception  InterruptedException
     */
    public void eSleep(String name) throws InterruptedException{
  if(contains(name) ||
     defaults.contains(name)) {
      Thread.currentThread().sleep(getTimeout(name));
  }
    }

    /**
     * Sleeps for the "name" timeout value.
     * Does not throw InterruptedException anyway.
     * @param name Timeout name.
     */
    public void sleep(String name) {
  create(name).sleep();
    }

    /**
     * Prins all defined timeouts.
     * @param pw PrintWriter to print into.
     */
    public void print(PrintWriter pw) {
  Enumeration e = timeouts.keys();
  String name = "";
  while(e.hasMoreElements()) {
      name = (String)e.nextElement();
      pw.println(name + " = " + Long.toString(getTimeout(name)));
  }
  pw.println("Default values:");
  e = defaults.timeouts.keys();
  name = "";
  while(e.hasMoreElements()) {
      name = (String)e.nextElement();
      if(!contains(name)) {
    pw.println(name + " = " + Long.toString(getDefault(name)));
      }
  }
    }

    /**
     * Prins all defined timeouts.
     * @param ps PrintStream to print into.
     */
    public void print(PrintStream ps) {
  print(new PrintWriter(ps));
  Timeouts t = new Timeouts();
    }

    /**
     * Loads timeouts values.
     * 
     * @param  stream Stream to load timeouts from.
     * @see  org.netbeans.jemmy.Timeouts#load(String)
     * @see  org.netbeans.jemmy.Timeouts#load()
     * @exception  IOException
     */
    public void load(InputStream stream) 
  throws IOException{
  Properties props = new Properties();
  props.load(stream);
  Enumeration propNames = props.propertyNames();
  long propValue = -1;
  String propName = null;
  while(propNames.hasMoreElements()) {
      propName = (String)propNames.nextElement();
      propValue = -1;
      propValue = (new Long(props.getProperty(propName))).longValue();
      setTimeout(propName, propValue);
  }
    }

    /**
     * Loads timeouts values from file.
     * 
     * @param  fileName File to load timeouts from.
     * @see  org.netbeans.jemmy.Timeouts#load(InputStream)
     * @see  org.netbeans.jemmy.Timeouts#load(String)
     * @exception  IOException
     * @exception  FileNotFoundException
     */
    public void load(String fileName) 
  throws FileNotFoundException, IOException {
  load(new FileInputStream(fileName));
    }

    /**
     * Loads timeouts values.
     * Uses jemmy.timeouts system property to get timeouts file.
     * 
     * @see  org.netbeans.jemmy.Timeouts#load(InputStream)
     * @see  org.netbeans.jemmy.Timeouts#load(String)
     * @exception  IOException
     * @exception  FileNotFoundException
     */
    public void load() 
  throws FileNotFoundException, IOException {
  if(System.getProperty("jemmy.timeouts") != null &&
     !System.getProperty("jemmy.timeouts").equals("")) {
      load(System.getProperty("jemmy.timeouts"));
  }
    }

    /**
     * Loads debug timeouts values.
     * 
     * @exception  IOException
     */
    public void loadDebugTimeouts() throws IOException {
        load(getClass().getClassLoader().getResourceAsStream("org/netbeans/jemmy/debug.timeouts"));
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.