diff --git a/src/main/java/cactusServer/models/Instances.java b/src/main/java/cactusServer/models/Instances.java index 0180e76..04dbad1 100644 --- a/src/main/java/cactusServer/models/Instances.java +++ b/src/main/java/cactusServer/models/Instances.java @@ -1,6 +1,8 @@ package cactusServer.models; import java.util.HashMap; +import java.util.HashSet; + import cactusServer.entities.Instance; /** @@ -11,7 +13,8 @@ */ public class Instances { private static Instances theInstance = null; - private HashMap instanceMap = new HashMap<>(); + private HashMap instanceMap = new HashMap<>(); // instance��ID�Ǝ��̂��Ǘ� + private HashSet instanceIdSet = new HashSet<>(); // �g�p�ς�ID�̏W�� private Instances() { @@ -36,9 +39,13 @@ * Instance�����ʂ����ӂ�ID * @param name * �C���X�^���X�� (��) - * @return �V�����쐬���ꂽInstance + * @return �V�����쐬���ꂽInstance
+ * ������, instanceID���d�������ꍇ�͐V�KInstance���쐬������null��Ԃ� */ public Instance createInstance(String instanceId, String name) { + if (!instanceIdSet.add(instanceId)) { + return null; + } Instance instance = new Instance(name); instanceMap.put(instanceId, instance); return instance; @@ -55,4 +62,15 @@ return instanceMap.get(instanceId); } + /** + * ID�ɑΉ�����Instance��Map����폜���ĕԂ� + * + * @param instanceId + * Instance�����ʂ����ӂ�ID + * @return Map����폜���ꂽInstance + */ + public Instance destroyInstance(String instanceId) { + return instanceMap.remove(instanceId); + } + } diff --git a/src/main/java/cactusServer/utils/JSONConsumer.java b/src/main/java/cactusServer/utils/JSONConsumer.java new file mode 100644 index 0000000..c3b4d23 --- /dev/null +++ b/src/main/java/cactusServer/utils/JSONConsumer.java @@ -0,0 +1,45 @@ +package cactusServer.utils; + +import java.io.IOException; +import java.io.InputStream; +import java.lang.annotation.Annotation; +import java.lang.reflect.Type; + +import javax.validation.constraints.Null; +import javax.ws.rs.Consumes; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.ext.MessageBodyReader; +import javax.ws.rs.ext.Provider; + +import net.arnx.jsonic.JSON; +import net.arnx.jsonic.JSONException; + +@Provider +@Consumes(MediaType.APPLICATION_JSON) +public class JSONConsumer implements MessageBodyReader { + + public boolean isReadable(java.lang.Class type, + java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] + annotations, MediaType mediaType) { + return true; + } + + + @Override + public Object readFrom(Class type, Type genericType, Annotation[] annotations, MediaType mediaType, + MultivaluedMap httpHeaders, InputStream entityStream) throws IOException, WebApplicationException { + // TODO Auto-generated method stub + try { + return JSON.decode(entityStream,genericType); + } catch (JSONException e) { + // TODO Auto-generated catch block + return null; + } catch (IOException e) { + // TODO Auto-generated catch block + return null; + } + } + +} \ No newline at end of file diff --git a/src/main/java/cactusServer/utils/JSONProvider.java b/src/main/java/cactusServer/utils/JSONProvider.java new file mode 100644 index 0000000..09819fb --- /dev/null +++ b/src/main/java/cactusServer/utils/JSONProvider.java @@ -0,0 +1,38 @@ +package cactusServer.utils; + +import java.io.IOException; +import java.io.OutputStream; +import java.lang.annotation.Annotation; +import java.lang.reflect.Type; + +import javax.ws.rs.Produces; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.ext.MessageBodyWriter; +import javax.ws.rs.ext.Provider; + +import net.arnx.jsonic.JSON; + +@Provider() +@Produces(MediaType.APPLICATION_JSON) +public class JSONProvider implements MessageBodyWriter { + @Override + public long getSize(Object arg0, Class arg1, Type arg2, Annotation[] arg3, MediaType arg4) { + try { + return JSON.encode(arg0).getBytes("UTF-8").length; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + @Override + public boolean isWriteable(Class arg0, Type arg1, Annotation[] arg2, MediaType arg3) { + return true; + } + + @Override + public void writeTo(Object arg0, Class arg1, Type arg2, Annotation[] arg3, MediaType arg4, MultivaluedMap arg5, OutputStream arg6) throws IOException, WebApplicationException { + JSON.encode(arg0, arg6); + } +} \ No newline at end of file