diff --git a/src/main/java/cactusServer/entities/Instance.java b/src/main/java/cactusServer/entities/Instance.java index 7a5ff6c..c1457dd 100644 --- a/src/main/java/cactusServer/entities/Instance.java +++ b/src/main/java/cactusServer/entities/Instance.java @@ -139,21 +139,21 @@ this.stage = stage; } - public AddressedEntity createArea(String name, Plain[] region, HashSet permissions) { + public IDAddressedEntity createArea(String name, Plain[] region, HashSet permissions) { String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, areaMap.keySet()); Area area = new Area(name, region, permissions); areaMap.put(id, area); return new IDAddressedEntity(id, area); } - public AddressedEntity createObject(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, Angle angle, Attribute attribute, ObjectModel model) { + public IDAddressedEntity createObject(Position3D position, Velocity3D velocity, AngularVelocity3D angularVelocity, Angle angle, Attribute attribute, ObjectModel model) { String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, objMap.keySet()); Object object = new Object(position, velocity, angularVelocity, angle, attribute, model); objMap.put(id, object); return new IDAddressedEntity(id, object); } - public AddressedEntity createCharacter(String accountURI, String name, Position3D position, Angle angle, CharacterModel model) { + public IDAddressedEntity createCharacter(String accountURI, String name, Position3D position, Angle angle, CharacterModel model) { String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, characterMap.keySet()); // String characterURI = (INSTANCE_URI + "/characters/" + id); Character character = new Character(accountURI, name, position, angle, model); diff --git a/src/main/java/cactusServer/models/Instances.java b/src/main/java/cactusServer/models/Instances.java index 377c738..03ae549 100644 --- a/src/main/java/cactusServer/models/Instances.java +++ b/src/main/java/cactusServer/models/Instances.java @@ -51,28 +51,14 @@ * @param stageModel * @return */ - public AddressedEntity createInstance(String name, Instance.State state, StageModel stageModel) { + public IDAddressedEntity createInstance(String name, Instance.State state, StageModel stageModel) { String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, instanceMap.keySet()); Instance instance = new Instance(name, state, stageModel); instanceMap.put(id, instance); return new IDAddressedEntity(id, instance); } - /** - * InstancesRest�Ƃ̃G���[�����p (��ŏ���) - * - * @param instance - * @return �V�����쐬���ꂽID��Instance��Map - */ - public Map createInstance(Instance instance) { - String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, instanceMap.keySet()); - instanceMap.put(id, instance); - return new HashMap() { - {put(id, instance);} - }; - } - - public AddressedEntity createPlayer(String instanceURI, String characterURI, CameraState cameraState, EmoteState.EmoteType animationClassToStart) { + public IDAddressedEntity createPlayer(String instanceURI, String characterURI, CameraState cameraState, EmoteState.EmoteType animationClassToStart) { String id = RandomStringGenerator.generateUniqueString(UNIQUE_ID_LENGTH, RandomStringGenerator.ALPHA_NUMERIC, playerMap.keySet()); Player player = new Player(instanceURI, characterURI, cameraState, animationClassToStart); playerMap.put(id, player); diff --git a/src/main/java/cactusServer/resources/InstancesRest.java b/src/main/java/cactusServer/resources/InstancesRest.java index cfe6fd9..0d803e9 100644 --- a/src/main/java/cactusServer/resources/InstancesRest.java +++ b/src/main/java/cactusServer/resources/InstancesRest.java @@ -1,5 +1,6 @@ package cactusServer.resources; +import java.util.HashSet; import java.util.Map; import javax.ws.rs.DELETE; @@ -13,46 +14,75 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; +import cactusServer.entities.AddressedEntity; +import cactusServer.entities.Angle; +import cactusServer.entities.Area; +import cactusServer.entities.Area.Allowed; +import cactusServer.entities.IDAddressedEntity; import cactusServer.entities.Instance; +import cactusServer.entities.Object.Attribute; +import cactusServer.entities.ObjectModel; +import cactusServer.entities.Plain; +import cactusServer.entities.StageModel; +import cactusServer.entities.URIAddressedEntity; import cactusServer.models.Instances; +import framework.model3D.Position3D; +import framework.physics.AngularVelocity3D; +import framework.physics.Velocity3D; @Path("/instances") public class InstancesRest { + public static final String INSTANCES_URI = "CactusServer/instances"; public InstancesRest() { } - /* - @Path("/test") - @GET - @Produces(MediaType.TEXT_PLAIN) - public String hoge() { - return "deploy jenkins from tomcat"; - } + +// @Path("/test") +// @GET +// @Produces(MediaType.TEXT_PLAIN) +// public String hoge() { +// return "deploy jenkins from tomcat"; +// } @Path("/{instanceId}") @GET @Produces(MediaType.APPLICATION_JSON) public Instance getInstance(@PathParam("instanceId") String instanceId) { return Instances.getInstance().getInstance(instanceId); - }*/ + } -// @Path("/areas") -// @GET -// @Produces(MediaType.APPLICATION_JSON) -// public Instance getArea(@QueryParam("areaId") String areaId) { -// return null; -// } + @Path("/{instanceId}/areas/{areaId}") + @GET + @Produces(MediaType.APPLICATION_JSON) + public Area getArea(@PathParam("instanceId") String instanceId, @PathParam("areaId") String areaId) { + Instance instance = Instances.getInstance().getInstance(instanceId); + if (instance != null) { + return instance.getArea(areaId); + } + return null; + } - + @Path("/{instanceId}/objects/{objectId}") + @GET + @Produces(MediaType.APPLICATION_JSON) + public Object getObject(@PathParam("instanceId") String instanceId, @PathParam("objectId") String objectId) { + Instance instance = Instances.getInstance().getInstance(instanceId); + if (instance != null) { + return instance.getObject(objectId); + } + return null; + } + + // @GET // @Path("/characters") // @Produces(MediaType.APPLICATION_JSON) // public Instance getCharacter(@QueryParam("AccountUniqueId") String AccountUniqueId) { // return Instances.getInstance().getCharacter(AccountUniqueId); // } -// + // // @POST // @Path("/{createCharacter}") @@ -60,31 +90,50 @@ // public Instance createCharacter(@QueryParam("characterUniqueId") String characterUniqueId) { // return Instances.getInstance().createCharacter(characterUniqueId); // } - +// @POST @Produces(MediaType.APPLICATION_JSON) - public Map create(@FormParam("name") String name) { - Instance instance = new Instance(name); - return Instances.getInstance().createInstance(instance); + 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()); } - - - /* - @DELETE - @Path("/destroyInstance") + @Path("/{instanceId}/areas") + @POST @Produces(MediaType.APPLICATION_JSON) - public Instance destroy(@QueryParam("instanceId") String instanceId) { - return Instances.getInstance().destroyInstance(instanceId); - }*/ + 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()); + } + + +// @DELETE +// @Path("/destroyInstance") +// @Produces(MediaType.APPLICATION_JSON) +// public Instance destroy(@QueryParam("instanceId") String instanceId) { +// return Instances.getInstance().destroyInstance(instanceId); +// } // // @Path("/{instanceId}") // @PUT -// public Instance putInstance(@PathParam("InstanceId") String instanceId, @FormParam("areaId") int areaId, -// @FormParam("objectId") int objectId, @FormParam("characterId") String characterId) { +// public Instance putInstance(@PathParam("InstanceId") String instanceId, @FormParam("areaId") String areaId, +// @FormParam("objectId") String objectId, @FormParam("characterId") String characterId) { // // }