Skip to content

Commit

Permalink
servlet injection
Browse files Browse the repository at this point in the history
  • Loading branch information
eschultink committed May 23, 2024
1 parent eb96252 commit e31594e
Show file tree
Hide file tree
Showing 8 changed files with 72 additions and 48 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,21 @@
import com.google.appengine.tools.pipeline.impl.backend.*;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.datastore.DatastoreOptions;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import lombok.SneakyThrows;

import javax.inject.Singleton;

//TODO: split internals v stuff that can be re-used by others
@Module
@Module(
includes = DefaultDIModule.Bindings.class
)
public class DefaultDIModule {

@Provides @Singleton
@Provides
@Singleton
@SneakyThrows
AppEngineBackEnd.Options appEngineBackEndOptions() {
return AppEngineBackEnd.Options.builder()
Expand All @@ -26,40 +30,47 @@ AppEngineBackEnd.Options appEngineBackEndOptions() {
.build();
}

@Provides @Singleton
@Provides
@Singleton
PipelineBackEnd pipelineBackEnd(AppEngineBackEnd appEngineBackEnd) {
return appEngineBackEnd;
}

@Provides @Singleton
PipelineBackEnd.Options backendOptions(AppEngineBackEnd.Options options) {
return options;
}


@Provides @Singleton
@Provides
@Singleton
AppEngineEnvironment appEngineEnvironment() {
return new AppEngineStandardGen2();
}

@Provides @Singleton
@Provides
@Singleton
AppEngineTaskQueue appEngineTaskQueue() {
return new AppEngineTaskQueue();
}
@Provides @Singleton

@Provides
@Singleton
AppEngineBackEnd appEngineBackEnd(AppEngineBackEnd.Options options,
AppEngineTaskQueue appEngineTaskQueue) {
return new AppEngineBackEnd(options.getDatastoreOptions().getService(), appEngineTaskQueue);
}

@Provides @Singleton
@Provides
@Singleton
PipelineManager pipelineManager(AppEngineBackEnd backend) {
return new PipelineManager(backend);
}

@Provides @Singleton
PipelineRunner pipelineRunner(PipelineManager pipelineManager) {
return pipelineManager;
}

@Module
interface Bindings {
@Binds
PipelineBackEnd.Options backendOptions(AppEngineBackEnd.Options options);

@Binds
PipelineRunner pipelineRunner(PipelineManager pipelineManager);

@Binds
PipelineOrchestrator pipelineOrchestrator(PipelineManager pipelineManager);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,15 @@

import com.google.appengine.tools.pipeline.NoSuchObjectException;
import com.google.appengine.tools.pipeline.PipelineOrchestrator;
import com.google.appengine.tools.pipeline.PipelineRunner;
import com.google.appengine.tools.pipeline.impl.PipelineManager;

import lombok.RequiredArgsConstructor;

import java.io.IOException;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import javax.inject.Inject;
/**
* @author ozarov@google.com (Arie Ozarov)
*/
Expand All @@ -35,7 +34,8 @@ public class AbortJobHandler {
public static final String PATH_COMPONENT = "rpc/abort";
private static final String ROOT_PIPELINE_ID = "root_pipeline_id";

private final PipelineOrchestrator pipelineManager;
@Inject
PipelineOrchestrator pipelineManager;

public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException, ServletException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,27 @@

import com.google.appengine.tools.pipeline.NoSuchObjectException;
import com.google.appengine.tools.pipeline.PipelineRunner;
import com.google.appengine.tools.pipeline.impl.PipelineManager;
import lombok.RequiredArgsConstructor;
import lombok.AllArgsConstructor;

import java.io.IOException;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import javax.inject.Inject;

/**
* @author ozarov@google.com (Arie Ozarov)
*/
@RequiredArgsConstructor
@AllArgsConstructor
public class DeleteJobHandler {

public static final String PATH_COMPONENT = "rpc/delete";
private static final String ROOT_PIPELINE_ID = "root_pipeline_id";

private final PipelineRunner pipelineManager;
@Inject
PipelineRunner pipelineManager;

public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException, ServletException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,25 +18,27 @@
import static java.util.Collections.singletonMap;

import com.google.appengine.tools.pipeline.PipelineRunner;
import com.google.appengine.tools.pipeline.impl.PipelineManager;
import lombok.RequiredArgsConstructor;

import lombok.AllArgsConstructor;

import java.io.IOException;
import java.util.Set;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import javax.inject.Inject;

/**
* @author rudominer@google.com (Mitch Rudominer)
*/
@RequiredArgsConstructor
@AllArgsConstructor
public class JsonClassFilterHandler {

public static final String PATH_COMPONENT = "rpc/class_paths";


private final PipelineRunner pipelineManager;
@Inject
PipelineRunner pipelineManager;

public void doGet(@SuppressWarnings("unused") HttpServletRequest req,
HttpServletResponse resp) throws IOException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,31 @@
package com.google.appengine.tools.pipeline.impl.servlets;

import com.google.appengine.tools.pipeline.PipelineRunner;
import com.google.appengine.tools.pipeline.impl.PipelineManager;
import com.google.appengine.tools.pipeline.impl.model.JobRecord;
import com.google.appengine.tools.pipeline.util.Pair;
import lombok.RequiredArgsConstructor;
import lombok.AllArgsConstructor;

import java.io.IOException;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import javax.inject.Inject;

/**
* @author tkaitchuck@google.com (Tom Kaitchuck)
*/
@RequiredArgsConstructor
@AllArgsConstructor
public class JsonListHandler {

public static final String PATH_COMPONENT = "rpc/list";
private static final String CLASS_FILTER_PARAMETER = "class_path";
private static final String CURSOR_PARAMETER = "cursor";
private static final String LIMIT_PARAMETER = "limit";

private final PipelineRunner pipelineManager;
@Inject
PipelineRunner pipelineManager;

public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

import com.google.appengine.tools.pipeline.NoSuchObjectException;
import com.google.appengine.tools.pipeline.PipelineRunner;
import com.google.appengine.tools.pipeline.impl.PipelineManager;
import com.google.appengine.tools.pipeline.impl.model.JobRecord;
import com.google.appengine.tools.pipeline.impl.model.PipelineObjects;
import lombok.RequiredArgsConstructor;
Expand All @@ -26,6 +25,7 @@
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import javax.inject.Inject;

/**
* @author rudominer@google.com (Mitch Rudominer)
Expand All @@ -37,7 +37,8 @@ public class JsonTreeHandler {
private static final String ROOT_PIPELINE_ID = "root_pipeline_id";


private final PipelineRunner pipelineManager;
@Inject
PipelineRunner pipelineManager;

public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,17 @@ private Pair<String, RequestType> parseRequestType(HttpServletRequest req) {
return Pair.of(path, requestType);
}

@Inject
transient AbortJobHandler abortJobHandler;
@Inject
transient DeleteJobHandler deleteJobHandler;
@Inject
transient JsonClassFilterHandler jsonClassFilterHandler;
@Inject
transient JsonListHandler jsonListHandler;
@Inject
transient JsonTreeHandler jsonTreeHandler;
@Inject
transient TaskHandler taskHandler;

@Inject
Expand All @@ -113,16 +119,16 @@ public void init() throws ServletException {

// TODO: fix this? may have second copy IF user overrides; OK?
if (pipelineManager == null) {
DIUtil.inject(DaggerDefaultContainer.class, this);
if (DIUtil.isInjectable(this)) {
DIUtil.inject(this);
} else {
//rely on a default
DIUtil.inject(DaggerDefaultContainer.class, this);
}
}

//TODO: move these to DI?
abortJobHandler = new AbortJobHandler((PipelineOrchestrator) pipelineManager);
deleteJobHandler = new DeleteJobHandler(pipelineManager);
jsonClassFilterHandler = new JsonClassFilterHandler(pipelineManager);
jsonListHandler = new JsonListHandler(pipelineManager);
jsonTreeHandler = new JsonTreeHandler(pipelineManager);
taskHandler = new TaskHandler((PipelineManager) pipelineManager);

}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,11 @@

package com.google.appengine.tools.pipeline.impl.servlets;

import com.google.appengine.tools.pipeline.PipelineOrchestrator;
import com.google.appengine.tools.pipeline.PipelineRunner;
import com.google.appengine.tools.pipeline.impl.PipelineManager;
import com.google.appengine.tools.pipeline.impl.tasks.Task;
import com.google.appengine.tools.pipeline.impl.util.StringUtils;
import com.google.apphosting.api.ApiProxy;
import lombok.RequiredArgsConstructor;
import lombok.AllArgsConstructor;

import java.util.Enumeration;
import java.util.Map;
Expand All @@ -29,13 +27,14 @@

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import javax.inject.Inject;

/**
* A ServletHelper that handles all requests from the task queue.
*
* @author rudominer@google.com (Mitch Rudominer)
*/
@RequiredArgsConstructor
@AllArgsConstructor
public class TaskHandler {

private static Logger logger = Logger.getLogger(TaskHandler.class.getName());
Expand All @@ -45,7 +44,8 @@ public class TaskHandler {
public static final String TASK_RETRY_COUNT_HEADER = "X-AppEngine-TaskRetryCount";
public static final String TASK_QUEUE_NAME_HEADER = "X-AppEngine-QueueName";

private final PipelineManager pipelineManager;
@Inject
PipelineManager pipelineManager;

public static String handleTaskUrl() {
return PipelineServlet.baseUrl() + PATH_COMPONENT;
Expand Down

0 comments on commit e31594e

Please sign in to comment.