Skip to content

Commit

Permalink
Remove the ability to set the production executor on a component buil…
Browse files Browse the repository at this point in the history
…der.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=119156103
  • Loading branch information
jbeder authored and ronshapiro committed Apr 20, 2016
1 parent 0173339 commit 5db92fe
Showing 27 changed files with 208 additions and 508 deletions.
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@
import com.google.common.util.concurrent.ListenableFuture;
import dagger.producers.ProductionComponent;

@ProductionComponent(modules = DependedProducerModule.class)
@ProductionComponent(modules = {ExecutorModule.class, DependedProducerModule.class})
interface DependedProductionComponent {
ListenableFuture<Integer> numGreetings();
}
Original file line number Diff line number Diff line change
@@ -21,8 +21,9 @@
import java.util.List;

@ProductionComponent(
modules = DependentProducerModule.class,
dependencies = {DependedComponent.class, DependedProductionComponent.class})
modules = {ExecutorModule.class, DependentProducerModule.class},
dependencies = {DependedComponent.class, DependedProductionComponent.class}
)
interface DependentComponent {
ListenableFuture<List<String>> greetings();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/*
* Copyright (C) 2016 Google, Inc.
*
* 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 producerstest;

import com.google.common.util.concurrent.MoreExecutors;
import dagger.Module;
import dagger.Provides;
import dagger.producers.Production;
import java.util.concurrent.Executor;

/**
* A module that provides an optionally user-defined executor for a production component, defaulting
* to the direct executor.
*/
@Module
public final class ExecutorModule {
private final Executor executor;

public ExecutorModule() {
this(MoreExecutors.directExecutor());
}

public ExecutorModule(Executor executor) {
this.executor = executor;
}

@Provides
@Production
Executor executor() {
return executor;
}
}
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@
import com.google.common.util.concurrent.ListenableFuture;
import dagger.producers.ProductionComponent;

@ProductionComponent(modules = ResponseProducerModule.class)
@ProductionComponent(modules = {ExecutorModule.class, ResponseProducerModule.class})
interface SimpleComponent {
ListenableFuture<Response> response();
}
Original file line number Diff line number Diff line change
@@ -17,12 +17,16 @@

import com.google.common.util.concurrent.ListenableFuture;
import dagger.producers.ProductionComponent;
import producerstest.ExecutorModule;

/**
* A component that contains entry points that exercise different execution paths, for verifying the
* behavior when the executor throws a {@link java.util.concurrent.RejectedExecutionException}.
*/
@ProductionComponent(dependencies = ComponentDependency.class, modules = SimpleProducerModule.class)
@ProductionComponent(
dependencies = ComponentDependency.class,
modules = {ExecutorModule.class, SimpleProducerModule.class}
)
interface SimpleComponent {
/** An entry point exposing a producer method with no args. */
ListenableFuture<String> noArgStr();
Original file line number Diff line number Diff line change
@@ -17,10 +17,10 @@

import com.google.common.util.concurrent.ListenableFuture;
import dagger.producers.ProductionComponent;
import java.util.concurrent.Executor;
import producerstest.ExecutorModule;

@ProductionComponent(
modules = {StringModule.class, IntModule.class},
modules = {ExecutorModule.class, StringModule.class, IntModule.class},
dependencies = DepComponent.class
)
interface TestComponentWithBuilder {
@@ -31,7 +31,6 @@ interface TestComponentWithBuilder {
interface Builder {
Builder depComponent(DepComponent depComponent);
Builder strModule(StringModule strModule);
Builder executor(Executor executor);
TestComponentWithBuilder build();
}
}
Original file line number Diff line number Diff line change
@@ -17,8 +17,11 @@

import com.google.common.util.concurrent.ListenableFuture;
import dagger.producers.ProductionComponent;
import producerstest.ExecutorModule;

@ProductionComponent(modules = {MonitoringModule.class, StubModule.class, ServingModule.class})
@ProductionComponent(
modules = {ExecutorModule.class, MonitoringModule.class, StubModule.class, ServingModule.class}
)
interface MonitoredComponent {
ListenableFuture<String> output();
}
Original file line number Diff line number Diff line change
@@ -21,11 +21,12 @@
import dagger.producers.ProductionComponent;
import java.util.Map;
import java.util.Set;
import producerstest.ExecutorModule;
import producerstest.multibindings.Qualifiers.ObjCount;
import producerstest.multibindings.Qualifiers.PossiblyThrowingMap;
import producerstest.multibindings.Qualifiers.PossiblyThrowingSet;

@ProductionComponent(modules = MultibindingProducerModule.class)
@ProductionComponent(modules = {ExecutorModule.class, MultibindingProducerModule.class})
interface MultibindingComponent {
ListenableFuture<Set<String>> strs();
ListenableFuture<Integer> strCount();
Original file line number Diff line number Diff line change
@@ -18,8 +18,9 @@
import com.google.common.util.concurrent.ListenableFuture;
import dagger.producers.ProductionComponent;
import java.util.Set;
import producerstest.ExecutorModule;

@ProductionComponent(modules = {ScopedModule.class, SetProducerModule.class})
@ProductionComponent(modules = {ExecutorModule.class, ScopedModule.class, SetProducerModule.class})
interface SetComponent {
ScopedObject scopedObject();

This file was deleted.

Original file line number Diff line number Diff line change
@@ -17,15 +17,14 @@

import com.google.common.util.concurrent.ListenableFuture;
import dagger.producers.ProductionSubcomponent;
import java.util.concurrent.Executor;
import producerstest.ExecutorModule;

@ProductionSubcomponent(modules = ChildModule.class)
@ProductionSubcomponent(modules = {ExecutorModule.class, ChildModule.class})
public interface ChildComponent {
ListenableFuture<String> str();

@ProductionSubcomponent.Builder
interface Builder {
Builder executor(Executor executor);
ChildComponent build();
}
}
Original file line number Diff line number Diff line change
@@ -17,7 +17,6 @@

import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -27,30 +26,24 @@
@RunWith(JUnit4.class)
public class DependentTest {
@Test public void dependentComponent() throws Exception {
DependentComponent dependentComponent = DaggerDependentComponent
.builder()
.dependedProductionComponent(DaggerDependedProductionComponent.builder()
.executor(MoreExecutors.directExecutor())
.build())
.dependedComponent(DaggerDependedComponent.create())
.executor(MoreExecutors.directExecutor())
.build();
DependentComponent dependentComponent =
DaggerDependentComponent.builder()
.dependedProductionComponent(DaggerDependedProductionComponent.create())
.dependedComponent(DaggerDependedComponent.create())
.build();
assertThat(dependentComponent).isNotNull();
assertThat(dependentComponent.greetings().get()).containsExactly(
"2", "Hello world!", "HELLO WORLD!");
}

@Test public void reuseBuilderWithDependentComponent() throws Exception {
DaggerDependentComponent.Builder dependentComponentBuilder = DaggerDependentComponent
.builder()
.executor(MoreExecutors.directExecutor());
DaggerDependentComponent.Builder dependentComponentBuilder = DaggerDependentComponent.builder();

DependentComponent componentUsingComponents = dependentComponentBuilder
.dependedProductionComponent(DaggerDependedProductionComponent.builder()
.executor(MoreExecutors.directExecutor())
.build())
.dependedComponent(DaggerDependedComponent.create())
.build();
DependentComponent componentUsingComponents =
dependentComponentBuilder
.dependedProductionComponent(DaggerDependedProductionComponent.create())
.dependedComponent(DaggerDependedComponent.create())
.build();

DependentComponent componentUsingJavaImpls = dependentComponentBuilder
.dependedProductionComponent(new DependedProductionComponent() {
Original file line number Diff line number Diff line change
@@ -15,7 +15,6 @@
*/
package producerstest;

import com.google.common.util.concurrent.MoreExecutors;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -25,10 +24,7 @@
@RunWith(JUnit4.class)
public class SimpleTest {
@Test public void testSimpleComponent() throws Exception {
SimpleComponent simpleComponent = DaggerSimpleComponent
.builder()
.executor(MoreExecutors.directExecutor())
.build();
SimpleComponent simpleComponent = DaggerSimpleComponent.create();
assertThat(simpleComponent).isNotNull();
assertThat(simpleComponent.response().get().data()).isEqualTo("Hello, Request #5!");
}
Loading

0 comments on commit 5db92fe

Please sign in to comment.