001    /*
002     * $Id: DefaultGroovyStaticMethods.java,v 1.3 2004/05/18 06:15:45 spullara Exp $
003     *
004     * Copyright 2003 (C) James Strachan and Bob Mcwhirter. All Rights Reserved.
005     *
006     * Redistribution and use of this software and associated documentation
007     * ("Software"), with or without modification, are permitted provided that the
008     * following conditions are met:
009     *  1. Redistributions of source code must retain copyright statements and
010     * notices. Redistributions must also contain a copy of this document.
011     *  2. Redistributions in binary form must reproduce the above copyright
012     * notice, this list of conditions and the following disclaimer in the
013     * documentation and/or other materials provided with the distribution.
014     *  3. The name "groovy" must not be used to endorse or promote products
015     * derived from this Software without prior written permission of The Codehaus.
016     * For written permission, please contact info@codehaus.org.
017     *  4. Products derived from this Software may not be called "groovy" nor may
018     * "groovy" appear in their names without prior written permission of The
019     * Codehaus. "groovy" is a registered trademark of The Codehaus.
020     *  5. Due credit should be given to The Codehaus - http://groovy.codehaus.org/
021     *
022     * THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS ``AS IS'' AND ANY
023     * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
024     * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
025     * DISCLAIMED. IN NO EVENT SHALL THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR
026     * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
027     * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
028     * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
029     * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
030     * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
031     * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
032     * DAMAGE.
033     *
034     */
035    package org.codehaus.groovy.runtime;
036    
037    import groovy.lang.Closure;
038    
039    import java.util.regex.Matcher;
040    
041    /**
042     * This class defines all the new static groovy methods which appear on normal JDK
043     * classes inside the Groovy environment. Static methods are used with the
044     * first parameter as the destination class.
045     *
046     * @author Guillaume Laforge
047     * @version $Revision: 1.3 $
048     */
049    public class DefaultGroovyStaticMethods {
050    
051        /**
052         * Start a Thread with the given closure as a Runnable instance.
053         *
054         * @param closure the Runnable closure
055         * @return the started thread
056         */
057        public static Thread start(Thread self, Closure closure) {
058            Thread thread = new Thread(closure);
059            thread.start();
060            return thread;
061        }
062    
063        /**
064         * Start a daemon Thread with the given closure as a Runnable instance.
065         *
066         * @param closure the Runnable closure
067         * @return the started thread
068         */
069        public static Thread startDaemon(Thread self, Closure closure) {
070            Thread thread = new Thread(closure);
071            thread.setDaemon(true);
072            thread.start();
073            return thread;
074        }
075    
076        /**
077         * Get the last hidden matcher that system used to do a match.
078         * 
079         * @param matcher
080         * @return
081         */
082        public static Matcher getLastMatcher(Matcher matcher) {
083            return RegexSupport.getLastMatcher();
084        }
085    }