You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2010/11/05 12:35:57 UTC

svn commit: r1031521 - in /incubator/isis/trunk/viewer/bdd: common/src/main/java/org/apache/isis/viewer/bdd/common/ common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/ concordion/src/main/java/org/apache/isis/viewer/bdd/concordi...

Author: danhaywood
Date: Fri Nov  5 11:35:56 2010
New Revision: 1031521

URL: http://svn.apache.org/viewvc?rev=1031521&view=rev
Log:
mods to BDD viewer, change NOF->Isis

Added:
    incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/IsisInitializer.java
      - copied, changed from r1031497, incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/InitNakedObjects.java
    incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractIsisConcordionTest.java
      - copied, changed from r1031497, incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractNakedObjectsConcordionTest.java
    incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingIsisViewerForConcordion.java
      - copied, changed from r1031497, incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingNakedObjectsViewerForConcordion.java
Removed:
    incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/InitNakedObjects.java
    incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractNakedObjectsConcordionTest.java
    incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingNakedObjectsViewerForConcordion.java
Modified:
    incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Story.java
    incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/StoryBootstrapper.java

Modified: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Story.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Story.java?rev=1031521&r1=1031520&r2=1031521&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Story.java (original)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Story.java Fri Nov  5 11:35:56 2010
@@ -15,7 +15,7 @@ import org.apache.isis.runtime.persisten
 import org.apache.isis.runtime.system.DeploymentType;
 import org.apache.isis.runtime.system.IsisSystem;
 import org.apache.isis.runtime.transaction.IsisTransactionManager;
-import org.apache.isis.viewer.bdd.common.story.bootstrapping.InitNakedObjects;
+import org.apache.isis.viewer.bdd.common.story.bootstrapping.IsisInitializer;
 import org.apache.isis.viewer.bdd.common.story.bootstrapping.OpenSession;
 import org.apache.isis.viewer.bdd.common.story.bootstrapping.SetClock;
 import org.apache.isis.viewer.bdd.common.story.bootstrapping.ShutdownNakedObjects;
@@ -75,9 +75,9 @@ public class Story implements StoryBoots
     }
 
     /**
-     * Called by {@link InitNakedObjects}.
+     * Called by {@link IsisInitializer}.
      */
-    public void setNakedObjectsSystem(
+    public void setIsisSystem(
             final IsisSystem nakedObjectsSystem) {
         this.nakedObjectsSystem = nakedObjectsSystem;
     }

Modified: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/StoryBootstrapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/StoryBootstrapper.java?rev=1031521&r1=1031520&r2=1031521&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/StoryBootstrapper.java (original)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/StoryBootstrapper.java Fri Nov  5 11:35:56 2010
@@ -20,7 +20,7 @@ public interface StoryBootstrapper  {
 	void setInstallerLookup(InstallerLookup installerLookup);
 
 	IsisSystem getSystem();
-	void setNakedObjectsSystem(IsisSystem system);
+	void setIsisSystem(IsisSystem system);
 
 
     /**

Copied: incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/IsisInitializer.java (from r1031497, incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/InitNakedObjects.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/IsisInitializer.java?p2=incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/IsisInitializer.java&p1=incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/InitNakedObjects.java&r1=1031497&r2=1031521&rev=1031521&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/InitNakedObjects.java (original)
+++ incubator/isis/trunk/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/IsisInitializer.java Fri Nov  5 11:35:56 2010
@@ -18,12 +18,12 @@ import org.apache.isis.viewer.bdd.common
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
-public class InitNakedObjects extends AbstractHelper {
+public class IsisInitializer extends AbstractHelper {
 
 	private final ConfigurationBuilder configurationBuilder;
 	private final DeploymentType deploymentType;
 
-    public InitNakedObjects(final Story story, ConfigurationBuilder configurationBuilder, DeploymentType deploymentType) {
+    public IsisInitializer(final Story story, ConfigurationBuilder configurationBuilder, DeploymentType deploymentType) {
         super(story);
         this.configurationBuilder = configurationBuilder;
         this.deploymentType = deploymentType;
@@ -58,7 +58,7 @@ public class InitNakedObjects extends Ab
             system = injector.getInstance(IsisSystem.class);
             
             getStory().setInstallerLookup(installerLookup);
-            getStory().setNakedObjectsSystem(system);
+            getStory().setIsisSystem(system);
 
             // provide a session in order to install fixtures
             IsisContext.openSession(new InitialisationSession());

Copied: incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractIsisConcordionTest.java (from r1031497, incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractNakedObjectsConcordionTest.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractIsisConcordionTest.java?p2=incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractIsisConcordionTest.java&p1=incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractNakedObjectsConcordionTest.java&r1=1031497&r2=1031521&rev=1031521&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractNakedObjectsConcordionTest.java (original)
+++ incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractIsisConcordionTest.java Fri Nov  5 11:35:56 2010
@@ -19,481 +19,428 @@ import org.apache.isis.viewer.bdd.common
 import org.apache.isis.viewer.bdd.common.StoryValueException;
 import org.apache.isis.viewer.bdd.common.fixtures.SetUpObjectsPeer.Mode;
 import org.apache.isis.viewer.bdd.common.fixtures.perform.Perform;
-import org.apache.isis.viewer.bdd.common.story.bootstrapping.InitNakedObjects;
+import org.apache.isis.viewer.bdd.common.story.bootstrapping.IsisInitializer;
 import org.apache.isis.viewer.bdd.concordion.internal.concordion.ExecuteCommandWithHeader;
 import org.apache.isis.viewer.bdd.concordion.internal.fixtures.AliasItemsInListForConcordion;
 import org.apache.isis.viewer.bdd.concordion.internal.fixtures.AliasServicesForConcordion;
 import org.apache.isis.viewer.bdd.concordion.internal.fixtures.SetUpObjectsForConcordion;
-import org.apache.isis.viewer.bdd.concordion.internal.fixtures.UsingNakedObjectsViewerForConcordion;
+import org.apache.isis.viewer.bdd.concordion.internal.fixtures.UsingIsisViewerForConcordion;
 import org.concordion.Concordion;
 import org.concordion.api.ResultSummary;
 import org.concordion.internal.ConcordionBuilder;
 import org.concordion.internal.FileTarget;
 import org.junit.Test;
 
-public class AbstractNakedObjectsConcordionTest {
+public class AbstractIsisConcordionTest {
 
-	public static final String DEFAULT_CONCORDION_CSS = "concordion.css";
-	public static final String DEFAULT_TARGET_DIR = "/tmp/concordion";
-	
-	private final static String NS_URI = "http://testedobjects.sourceforge.net/2010/concordion";
-	private static final String CMD_EXECUTE = "execute";
-	private final static SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(
-			"dd MMM yyyy hh:mm");
-
-	private static ThreadLocal<Story> storyThreadLocal = new ThreadLocal<Story>() {
-		@Override
-		protected Story initialValue() {
-			return new Story();
-		}
-	};
-
-	protected static Story getStory() {
-		return storyThreadLocal.get();
-	}
-
-	@Test
-	public void runStory() throws Throwable {
-		Concordion concordion = createConcordion();
-		ResultSummary resultSummary = concordion.process(this);
-		resultSummary.print(System.out, this);
-		resultSummary.assertIsSatisfied(this);
-		copyCustomCssIfDefined();
-	}
-
-	private void copyCustomCssIfDefined()  {
-		Class<?> cssClass = customCssPackage();
-		String customCss = customCss();
-		if (cssClass == null || customCss == null) {
-			return;
-		}
-		InputStream cssInputFile = cssClass.getResourceAsStream(customCss);
-		String cssPackageName = cssClass.getPackage().getName();
-		String cssPackagePath = asPath(cssPackageName);
-		String cssOutputFileName = combine(targetDir(), cssPackagePath, customCss);
-		try {
-			ByteArrayOutputStream baos = new ByteArrayOutputStream();
-			IoUtils.copy(cssInputFile, baos);
-			if (baos.size() > 0) {
-				IoUtils.copy(new ByteArrayInputStream(baos.toByteArray()), new FileOutputStream(cssOutputFileName));
-			}
-		} catch (IllegalArgumentException e) {
-			System.err.printf("failed to copy custom CSS to '%s'\n", customCss, cssOutputFileName);
-			return;
-		} catch (IOException e) {
-			System.err.printf("failed to copy custom CSS '%s' to '%s'\n", customCss, cssOutputFileName);
-			return;
-		}
-	}
-
-	
-
-	private String asPath(String name) {
-		return name.replace('.', File.separatorChar);
-	}
-
-	/**
-	 * Optional hook method to specify the directory to which the processed HTML should be
-	 * copied.
-	 * 
-	 * <p>
-	 * Defaults to {@value #DEFAULT_TARGET_DIR}.
-	 */
-	protected String targetDir() {
-		return DEFAULT_TARGET_DIR;
-	}
-
-	/**
-	 * Optional hook method to specify the class (any class) that resides in the same package as the {@link #customCss()}.
-	 * 
-	 * <p>
-	 * Return <tt>null</tt> if no custom CSS has been provided.
-	 * 
-	 * @see #customCss()
-	 */
-	protected Class<?> customCssPackage() {
-		return null;
-	}
-
-	/**
-	 * Optional hook method to specify the name of the custom CSS file.
-	 * 
-	 * <p>
-	 * Defaults to {@value #DEFAULT_CONCORDION_CSS} so you do not need to override if
-	 * your custom CSS file has this name.  However, it is necessary to override
-	 * {@link #customCssPackage()} to indicate the package that the CSS resides in.
-	 * 
-	 * @see #customCssPackage()
-	 */
-	protected String customCss() {
-		return DEFAULT_CONCORDION_CSS;
-	}
-
-	private String combine(String tmpDir, String... paths) {
-		StringBuilder buf = new StringBuilder(tmpDir);
-		for(String path: paths) {
-			if (buf.charAt(buf.length()-1) != File.separatorChar) {
-				buf.append(File.separatorChar);	
-			}
-			buf.append(path);
-		}
-		return buf.toString();
-	}
-
-	private Concordion createConcordion() {
-		if (targetDir() == null) {
-			throw new IllegalStateException("targetDir() cannot be null");
-		}
-		ConcordionBuilder builder = new ConcordionBuilder()
-			.withTarget(new FileTarget(new File(targetDir())))
-			.withCommand(NS_URI, CMD_EXECUTE, new ExecuteCommandWithHeader());
-		return builder.build();
-	}
-
-	@SuppressWarnings("unused")
-	private ConfigurationBuilder configurationBuilder;
-
-	public String getConfigDirectory() {
-		return getStory().getConfigDirectory();
-	}
-
-	public DeploymentType getDeploymentType() {
-		return getStory().getDeploymentType();
-	}
-
-	public boolean initNakedObjects(String configDirectory,
-			String deploymentType) {
-		getStory().setConfigDirectory(configDirectory);
-		if (DeploymentType.EXPLORATION.toString().equalsIgnoreCase(
-				deploymentType)) {
-			getStory().enableExploration();
-		}
-		ConfigurationBuilderFileSystem configurationBuilder = new ConfigurationBuilderFileSystem(
-				getConfigDirectory());
-		InitNakedObjects initializer = new InitNakedObjects(
-				getStory(), configurationBuilder, getDeploymentType());
-		initializer.initialize();
-		return true; // any runtime exception will propogate
-	}
-
-	public void aliasAs(String alias, ObjectAdapter adapter) {
-		getStory().aliasAs(alias, adapter);
-	}
-
-	public String aliasPrefixedAs(String prefix, ObjectAdapter adapter) {
-		return getStory().aliasPrefixedAs(prefix, adapter);
-	}
-
-	public void aliasServiceAs(String alias, String serviceClassName)
-			throws StoryValueException {
-		getStory().registerService(alias, serviceClassName);
-	}
-
-	public String getAlias(ObjectAdapter adapter) {
-		return getStory().getAlias(adapter);
-	}
-
-	public ObjectAdapter getAliased(String alias) {
-		return getStory().getAliased(alias);
-	}
-
-	public boolean logonAs(String userName) {
-		getStory().logonAs(userName);
-		return true;
-	}
-
-	public boolean logonAsWithRoles(String userName, String roleList) {
-		getStory().logonAsWithRoles(userName, roleList);
-		return true;
-	}
-
-	public void switchUser(String userName) {
-		getStory().switchUser(userName);
-	}
-
-	public void switchUserWithRoles(String userName, String roleList) {
-		getStory().switchUserWithRoles(userName, roleList);
-	}
-
-	public boolean dateIs(String dateAndTimeStr) throws StoryValueException {
-		getStory().dateIs(asDateAndTime(dateAndTimeStr));
-		return true;
-	}
-
-	public boolean dateIsNow(String dateAndTimeStr) throws StoryValueException {
-		getStory().dateIsNow(asDateAndTime(dateAndTimeStr));
-		return true;
-	}
-
-	public boolean timeIs(String dateAndTimeStr) throws StoryValueException {
-		getStory().timeIs(asDateAndTime(dateAndTimeStr));
-		return true;
-	}
-
-	public boolean timeIsNow(String dateAndTimeStr) throws StoryValueException {
-		getStory().timeIsNow(asDateAndTime(dateAndTimeStr));
-		return true;
-	}
-
-	private Date asDateAndTime(String dateAndTimeStr)
-			throws StoryValueException {
-		try {
-			Date dateAndTime = DATE_FORMAT.parse(dateAndTimeStr);
-			return dateAndTime;
-		} catch (ParseException e) {
-			throw new StoryValueException(e);
-		}
-	}
-
-	private AliasServicesForConcordion aliasServices;
-
-	public boolean aliasService(String className, String alias) {
-		return aliasServices(className, alias);
-	}
-
-	public boolean aliasServices(String className, String alias) {
-		if (aliasServices == null) {
-			aliasServices = new AliasServicesForConcordion(getStory());
-		}
-		aliasServices.execute(alias, className);
-		return true;
-	}
-
-	public void shutdownNakedObjects() {
-		getStory().shutdownNakedObjects();
-	}
-
-	public String setUpObject(String className, String alias, String arg0) {
-		return setUpObjectsVarargs(className, alias, arg0);
-	}
-
-	public String setUpObject(String className, String alias, String arg0,
-			String arg1) {
-		return setUpObjectsVarargs(className, alias, arg0, arg1);
-	}
-
-	public String setUpObject(String className, String alias, String arg0,
-			String arg1, String arg2) {
-		return setUpObjectsVarargs(className, alias, arg0, arg1, arg2);
-	}
-
-	public String setUpObject(String className, String alias, String arg0,
-			String arg1, String arg2, String arg3) {
-		return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3);
-	}
-
-	public String setUpObject(String className, String alias, String arg0,
-			String arg1, String arg2, String arg3, String arg4) {
-		return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3,
-				arg4);
-	}
-
-	public String setUpObject(String className, String alias, String arg0,
-			String arg1, String arg2, String arg3, String arg4, String arg5) {
-		return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3,
-				arg4, arg5);
-	}
-
-	public String setUpObject(String className, String alias, String arg0,
-			String arg1, String arg2, String arg3, String arg4, String arg5,
-			String arg6) {
-		return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3,
-				arg4, arg5, arg6);
-	}
-
-	public String setUpObject(String className, String alias, String arg0,
-			String arg1, String arg2, String arg3, String arg4, String arg5,
-			String arg6, String arg7) {
-		return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3,
-				arg4, arg5, arg6, arg7);
-	}
-
-	public String setUpObject(String className, String alias, String arg0,
-			String arg1, String arg2, String arg3, String arg4, String arg5,
-			String arg6, String arg7, String arg8) {
-		return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3,
-				arg4, arg5, arg6, arg7, arg8);
-	}
-
-	public String setUpObject(String className, String alias, String arg0,
-			String arg1, String arg2, String arg3, String arg4, String arg5,
-			String arg6, String arg7, String arg8, String arg9) {
-		return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3,
-				arg4, arg5, arg6, arg7, arg8, arg9);
-	}
-
-	private SetUpObjectsForConcordion setUpObjects;
-
-	/**
-	 * Workaround for OGNL defect.
-	 */
-	private String setUpObjectsVarargs(String className, String alias,
-			String... propertyValues) {
-		if (executingInline()) {
-			setUpObjects = new SetUpObjectsForConcordion(getStory(), className,
-					Mode.PERSIST);
-			setUpObjects.executeHeader(alias, propertyValues);
-			return setUpObjects.executeRow(alias, propertyValues);
-		} else {
-			if (executingTableHeader()) {
-				setUpObjects = new SetUpObjectsForConcordion(getStory(), className,
-						Mode.PERSIST);
-				return setUpObjects.executeHeader(alias, propertyValues);
-			} else {
-				return setUpObjects.executeRow(alias, propertyValues);
-			}
-		}
-	}
-
-	private UsingNakedObjectsViewerForConcordion usingNakedObjectsViewer;
-
-	public String usingNakedObjectsViewer(String onObject,
-			String aliasResultAs, String perform, String usingMember) {
-		return usingNakedObjectsViewerThatArgsVarargs(onObject, aliasResultAs,
-				perform, usingMember, null, null, null, null);
-	}
-
-	public String usingNakedObjectsViewerThat(String onObject,
-			String aliasResultAs, String perform, String usingMember,
-			String thatIt) {
-		return usingNakedObjectsViewerThatArgsVarargs(onObject, aliasResultAs,
-				perform, usingMember, thatIt, null, null, null);
-	}
-
-	public String usingNakedObjectsViewerArgs(String onObject,
-			String aliasResultAs, String perform, String usingMember,
-			String arg0) {
-		return usingNakedObjectsViewerThatArgsVarargs(onObject, aliasResultAs,
-				perform, usingMember, null, arg0);
-	}
-
-	public String usingNakedObjectsViewerArgs(String onObject,
-			String aliasResultAs, String perform, String usingMember,
-			String arg0, String arg1) {
-		return usingNakedObjectsViewerThatArgsVarargs(onObject, aliasResultAs,
-				perform, usingMember, null, arg0, arg1);
-	}
-
-	public String usingNakedObjectsViewerArgs(String onObject,
-			String aliasResultAs, String perform, String usingMember,
-			String arg0, String arg1, String arg2) {
-		return usingNakedObjectsViewerThatArgsVarargs(onObject, aliasResultAs,
-				perform, usingMember, null, arg0, arg1, arg2);
-	}
-
-	public String usingNakedObjectsViewerArgs(String onObject,
-			String aliasResultAs, String perform, String usingMember,
-			String arg0, String arg1, String arg2, String arg3) {
-		return usingNakedObjectsViewerThatArgsVarargs(onObject, aliasResultAs,
-				perform, usingMember, null, arg0, arg1, arg2, arg3);
-	}
-
-	public String usingNakedObjectsViewerArgs(String onObject,
-			String aliasResultAs, String perform, String usingMember,
-			String arg0, String arg1, String arg2, String arg3, String arg4) {
-		return usingNakedObjectsViewerThatArgsVarargs(onObject, aliasResultAs,
-				perform, usingMember, null, arg0, arg1, arg2, arg3, arg4);
-	}
-
-	public String usingNakedObjectsViewerArgs(String onObject,
-			String aliasResultAs, String perform, String usingMember,
-			String arg0, String arg1, String arg2, String arg3, String arg4,
-			String arg5) {
-		return usingNakedObjectsViewerThatArgsVarargs(onObject, aliasResultAs,
-				perform, usingMember, null, arg0, arg1, arg2, arg3, arg4, arg5);
-	}
-
-	public String usingNakedObjectsViewerThatArgs(String onObject,
-			String aliasResultAs, String perform, String usingMember,
-			String thatIt, String arg0) {
-		return usingNakedObjectsViewerThatArgsVarargs(onObject, aliasResultAs,
-				perform, usingMember, thatIt, arg0);
-	}
-
-	public String usingNakedObjectsViewerThatArgs(String onObject,
-			String aliasResultAs, String perform, String usingMember,
-			String thatIt, String arg0, String arg1) {
-		return usingNakedObjectsViewerThatArgsVarargs(onObject, aliasResultAs,
-				perform, usingMember, thatIt, arg0, arg1);
-	}
-
-	public String usingNakedObjectsViewerThatArgs(String onObject,
-			String aliasResultAs, String perform, String usingMember,
-			String thatIt, String arg0, String arg1, String arg2) {
-		return usingNakedObjectsViewerThatArgsVarargs(onObject, aliasResultAs,
-				perform, usingMember, thatIt, arg0, arg1, arg2);
-	}
-
-	public String usingNakedObjectsViewerThatArgs(String onObject,
-			String aliasResultAs, String perform, String usingMember,
-			String thatIt, String arg0, String arg1, String arg2, String arg3) {
-		return usingNakedObjectsViewerThatArgsVarargs(onObject, aliasResultAs,
-				perform, usingMember, thatIt, arg0, arg1, arg2, arg3);
-	}
-
-	public String usingNakedObjectsViewerThatArgs(String onObject,
-			String aliasResultAs, String perform, String usingMember,
-			String thatIt, String arg0, String arg1, String arg2, String arg3,
-			String arg4) {
-		return usingNakedObjectsViewerThatArgsVarargs(onObject, aliasResultAs,
-				perform, usingMember, thatIt, arg0, arg1, arg2, arg3, arg4);
-	}
-
-	private String usingNakedObjectsViewerThatArgsVarargs(String onObject,
-			String aliasResultAs, String perform, String usingMember,
-			String thatIt, String arg0, String... remainingArgs) {
-		if (executingInline()) {
-			usingNakedObjectsViewer = new UsingNakedObjectsViewerForConcordion(
-					getStory(), Perform.Mode.TEST);
-			usingNakedObjectsViewer.executeHeader(onObject, aliasResultAs,
-					perform, usingMember, thatIt, arg0, remainingArgs);
-			return usingNakedObjectsViewer.executeRow(onObject, aliasResultAs,
-					perform, usingMember, thatIt, arg0, remainingArgs);
-		} else {
-			if (executingTableHeader()) {
-				usingNakedObjectsViewer = new UsingNakedObjectsViewerForConcordion(
-						getStory(), Perform.Mode.TEST);
-				return usingNakedObjectsViewer.executeHeader(onObject, aliasResultAs,
-						perform, usingMember, thatIt, arg0, remainingArgs);
-			} else {
-				return usingNakedObjectsViewer.executeRow(onObject, aliasResultAs,
-						perform, usingMember, thatIt, arg0, remainingArgs);
-			}
-		}
-	}
-
-	private AliasItemsInListForConcordion aliasItemsInList;
-
-	public String aliasItemsInList(String listAlias, String title,
-			String aliasAs) {
-		return aliasItemsInList(listAlias, title, null, aliasAs);
-	}
-
-	public String aliasItemsInList(String listAlias, String title, String type,
-			String aliasAs) {
-		aliasItemsInList = new AliasItemsInListForConcordion(getStory(),
-				listAlias);
-		return aliasItemsInList.execute(aliasAs, title, type);
-	}
-
-	private boolean executingTableHeader() {
-		return executingTable() && 
-			   ExecuteCommandWithHeader.tableRow
-			.get() == ExecuteCommandWithHeader.TableRow.HEADER;
-	}
-
-	private boolean executingTable() {
-		ExecuteCommandWithHeader.Context context = ExecuteCommandWithHeader.context
-		.get();
-		return context == ExecuteCommandWithHeader.Context.TABLE;
-	}
-
-	private boolean executingInline() {
-		return !executingTable();
-	}
-
-	public void runViewer() {
-		getStory().runViewer();
-	}
+    public static final String DEFAULT_CONCORDION_CSS = "concordion.css";
+    public static final String DEFAULT_TARGET_DIR = "/tmp/concordion";
+
+    private final static String NS_URI = "http://isis.apache.org/2010/concordion";
+    private static final String CMD_EXECUTE = "execute";
+    private final static SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd MMM yyyy hh:mm");
+
+    private static ThreadLocal<Story> storyThreadLocal = new ThreadLocal<Story>() {
+        @Override
+        protected Story initialValue() {
+            return new Story();
+        }
+    };
+
+    protected static Story getStory() {
+        return storyThreadLocal.get();
+    }
+
+    @Test
+    public void runStory() throws Throwable {
+        Concordion concordion = createConcordion();
+        ResultSummary resultSummary = concordion.process(this);
+        resultSummary.print(System.out, this);
+        resultSummary.assertIsSatisfied(this);
+        copyCustomCssIfDefined();
+    }
+
+    private void copyCustomCssIfDefined() {
+        Class<?> cssClass = customCssPackage();
+        String customCss = customCss();
+        if (cssClass == null || customCss == null) {
+            return;
+        }
+        InputStream cssInputFile = cssClass.getResourceAsStream(customCss);
+        String cssPackageName = cssClass.getPackage().getName();
+        String cssPackagePath = asPath(cssPackageName);
+        String cssOutputFileName = combine(targetDir(), cssPackagePath, customCss);
+        try {
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            IoUtils.copy(cssInputFile, baos);
+            if (baos.size() > 0) {
+                IoUtils.copy(new ByteArrayInputStream(baos.toByteArray()), new FileOutputStream(cssOutputFileName));
+            }
+        } catch (IllegalArgumentException e) {
+            System.err.printf("failed to copy custom CSS to '%s'\n", customCss, cssOutputFileName);
+            return;
+        } catch (IOException e) {
+            System.err.printf("failed to copy custom CSS '%s' to '%s'\n", customCss, cssOutputFileName);
+            return;
+        }
+    }
+
+    private String asPath(String name) {
+        return name.replace('.', File.separatorChar);
+    }
+
+    /**
+     * Optional hook method to specify the directory to which the processed HTML should be copied.
+     * 
+     * <p>
+     * Defaults to {@value #DEFAULT_TARGET_DIR}.
+     */
+    protected String targetDir() {
+        return DEFAULT_TARGET_DIR;
+    }
+
+    /**
+     * Optional hook method to specify the class (any class) that resides in the same package as the
+     * {@link #customCss()}.
+     * 
+     * <p>
+     * Return <tt>null</tt> if no custom CSS has been provided.
+     * 
+     * @see #customCss()
+     */
+    protected Class<?> customCssPackage() {
+        return null;
+    }
+
+    /**
+     * Optional hook method to specify the name of the custom CSS file.
+     * 
+     * <p>
+     * Defaults to {@value #DEFAULT_CONCORDION_CSS} so you do not need to override if your custom CSS file has this
+     * name. However, it is necessary to override {@link #customCssPackage()} to indicate the package that the CSS
+     * resides in.
+     * 
+     * @see #customCssPackage()
+     */
+    protected String customCss() {
+        return DEFAULT_CONCORDION_CSS;
+    }
+
+    private String combine(String tmpDir, String... paths) {
+        StringBuilder buf = new StringBuilder(tmpDir);
+        for (String path : paths) {
+            if (buf.charAt(buf.length() - 1) != File.separatorChar) {
+                buf.append(File.separatorChar);
+            }
+            buf.append(path);
+        }
+        return buf.toString();
+    }
+
+    private Concordion createConcordion() {
+        if (targetDir() == null) {
+            throw new IllegalStateException("targetDir() cannot be null");
+        }
+        ConcordionBuilder builder =
+            new ConcordionBuilder().withTarget(new FileTarget(new File(targetDir()))).withCommand(NS_URI, CMD_EXECUTE,
+                new ExecuteCommandWithHeader());
+        return builder.build();
+    }
+
+    @SuppressWarnings("unused")
+    private ConfigurationBuilder configurationBuilder;
+
+    public String getConfigDirectory() {
+        return getStory().getConfigDirectory();
+    }
+
+    public DeploymentType getDeploymentType() {
+        return getStory().getDeploymentType();
+    }
+
+    public boolean bootstrapIsis(String configDirectory, String deploymentType) {
+        getStory().setConfigDirectory(configDirectory);
+        if (DeploymentType.EXPLORATION.toString().equalsIgnoreCase(deploymentType)) {
+            getStory().enableExploration();
+        }
+        ConfigurationBuilderFileSystem configurationBuilder = new ConfigurationBuilderFileSystem(getConfigDirectory());
+        IsisInitializer initializer = new IsisInitializer(getStory(), configurationBuilder, getDeploymentType());
+        initializer.initialize();
+        return true; // any runtime exception will propogate
+    }
+
+    public void aliasAs(String alias, ObjectAdapter adapter) {
+        getStory().aliasAs(alias, adapter);
+    }
+
+    public String aliasPrefixedAs(String prefix, ObjectAdapter adapter) {
+        return getStory().aliasPrefixedAs(prefix, adapter);
+    }
+
+    public void aliasServiceAs(String alias, String serviceClassName) throws StoryValueException {
+        getStory().registerService(alias, serviceClassName);
+    }
+
+    public String getAlias(ObjectAdapter adapter) {
+        return getStory().getAlias(adapter);
+    }
+
+    public ObjectAdapter getAliased(String alias) {
+        return getStory().getAliased(alias);
+    }
+
+    public boolean logonAs(String userName) {
+        getStory().logonAs(userName);
+        return true;
+    }
+
+    public boolean logonAsWithRoles(String userName, String roleList) {
+        getStory().logonAsWithRoles(userName, roleList);
+        return true;
+    }
+
+    public void switchUser(String userName) {
+        getStory().switchUser(userName);
+    }
+
+    public void switchUserWithRoles(String userName, String roleList) {
+        getStory().switchUserWithRoles(userName, roleList);
+    }
+
+    public boolean dateIs(String dateAndTimeStr) throws StoryValueException {
+        getStory().dateIs(asDateAndTime(dateAndTimeStr));
+        return true;
+    }
+
+    public boolean dateIsNow(String dateAndTimeStr) throws StoryValueException {
+        getStory().dateIsNow(asDateAndTime(dateAndTimeStr));
+        return true;
+    }
+
+    public boolean timeIs(String dateAndTimeStr) throws StoryValueException {
+        getStory().timeIs(asDateAndTime(dateAndTimeStr));
+        return true;
+    }
+
+    public boolean timeIsNow(String dateAndTimeStr) throws StoryValueException {
+        getStory().timeIsNow(asDateAndTime(dateAndTimeStr));
+        return true;
+    }
+
+    private Date asDateAndTime(String dateAndTimeStr) throws StoryValueException {
+        try {
+            Date dateAndTime = DATE_FORMAT.parse(dateAndTimeStr);
+            return dateAndTime;
+        } catch (ParseException e) {
+            throw new StoryValueException(e);
+        }
+    }
+
+    private AliasServicesForConcordion aliasServices;
+
+    public boolean aliasService(String className, String alias) {
+        return aliasServices(className, alias);
+    }
+
+    public boolean aliasServices(String className, String alias) {
+        if (aliasServices == null) {
+            aliasServices = new AliasServicesForConcordion(getStory());
+        }
+        aliasServices.execute(alias, className);
+        return true;
+    }
+
+    public void shutdownNakedObjects() {
+        getStory().shutdownNakedObjects();
+    }
+
+    public String setUpObject(String className, String alias, String arg0) {
+        return setUpObjectsVarargs(className, alias, arg0);
+    }
+
+    public String setUpObject(String className, String alias, String arg0, String arg1) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1);
+    }
+
+    public String setUpObject(String className, String alias, String arg0, String arg1, String arg2) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2);
+    }
+
+    public String setUpObject(String className, String alias, String arg0, String arg1, String arg2, String arg3) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3);
+    }
+
+    public String setUpObject(String className, String alias, String arg0, String arg1, String arg2, String arg3,
+        String arg4) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4);
+    }
+
+    public String setUpObject(String className, String alias, String arg0, String arg1, String arg2, String arg3,
+        String arg4, String arg5) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4, arg5);
+    }
+
+    public String setUpObject(String className, String alias, String arg0, String arg1, String arg2, String arg3,
+        String arg4, String arg5, String arg6) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+    }
+
+    public String setUpObject(String className, String alias, String arg0, String arg1, String arg2, String arg3,
+        String arg4, String arg5, String arg6, String arg7) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
+    }
+
+    public String setUpObject(String className, String alias, String arg0, String arg1, String arg2, String arg3,
+        String arg4, String arg5, String arg6, String arg7, String arg8) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
+    }
+
+    public String setUpObject(String className, String alias, String arg0, String arg1, String arg2, String arg3,
+        String arg4, String arg5, String arg6, String arg7, String arg8, String arg9) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
+    }
+
+    private SetUpObjectsForConcordion setUpObjects;
+
+    /**
+     * Workaround for OGNL defect.
+     */
+    private String setUpObjectsVarargs(String className, String alias, String... propertyValues) {
+        if (executingInline()) {
+            setUpObjects = new SetUpObjectsForConcordion(getStory(), className, Mode.PERSIST);
+            setUpObjects.executeHeader(alias, propertyValues);
+            return setUpObjects.executeRow(alias, propertyValues);
+        } else {
+            if (executingTableHeader()) {
+                setUpObjects = new SetUpObjectsForConcordion(getStory(), className, Mode.PERSIST);
+                return setUpObjects.executeHeader(alias, propertyValues);
+            } else {
+                return setUpObjects.executeRow(alias, propertyValues);
+            }
+        }
+    }
+
+    private UsingIsisViewerForConcordion usingIsisViewer;
+
+    public String usingIsisViewer(String onObject, String aliasResultAs, String perform, String usingMember) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, null, null,
+            null);
+    }
+
+    public String usingIsisViewerThat(String onObject, String aliasResultAs, String perform,
+        String usingMember, String thatIt) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, null,
+            null, null);
+    }
+
+    public String usingIsisViewerArgs(String onObject, String aliasResultAs, String perform,
+        String usingMember, String arg0) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0);
+    }
+
+    public String usingIsisViewerArgs(String onObject, String aliasResultAs, String perform,
+        String usingMember, String arg0, String arg1) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0, arg1);
+    }
+
+    public String usingIsisViewerArgs(String onObject, String aliasResultAs, String perform,
+        String usingMember, String arg0, String arg1, String arg2) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0, arg1,
+            arg2);
+    }
+
+    public String usingIsisViewerArgs(String onObject, String aliasResultAs, String perform,
+        String usingMember, String arg0, String arg1, String arg2, String arg3) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0, arg1,
+            arg2, arg3);
+    }
+
+    public String usingIsisViewerArgs(String onObject, String aliasResultAs, String perform,
+        String usingMember, String arg0, String arg1, String arg2, String arg3, String arg4) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0, arg1,
+            arg2, arg3, arg4);
+    }
+
+    public String usingIsisViewerArgs(String onObject, String aliasResultAs, String perform,
+        String usingMember, String arg0, String arg1, String arg2, String arg3, String arg4, String arg5) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0, arg1,
+            arg2, arg3, arg4, arg5);
+    }
+
+    public String usingIsisViewerThatArgs(String onObject, String aliasResultAs, String perform,
+        String usingMember, String thatIt, String arg0) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, arg0);
+    }
+
+    public String usingIsisViewerThatArgs(String onObject, String aliasResultAs, String perform,
+        String usingMember, String thatIt, String arg0, String arg1) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, arg1);
+    }
+
+    public String usingIsisViewerThatArgs(String onObject, String aliasResultAs, String perform,
+        String usingMember, String thatIt, String arg0, String arg1, String arg2) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, arg0,
+            arg1, arg2);
+    }
+
+    public String usingIsisViewerThatArgs(String onObject, String aliasResultAs, String perform,
+        String usingMember, String thatIt, String arg0, String arg1, String arg2, String arg3) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, arg0,
+            arg1, arg2, arg3);
+    }
+
+    public String usingIsisViewerThatArgs(String onObject, String aliasResultAs, String perform,
+        String usingMember, String thatIt, String arg0, String arg1, String arg2, String arg3, String arg4) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, arg0,
+            arg1, arg2, arg3, arg4);
+    }
+
+    private String usingIsisViewerThatArgsVarargs(String onObject, String aliasResultAs, String perform,
+        String usingMember, String thatIt, String arg0, String... remainingArgs) {
+        if (executingInline()) {
+            usingIsisViewer = new UsingIsisViewerForConcordion(getStory(), Perform.Mode.TEST);
+            usingIsisViewer.executeHeader(onObject, aliasResultAs, perform, usingMember, thatIt, arg0,
+                remainingArgs);
+            return usingIsisViewer.executeRow(onObject, aliasResultAs, perform, usingMember, thatIt, arg0,
+                remainingArgs);
+        } else {
+            if (executingTableHeader()) {
+                usingIsisViewer = new UsingIsisViewerForConcordion(getStory(), Perform.Mode.TEST);
+                return usingIsisViewer.executeHeader(onObject, aliasResultAs, perform, usingMember, thatIt,
+                    arg0, remainingArgs);
+            } else {
+                return usingIsisViewer.executeRow(onObject, aliasResultAs, perform, usingMember, thatIt, arg0,
+                    remainingArgs);
+            }
+        }
+    }
+
+    private AliasItemsInListForConcordion aliasItemsInList;
+
+    public String aliasItemsInList(String listAlias, String title, String aliasAs) {
+        return aliasItemsInList(listAlias, title, null, aliasAs);
+    }
+
+    public String aliasItemsInList(String listAlias, String title, String type, String aliasAs) {
+        aliasItemsInList = new AliasItemsInListForConcordion(getStory(), listAlias);
+        return aliasItemsInList.execute(aliasAs, title, type);
+    }
+
+    private boolean executingTableHeader() {
+        return executingTable() && ExecuteCommandWithHeader.tableRow.get() == ExecuteCommandWithHeader.TableRow.HEADER;
+    }
+
+    private boolean executingTable() {
+        ExecuteCommandWithHeader.Context context = ExecuteCommandWithHeader.context.get();
+        return context == ExecuteCommandWithHeader.Context.TABLE;
+    }
+
+    private boolean executingInline() {
+        return !executingTable();
+    }
+
+    public void runViewer() {
+        getStory().runViewer();
+    }
 
 }

Copied: incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingIsisViewerForConcordion.java (from r1031497, incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingNakedObjectsViewerForConcordion.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingIsisViewerForConcordion.java?p2=incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingIsisViewerForConcordion.java&p1=incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingNakedObjectsViewerForConcordion.java&r1=1031497&r2=1031521&rev=1031521&view=diff
==============================================================================
--- incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingNakedObjectsViewerForConcordion.java (original)
+++ incubator/isis/trunk/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingIsisViewerForConcordion.java Fri Nov  5 11:35:56 2010
@@ -17,12 +17,12 @@ import org.apache.isis.viewer.bdd.concor
 
 import com.google.common.collect.Lists;
 
-public class UsingNakedObjectsViewerForConcordion extends
+public class UsingIsisViewerForConcordion extends
 		AbstractFixture<UsingNakedObjectsViewerPeer> {
 
 	private final List<String> argumentCells = new ArrayList<String>();
 
-	public UsingNakedObjectsViewerForConcordion(
+	public UsingIsisViewerForConcordion(
 			final AliasRegistry aliasesRegistry,
 			final Perform.Mode mode) {
 		this(aliasesRegistry, mode, 
@@ -46,7 +46,7 @@ public class UsingNakedObjectsViewerForC
 						.optional().build());
 	}
 
-	private UsingNakedObjectsViewerForConcordion(
+	private UsingIsisViewerForConcordion(
 			final AliasRegistry aliasesRegistry,
 			final Perform.Mode mode,
 			final CellBinding onObjectBinding,