diff --git a/src/main/java/cactusServer/entities/Instance.java b/src/main/java/cactusServer/entities/Instance.java index cf4504b..d324b19 100644 --- a/src/main/java/cactusServer/entities/Instance.java +++ b/src/main/java/cactusServer/entities/Instance.java @@ -28,7 +28,7 @@ public class Instance extends Entity { private String name; private State state; - private StageModel stage; + private String stage; private HashMap areaMap = new HashMap<>(); private HashMap objMap = new HashMap<>(); @@ -43,7 +43,7 @@ * (�����͌����_�ł̉��̂���) * @param name �C���X�^���X�� */ - public Instance(String name, State state, StageModel stageModel) { + public Instance(String name, State state, String stageModel) { setName(name); setState(state); setStage(stageModel); @@ -57,7 +57,7 @@ return state; } - public StageModel getStage() { + public String getStage() { return stage; } @@ -99,7 +99,7 @@ this.state = state; } - public void setStage(StageModel stage) { + public void setStage(String stage) { this.stage = stage; } diff --git a/src/main/java/cactusServer/models/Instances.java b/src/main/java/cactusServer/models/Instances.java index 6d44cf2..45039ed 100644 --- a/src/main/java/cactusServer/models/Instances.java +++ b/src/main/java/cactusServer/models/Instances.java @@ -53,7 +53,7 @@ * @param stageModel * @return */ - public IDAddressedEntity createInstance(String name, Instance.State state, StageModel stageModel) { + public IDAddressedEntity createInstance(String name, Instance.State state, String stageModel) { String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, instanceMap.keySet()); Instance instance = new Instance(name, state, stageModel); instanceMap.put(id, instance); diff --git a/src/main/java/cactusServer/resources/InstancesRest.java b/src/main/java/cactusServer/resources/InstancesRest.java index 38e6427..ebd3de6 100644 --- a/src/main/java/cactusServer/resources/InstancesRest.java +++ b/src/main/java/cactusServer/resources/InstancesRest.java @@ -3,6 +3,9 @@ import java.util.HashSet; import java.util.Map; +import javax.validation.Valid; +import javax.ws.rs.BeanParam; +import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.FormParam; import javax.ws.rs.GET; @@ -14,6 +17,8 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; +import org.glassfish.jersey.process.internal.RequestScoped; + import cactusServer.entities.AddressedEntity; import cactusServer.entities.Angle; import cactusServer.entities.Area; @@ -32,6 +37,7 @@ @Path("/instances") +@RequestScoped public class InstancesRest { public static final String INSTANCES_URI = "/CactusServer/rest/instances"; public InstancesRest() { @@ -91,34 +97,35 @@ -// @POST -// @Produces(MediaType.APPLICATION_JSON) -// public URIAddressedEntity create(@FormParam("name") String name, @FormParam("state") Instance.State state, @FormParam("stageModel") StageModel stageModel) { -// IDAddressedEntity ae = Instances.getInstance().createInstance(name, state, stageModel); -// return new URIAddressedEntity((INSTANCES_URI + "/" + ae.getId()), ae.getBody()); -// } -// -// @Path("/{instanceId}/areas") -// @POST -// @Produces(MediaType.APPLICATION_JSON) -// public URIAddressedEntity create(@PathParam("instanceId") String instanceId, @FormParam("name") String name, -// @FormParam("region") Plain[] region, @FormParam("permissions") HashSet permissions) { -// Instance instance = Instances.getInstance().getInstance(instanceId); -// IDAddressedEntity ae = instance.createArea(name, region, permissions); -// return new URIAddressedEntity((INSTANCES_URI + "/" + instanceId + "/areas/" + ae.getId()), ae.getBody()); -// } -// -// @Path("/{instanceId}/objects") -// @POST -// @Produces(MediaType.APPLICATION_JSON) -// public URIAddressedEntity create(@PathParam("instanceId") String instanceId, @FormParam("position") Position3D position, -// @FormParam("velocity") Velocity3D velocity, @FormParam("angularVelocity") AngularVelocity3D angularVelocity, -// @FormParam("angle") Angle angle, @FormParam("attribute") Attribute attribute, @FormParam("model") ObjectModel model) { -// Instance instance = Instances.getInstance().getInstance(instanceId); -// IDAddressedEntity ae = instance.createObject(position, velocity, angularVelocity, angle, attribute, model); -// return new URIAddressedEntity((INSTANCES_URI + "/" + instanceId + "/objects/" + ae.getId()), ae.getBody()); -// } -// + @POST + @Produces(MediaType.APPLICATION_JSON) + public URIAddressedEntity create(@FormParam("int") int a, @FormParam("name") String name, @FormParam("state") Instance.State state, @FormParam("stageModel") String stageModel) { + System.out.println(a); + IDAddressedEntity ae = Instances.getInstance().createInstance(name, Instance.State.AVAILABLE, "11111"); + return new URIAddressedEntity((INSTANCES_URI + "/" + ae.getId()), ae.getBody()); + } + + @Path("/{instanceId}/areas") + @POST + @Produces(MediaType.APPLICATION_JSON) + public URIAddressedEntity createArea(@PathParam("instanceId") String instanceId, @FormParam("name") String name, + @FormParam("region") Plain[] region, @FormParam("permissions") HashSet permissions) { + Instance instance = Instances.getInstance().getInstance(instanceId); + IDAddressedEntity ae = instance.createArea(name, region, permissions); + return new URIAddressedEntity((INSTANCES_URI + "/" + instanceId + "/areas/" + ae.getId()), ae.getBody()); + } + + @Path("/{instanceId}/objects") + @POST + @Produces(MediaType.APPLICATION_JSON) + public URIAddressedEntity create(@PathParam("instanceId") String instanceId, @FormParam("position") Position3D position, + @FormParam("velocity") Velocity3D velocity, @FormParam("angularVelocity") AngularVelocity3D angularVelocity, + @FormParam("angle") Angle angle, @FormParam("attribute") Attribute attribute, @FormParam("model") ObjectModel model) { + Instance instance = Instances.getInstance().getInstance(instanceId); + IDAddressedEntity ae = instance.createObject(position, velocity, angularVelocity, angle, attribute, model); + return new URIAddressedEntity((INSTANCES_URI + "/" + instanceId + "/objects/" + ae.getId()), ae.getBody()); + } + // @DELETE // @Path("/destroyInstance") diff --git a/src/main/java/cactusServer/utils/JSONConsumer.java b/src/main/java/cactusServer/utils/JSONConsumer.java index 5f55da4..c61d8a2 100644 --- a/src/main/java/cactusServer/utils/JSONConsumer.java +++ b/src/main/java/cactusServer/utils/JSONConsumer.java @@ -22,8 +22,8 @@ * @author student * */ -@Provider -@Consumes(MediaType.APPLICATION_JSON) +//@Provider +//@Consumes(MediaType.APPLICATION_JSON) public class JSONConsumer implements MessageBodyReader { @Override public boolean isReadable(Class type, java.lang.reflect.Type genericType, diff --git a/src/main/java/cactusServer/utils/MyParamConverter.java b/src/main/java/cactusServer/utils/MyParamConverter.java index 9ee58fe..9f2cd8e 100644 --- a/src/main/java/cactusServer/utils/MyParamConverter.java +++ b/src/main/java/cactusServer/utils/MyParamConverter.java @@ -5,20 +5,20 @@ import cactusServer.entities.StageModel; import net.arnx.jsonic.JSON; -public class MyParamConverter implements ParamConverter { -// private Class type; -// -// public MyParamConverter(Class type) { -// this.type = type; -// } - - @Override - public StageModel fromString(String value) { - return JSON.decode(value, StageModel.class); +public class MyParamConverter implements ParamConverter { + private Class type; + + public MyParamConverter(Class type) { + this.type = type; } @Override - public String toString(StageModel obj) { + public Object fromString(String value) { + return JSON.decode(value, type); + } + + @Override + public String toString(Object obj) { return JSON.encode(obj); } } diff --git a/src/main/java/cactusServer/utils/MyParamConverterProvider.java b/src/main/java/cactusServer/utils/MyParamConverterProvider.java index c6edafc..fb79a8e 100644 --- a/src/main/java/cactusServer/utils/MyParamConverterProvider.java +++ b/src/main/java/cactusServer/utils/MyParamConverterProvider.java @@ -5,15 +5,16 @@ import javax.ws.rs.ext.ParamConverter; import javax.ws.rs.ext.ParamConverterProvider; +import javax.ws.rs.ext.Provider; import cactusServer.entities.StageModel; +@Provider public class MyParamConverterProvider implements ParamConverterProvider { @Override public ParamConverter getConverter(Class rawType, Type genericType, Annotation[] annotations) { - // return (ParamConverter) new MyParamConverter(rawType); - if (rawType.equals(StageModel.class)) { - return (ParamConverter) new MyParamConverter(); + if (rawType != null && !rawType.equals(String.class)) { + return (ParamConverter) new MyParamConverter(rawType); } return null; }