001    /*
002    This project provide access to non public fields
003    and methods as help for writing tests.
004    Copyright (C) 2007  Christof Lehmann
005    
006    This program is free software; you can redistribute it and/or
007    modify it under the terms of the GNU General Public License
008    as published by the Free Software Foundation; either version 2
009    of the License, or (at your option) any later version.
010    
011    This program is distributed in the hope that it will be useful,
012    but WITHOUT ANY WARRANTY; without even the implied warranty of
013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
014    GNU General Public License for more details.
015    
016    You should have received a copy of the GNU General Public License
017    along with this program; if not, write to the Free Software
018    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
019     */
020    package net.sf.testextensions;
021    
022    /**
023     * The class <code>AccessFactory</code> generates
024     * AccessObjects from several start points.
025     * @author forge-cl
026     */
027    
028    public final class AccessFactory {
029            /**
030             * This constructor prevents intiatiations of this class.
031             *
032             */
033            private AccessFactory() {
034            }
035    
036            /**
037             * The method <code>newInstance</code> create a new instance of a class,
038             * using a constructor without arguments.
039             *
040             * @param aClassName
041             *            the name of the class, which should be instantiated
042             * @return a instance of AccessObject for future access.
043             * @throws TestExtensionException
044             *             when errors occures during intantiation
045             */
046            public static AccessObject newInstance(final String aClassName)
047                            throws TestExtensionException {
048                    return newInstance(aClassName, new Class[] {});
049            }
050    
051            /**
052             * The method <code>newInstance</code> create a new instance of a class,
053             * using a constructor which suites to the arguments.
054             * @param aClassName the name of the class, which should be instantiated
055             * @param aParameters the parameter for the constructor
056             * @return a instance of AccessObject for future access
057             * @throws TestExtensionException when errors occures during instantiation
058             */
059            public static AccessObject newInstance(final String aClassName,
060                            final Object[] aParameters) throws TestExtensionException {
061                    return new AccessObjectImpl(aClassName, aParameters);
062            }
063    }