Skip to content

Commit

Permalink
Refactoring towards internal DI. This can potentially simplify some o…
Browse files Browse the repository at this point in the history
…f the internal codebase, and also accommodate for #330.
  • Loading branch information
aslakhellesoy committed May 29, 2012
1 parent adbacc7 commit 450cc84
Show file tree
Hide file tree
Showing 23 changed files with 46 additions and 112 deletions.
@@ -1,7 +1,4 @@
package cucumber.fallback.runtime.java;

import cucumber.runtime.CucumberException;
import cucumber.runtime.java.ObjectFactory;
package cucumber.runtime;

import java.lang.reflect.Constructor;
import java.util.HashMap;
Expand Down
23 changes: 23 additions & 0 deletions core/src/main/java/cucumber/runtime/ObjectFactory.java
@@ -0,0 +1,23 @@
package cucumber.runtime;

import cucumber.io.ClasspathResourceLoader;

public interface ObjectFactory {
void start();

void stop();

void addClass(Class<?> clazz);

<T> T getInstance(Class<T> type);

public class Factory {
public static ObjectFactory newInstance(ClasspathResourceLoader classpathResourceLoader) {
try {
return classpathResourceLoader.instantiateExactlyOneSubclass(ObjectFactory.class, "cucumber.runtime", new Class[0], new Object[0]);
} catch (CucumberException ce) {
return new DefaultJavaObjectFactory();
}
}
}
}
Expand Up @@ -4,7 +4,7 @@
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
import cucumber.runtime.java.ObjectFactory;
import cucumber.runtime.ObjectFactory;

import java.io.IOException;
import java.io.InputStream;
Expand Down
@@ -1,6 +1,6 @@
package cucumber.runtime.java.guice;

import cucumber.runtime.java.ObjectFactory;
import cucumber.runtime.ObjectFactory;
import org.junit.Test;

import java.io.IOException;
Expand Down
18 changes: 2 additions & 16 deletions java/src/main/java/cucumber/runtime/java/JavaBackend.java
Expand Up @@ -3,12 +3,12 @@
import cucumber.annotation.After;
import cucumber.annotation.Before;
import cucumber.annotation.Order;
import cucumber.fallback.runtime.java.DefaultJavaObjectFactory;
import cucumber.io.ClasspathResourceLoader;
import cucumber.io.ResourceLoader;
import cucumber.runtime.Backend;
import cucumber.runtime.CucumberException;
import cucumber.runtime.Glue;
import cucumber.runtime.ObjectFactory;
import cucumber.runtime.UnreportedStepExecutor;
import cucumber.runtime.Utils;
import cucumber.runtime.snippets.SnippetGenerator;
Expand All @@ -29,7 +29,7 @@ public class JavaBackend implements Backend {
public JavaBackend(ResourceLoader ignored) {
classpathResourceLoader = new ClasspathResourceLoader(Thread.currentThread().getContextClassLoader());
classpathMethodScanner = new ClasspathMethodScanner(classpathResourceLoader);
objectFactory = loadObjectFactory();
objectFactory = ObjectFactory.Factory.newInstance(classpathResourceLoader);
}

public JavaBackend(ObjectFactory objectFactory) {
Expand All @@ -38,20 +38,6 @@ public JavaBackend(ObjectFactory objectFactory) {
this.objectFactory = objectFactory;
}

private ObjectFactory loadObjectFactory() {
ObjectFactory foundOF;
if (ObjectFactoryHolder.getFactory() != null) {
foundOF = ObjectFactoryHolder.getFactory();
} else {
try {
foundOF = classpathResourceLoader.instantiateExactlyOneSubclass(ObjectFactory.class, "cucumber.runtime", new Class[0], new Object[0]);
} catch (CucumberException ce) {
foundOF = new DefaultJavaObjectFactory();
}
}
return foundOF;
}

@Override
public void loadGlue(Glue glue, List<String> gluePaths) {
this.glue = glue;
Expand Down
@@ -1,6 +1,7 @@
package cucumber.runtime.java;

import cucumber.runtime.HookDefinition;
import cucumber.runtime.ObjectFactory;
import cucumber.runtime.ScenarioResult;
import cucumber.runtime.Utils;
import gherkin.TagExpression;
Expand Down
Expand Up @@ -2,6 +2,7 @@

import cucumber.runtime.JdkPatternArgumentMatcher;
import cucumber.runtime.MethodFormat;
import cucumber.runtime.ObjectFactory;
import cucumber.runtime.ParameterType;
import cucumber.runtime.StepDefinition;
import cucumber.runtime.Utils;
Expand Down
11 changes: 0 additions & 11 deletions java/src/main/java/cucumber/runtime/java/ObjectFactory.java

This file was deleted.

17 changes: 0 additions & 17 deletions java/src/main/java/cucumber/runtime/java/ObjectFactoryHolder.java

This file was deleted.

Expand Up @@ -4,6 +4,7 @@
import cucumber.io.ClasspathResourceLoader;
import cucumber.runtime.CucumberException;
import cucumber.runtime.Glue;
import cucumber.runtime.ObjectFactory;
import org.junit.Test;
import org.mockito.Mockito;
import org.mockito.internal.util.reflection.Whitebox;
Expand Down
@@ -1,9 +1,10 @@
package cucumber.runtime.java;

import cucumber.fallback.runtime.java.DefaultJavaObjectFactory;
import cucumber.runtime.DefaultJavaObjectFactory;
import cucumber.runtime.CucumberException;
import cucumber.runtime.Glue;
import cucumber.runtime.HookDefinition;
import cucumber.runtime.ObjectFactory;
import cucumber.runtime.StepDefinition;
import cucumber.runtime.StepDefinitionMatch;
import cucumber.runtime.java.stepdefs.Stepdefs;
Expand Down
1 change: 1 addition & 0 deletions java/src/test/java/cucumber/runtime/java/JavaHookTest.java
Expand Up @@ -5,6 +5,7 @@
import cucumber.annotation.Order;
import cucumber.runtime.Glue;
import cucumber.runtime.HookDefinition;
import cucumber.runtime.ObjectFactory;
import cucumber.runtime.RuntimeGlue;
import cucumber.runtime.UndefinedStepsTracker;
import cucumber.runtime.converters.LocalizedXStreams;
Expand Down
@@ -1,6 +1,7 @@
package cucumber.runtime.java;

import cucumber.fallback.runtime.java.DefaultJavaObjectFactory;
import cucumber.runtime.DefaultJavaObjectFactory;
import cucumber.runtime.ObjectFactory;
import org.junit.Test;

import static org.junit.Assert.assertNotNull;
Expand Down

This file was deleted.

@@ -1,5 +1,7 @@
package cucumber.runtime.java;

import cucumber.runtime.ObjectFactory;

public class SingletonFactory implements ObjectFactory {
private final Object singleton;

Expand Down
Expand Up @@ -2,7 +2,7 @@

import cucumber.runtime.CucumberException;
import cucumber.runtime.Utils;
import cucumber.runtime.java.ObjectFactory;
import cucumber.runtime.ObjectFactory;
import org.apache.openejb.OpenEjbContainer;

import javax.ejb.embeddable.EJBContainer;
Expand Down
@@ -1,6 +1,6 @@
package cucumber.runtime.java.openejb;

import cucumber.runtime.java.ObjectFactory;
import cucumber.runtime.ObjectFactory;
import org.junit.Test;

import static org.junit.Assert.assertNotNull;
Expand Down
@@ -1,6 +1,6 @@
package cucumber.runtime.java.picocontainer;

import cucumber.runtime.java.ObjectFactory;
import cucumber.runtime.ObjectFactory;
import org.picocontainer.MutablePicoContainer;
import org.picocontainer.PicoBuilder;

Expand Down
@@ -1,6 +1,6 @@
package cucumber.runtime.java.picocontainer;

import cucumber.runtime.java.ObjectFactory;
import cucumber.runtime.ObjectFactory;
import org.junit.Test;

import static org.junit.Assert.assertNotNull;
Expand Down
@@ -1,7 +1,7 @@
package cucumber.runtime.java.spring;

import cucumber.runtime.CucumberException;
import cucumber.runtime.java.ObjectFactory;
import cucumber.runtime.ObjectFactory;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
Expand Down
@@ -1,6 +1,6 @@
package cucumber.runtime.java.spring;

import cucumber.runtime.java.ObjectFactory;
import cucumber.runtime.ObjectFactory;
import org.junit.Test;

import static org.junit.Assert.assertEquals;
Expand Down
@@ -1,6 +1,6 @@
package cucumber.runtime.java.weld;

import cucumber.runtime.java.ObjectFactory;
import cucumber.runtime.ObjectFactory;
import org.jboss.weld.environment.se.Weld;
import org.jboss.weld.environment.se.WeldContainer;

Expand Down
@@ -1,6 +1,6 @@
package cucumber.runtime.java.weld;

import cucumber.runtime.java.ObjectFactory;
import cucumber.runtime.ObjectFactory;
import org.junit.Test;

import static org.junit.Assert.assertNotNull;
Expand Down

0 comments on commit 450cc84

Please sign in to comment.