/*
* Copyright 2012 Jason Miller
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package jj.script;
import static jj.server.ServerLocation.Virtual;
import static org.mockito.Mockito.mock;
import javax.inject.Provider;
import jj.event.MockPublisher;
import jj.resource.MockAbstractResourceDependencies;
import jj.resource.MockResourceIdentifierMaker;
import jj.resource.ResourceFinder;
import jj.script.AbstractScriptEnvironment.AbstractScriptEnvironmentDependencies;
/**
* @author jason
*
*/
public class MockAbstractScriptEnvironmentDependencies extends AbstractScriptEnvironment.Dependencies {
public static class MockInnerAbstractScriptEnvironmentDependencies extends AbstractScriptEnvironmentDependencies {
public MockInnerAbstractScriptEnvironmentDependencies() {
this(new MockRhinoContextProvider());
}
MockInnerAbstractScriptEnvironmentDependencies(Provider<RhinoContext> rhinoContextProvider) {
super(
mock(ContinuationCoordinator.class),
mock(ContinuationPendingCache.class),
mock(MockPendingKeyProvider.class),
mock(RequireInnerFunction.class),
mock(InjectFunction.class),
mock(Timers.class),
rhinoContextProvider
);
}
public MockRhinoContextProvider mockRhinoContextProvider() {
return (MockRhinoContextProvider)contextProvider;
}
}
public interface MockPendingKeyProvider extends Provider<PendingKey> {}
public <T extends ScriptEnvironment<Void>> MockAbstractScriptEnvironmentDependencies(
Class<T> environmentType,
String name
) {
super(
new MockAbstractResourceDependencies.MockInnerAbstractResourceDependencies(),
new MockInnerAbstractScriptEnvironmentDependencies(),
new MockResourceIdentifierMaker().make(environmentType, Virtual, name, null)
);
}
public <T extends ScriptEnvironment<Void>> MockAbstractScriptEnvironmentDependencies(
Class<T> environmentType,
String name,
ResourceFinder resourceFinder
) {
super(
new MockAbstractResourceDependencies.MockInnerAbstractResourceDependencies(resourceFinder),
new MockInnerAbstractScriptEnvironmentDependencies(),
new MockResourceIdentifierMaker().make(environmentType, Virtual, name, null)
);
}
public <T extends ScriptEnvironment<Void>> MockAbstractScriptEnvironmentDependencies(
Class<T> environmentType,
String name,
RealRhinoContextProvider rhinoContextProvider
) {
super(
new MockAbstractResourceDependencies.MockInnerAbstractResourceDependencies(),
new MockInnerAbstractScriptEnvironmentDependencies(rhinoContextProvider),
new MockResourceIdentifierMaker().make(environmentType, Virtual, name, null)
);
}
public <A, T extends ScriptEnvironment<A>> MockAbstractScriptEnvironmentDependencies(
Class<T> environmentType,
String name,
A argument
) {
super(
new MockAbstractResourceDependencies.MockInnerAbstractResourceDependencies(),
new MockInnerAbstractScriptEnvironmentDependencies(),
new MockResourceIdentifierMaker().make(environmentType, Virtual, name, argument)
);
}
public <A, T extends ScriptEnvironment<A>> MockAbstractScriptEnvironmentDependencies(
Class<T> environmentType,
String name,
A argument,
RealRhinoContextProvider rhinoContextProvider
) {
super(
new MockAbstractResourceDependencies.MockInnerAbstractResourceDependencies(),
new MockInnerAbstractScriptEnvironmentDependencies(rhinoContextProvider),
new MockResourceIdentifierMaker().make(environmentType, Virtual, name, argument)
);
}
public ContinuationCoordinator continuationCoordinator() {
return scriptEnvironmentDependencies.continuationCoordinator;
}
public MockPublisher publisher() {
return ((MockAbstractResourceDependencies.MockInnerAbstractResourceDependencies)abstractResourceDependencies).publisher();
}
public ResourceFinder resourceFinder() {
return ((MockAbstractResourceDependencies.MockInnerAbstractResourceDependencies)abstractResourceDependencies).resourceFinder();
}
public MockRhinoContextProvider mockRhinoContextProvider() {
return (MockRhinoContextProvider)scriptEnvironmentDependencies.contextProvider;
}
}