diff --git a/src/main/java/no/bioforsk/vips/coremanager/VIPSCoreManagerApplication.java b/src/main/java/no/bioforsk/vips/coremanager/VIPSCoreManagerApplication.java index 138b18a7388e1b12ef2cea382251597674670da0..265a7cf2dafe824cffa214c07ce45a6645f71242 100644 --- a/src/main/java/no/bioforsk/vips/coremanager/VIPSCoreManagerApplication.java +++ b/src/main/java/no/bioforsk/vips/coremanager/VIPSCoreManagerApplication.java @@ -39,7 +39,6 @@ public class VIPSCoreManagerApplication extends Application private void addRestResourceClasses(Set<Class<?>> resources) { resources.add(no.bioforsk.vips.core.service.ModelResource.class); resources.add(no.bioforsk.vips.coremanager.service.JsonParseExceptionMapper.class); - resources.add(no.bioforsk.vips.coremanager.service.ManagerResource.class); resources.add(no.bioforsk.vips.coremanager.service.ManagerResourceImpl.class); } } \ No newline at end of file diff --git a/src/main/java/no/bioforsk/vips/coremanager/service/ManagerResourceImpl.java b/src/main/java/no/bioforsk/vips/coremanager/service/ManagerResourceImpl.java index 78b65a75f8bcad9ecedff9a0cfda5146d8819b0a..9b8eac73e5fefe3fbf23ab91145a8fcc7043068d 100644 --- a/src/main/java/no/bioforsk/vips/coremanager/service/ManagerResourceImpl.java +++ b/src/main/java/no/bioforsk/vips/coremanager/service/ManagerResourceImpl.java @@ -5,7 +5,7 @@ import java.io.InputStream; import java.net.URI; import java.net.URISyntaxException; import java.util.Date; -import java.util.List; +import java.util.HashMap; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; @@ -29,7 +29,7 @@ import no.bioforsk.vips.coremanager.entity.ModelUsageLog; import no.bioforsk.vips.coremanager.entity.VIPSCoreCredentials; import no.bioforsk.vips.coremanager.entity.VipsCoreUser; import no.bioforsk.vips.entity.ModelConfiguration; -import no.bioforsk.vips.entity.Result; +import no.bioforsk.vips.entity.ModelRunRequest; import no.bioforsk.vips.model.Model; import no.bioforsk.vips.util.ServletUtil; import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget; @@ -195,7 +195,10 @@ public class ManagerResourceImpl implements ManagerResource{ { try { - VIPSCoreCredentials credentials = ControllerGetter.getUserController().getVIPSCoreCredentials((String)input.get("username"), (String)input.get("password")); + Map<String,String> loginInfo = new HashMap<>(); + loginInfo.put("username", (String)input.get("username")); + loginInfo.put("password", (String)input.get("password")); + VIPSCoreCredentials credentials = ControllerGetter.getUserController().getVIPSCoreCredentials(loginInfo); if(credentials == null) { throw new WebApplicationException(Response.status(Response.Status.UNAUTHORIZED).entity("Not accepted!").build()); @@ -211,7 +214,7 @@ public class ManagerResourceImpl implements ManagerResource{ /** * Instantiates and runs the requested model * @param modelId - * @param config input data for the model + * @param input input data for the model * @return list of result objects */ @POST @@ -219,12 +222,12 @@ public class ManagerResourceImpl implements ManagerResource{ @Consumes("application/json") @Produces("application/json") @Override - public Response runModel(@PathParam("modelId") String modelId, Map<String,Object> input) + public Response runModel(@PathParam("modelId") String modelId, ModelRunRequest request) { try { // First, we authenticate - VIPSCoreCredentials credentials = ControllerGetter.getUserController().getVIPSCoreCredentials((String)input.get("username"), (String)input.get("password")); + VIPSCoreCredentials credentials = ControllerGetter.getUserController().getVIPSCoreCredentials(request.getLoginInfo()); if(credentials == null) { throw new WebApplicationException(Response.status(Response.Status.UNAUTHORIZED).entity("Ikke godtatt!").build()); @@ -238,7 +241,7 @@ public class ManagerResourceImpl implements ManagerResource{ { // TODO: Check IP of caller to be sure that this is not someone // who has hijacked the credentials for the batch system?? - user = ControllerGetter.getUserController().getVipsCoreUser((Integer)input.get("batchSystemClientId")); + user = ControllerGetter.getUserController().getVipsCoreUser(request.getBatchSystemClientId()); } ModelUsageLog log = new ModelUsageLog(); @@ -247,9 +250,11 @@ public class ManagerResourceImpl implements ManagerResource{ log.setTimeStarted(new Date()); // Then we generate the Model Configuration + ModelConfiguration config = new ModelConfiguration(); - config.setModelId(modelId); - config.setConfigParameters((Map<String,Object>)input.get("configParameters")); + config.setModelId(request.getModelId()); + config.setConfigParameters(request.getConfigParameters()); + // Call the backend service, run the model Response resp = this.getModelResource().runModel(modelId, config); @@ -269,9 +274,10 @@ public class ManagerResourceImpl implements ManagerResource{ } else { - List<Result> result = resp.readEntity(List.class); ControllerGetter.getUserController().storeModelUsageLog(log); - return Response.ok().entity(result).build(); + // Assuming that String is the quickest way of forwarding this + String resultAsString = resp.readEntity(String.class); + return Response.ok().entity(resultAsString).build(); } } catch( IOException ioe) diff --git a/src/main/java/no/bioforsk/vips/coremanager/session/UserController.java b/src/main/java/no/bioforsk/vips/coremanager/session/UserController.java index cb2c70002774dee977556b245069d4f501a32b87..838b18aa8ad02d45447eac60a572e3df008a479d 100644 --- a/src/main/java/no/bioforsk/vips/coremanager/session/UserController.java +++ b/src/main/java/no/bioforsk/vips/coremanager/session/UserController.java @@ -2,6 +2,7 @@ package no.bioforsk.vips.coremanager.session; import java.io.IOException; import java.io.InputStream; +import java.util.Map; import java.util.Properties; import javax.ejb.LocalBean; import javax.ejb.Stateless; @@ -34,12 +35,12 @@ public class UserController { * @return The credentials object. null if combination of username and password is not found * @throws IOException */ - public VIPSCoreCredentials getVIPSCoreCredentials(String username, String password) throws IOException + public VIPSCoreCredentials getVIPSCoreCredentials(Map<String,String> loginInfo) throws IOException { Query q = em.createNamedQuery("VIPSCoreCredentials.findByUsernameAndPassword", VIPSCoreCredentials.class); - q.setParameter("username", username); + q.setParameter("username", loginInfo.get("username")); String salt = this.getVIPSCoreServerProperties().getProperty("MD5_SALT"); - q.setParameter("password", MD5Encrypter.getMD5HexString(password,salt)); + q.setParameter("password", MD5Encrypter.getMD5HexString(loginInfo.get("password"),salt)); try { return (VIPSCoreCredentials) q.getSingleResult();