// Modified or written by Object Mentor, Inc. for inclusion with FitNesse. // Copyright (c) 2002 Cunningham & Cunningham, Inc. // Released under the terms of the GNU General Public License version 2 or later. package fit; import fit.exception.ClassIsNotFixtureException; import fit.exception.NoDefaultConstructorFixtureException; public class FixtureClass { private Class<?> klass; public FixtureClass(Class<?> klass) { this.klass = klass; } public Fixture newInstance() throws IllegalAccessException { // Instantiate according to policies? // Example: policy #1 -- has default constructor // ... String fixtureClassName = klass.getName(); try { Object fixtureAsObject = klass.newInstance(); if (fixtureAsObject instanceof Fixture) { return (Fixture) fixtureAsObject; } else { throw new ClassIsNotFixtureException(fixtureClassName); } } catch (IllegalAccessException unhandled) { // TODO: Handle constructor not public? throw unhandled; } catch (InstantiationException e) { // TODO: Handle interface/abstract class case? throw new NoDefaultConstructorFixtureException(fixtureClassName); } } }