/* * Copyright (C) 2013-2014 Sony Computer Science Laboratories, Inc. All Rights Reserved. * Copyright (C) 2014 Sony Corporation. All Rights Reserved. */ package com.sonycsl.wamp.message; import com.sonycsl.wamp.message.impl.WampAbortMessageImpl; import com.sonycsl.wamp.message.impl.WampCallMessageImpl; import com.sonycsl.wamp.message.impl.WampErrorMessageImpl; import com.sonycsl.wamp.message.impl.WampEventMessageImpl; import com.sonycsl.wamp.message.impl.WampGoodbyeMessageImpl; import com.sonycsl.wamp.message.impl.WampHelloMessageImpl; import com.sonycsl.wamp.message.impl.WampInvocationMessageImpl; import com.sonycsl.wamp.message.impl.WampPublishMessageImpl; import com.sonycsl.wamp.message.impl.WampPublishedMessageImpl; import com.sonycsl.wamp.message.impl.WampRegisterMessageImpl; import com.sonycsl.wamp.message.impl.WampRegisteredMessageImpl; import com.sonycsl.wamp.message.impl.WampResultMessageImpl; import com.sonycsl.wamp.message.impl.WampSubscribeMessageImpl; import com.sonycsl.wamp.message.impl.WampSubscribedMessageImpl; import com.sonycsl.wamp.message.impl.WampUnregisterMessageImpl; import com.sonycsl.wamp.message.impl.WampUnregisteredMessageImpl; import com.sonycsl.wamp.message.impl.WampUnsubscribeMessageImpl; import com.sonycsl.wamp.message.impl.WampUnsubscribedMessageImpl; import com.sonycsl.wamp.message.impl.WampWelcomeMessageImpl; import com.sonycsl.wamp.message.impl.WampYieldMessageImpl; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class WampMessageFactory { private static int getMessageType(JSONArray msg) { try { return msg.getInt(WampMessageType.MESSAGE_TYPE_INDEX); } catch (JSONException e) { throw new IllegalArgumentException("there is no messagetype"); } } public static WampMessage create(JSONArray msg) { switch (getMessageType(msg)) { case WampMessageType.HELLO: return new WampHelloMessageImpl(msg); case WampMessageType.WELCOME: return new WampWelcomeMessageImpl(msg); case WampMessageType.ABORT: return new WampAbortMessageImpl(msg); case WampMessageType.GOODBYE: return new WampGoodbyeMessageImpl(msg); case WampMessageType.ERROR: return new WampErrorMessageImpl(msg); case WampMessageType.PUBLISH: return new WampPublishMessageImpl(msg); case WampMessageType.PUBLISHED: return new WampPublishedMessageImpl(msg); case WampMessageType.SUBSCRIBE: return new WampSubscribeMessageImpl(msg); case WampMessageType.SUBSCRIBED: return new WampSubscribedMessageImpl(msg); case WampMessageType.UNSUBSCRIBE: return new WampUnsubscribeMessageImpl(msg); case WampMessageType.UNSUBSCRIBED: return new WampUnsubscribedMessageImpl(msg); case WampMessageType.EVENT: return new WampEventMessageImpl(msg); case WampMessageType.CALL: return new WampCallMessageImpl(msg); case WampMessageType.RESULT: return new WampResultMessageImpl(msg); case WampMessageType.REGISTER: return new WampRegisterMessageImpl(msg); case WampMessageType.REGISTERED: return new WampRegisteredMessageImpl(msg); case WampMessageType.UNREGISTER: return new WampUnregisterMessageImpl(msg); case WampMessageType.UNREGISTERED: return new WampUnregisteredMessageImpl(msg); case WampMessageType.INVOCATION: return new WampInvocationMessageImpl(msg); case WampMessageType.YIELD: return new WampYieldMessageImpl(msg); default: return null; } } public static WampMessage createHello(String realm, JSONObject details) { return WampHelloMessageImpl.create(realm, details); } public static WampMessage createWelcome(int session, JSONObject details) { return WampWelcomeMessageImpl.create(session, details); } public static WampMessage createAbort(JSONObject details, String reason) { return WampAbortMessageImpl.create(details, reason); } public static WampMessage createGoodbye(JSONObject details, String reason) { return WampGoodbyeMessageImpl.create(details, reason); } public static WampMessage createError(int requestType, int requestId, JSONObject details, String error) { return WampErrorMessageImpl.create(requestType, requestId, details, error); } public static WampMessage createError(int requestType, int requestId, JSONObject details, String error, JSONArray arguments) { return WampErrorMessageImpl.create(requestType, requestId, details, error, arguments); } public static WampMessage createError(int requestType, int requestId, JSONObject details, String error, JSONArray arguments, JSONObject argumentsKw) { return WampErrorMessageImpl.create(requestType, requestId, details, error, arguments, argumentsKw); } public static WampMessage createPublish(int requestId, JSONObject options, String topic) { return WampPublishMessageImpl.create(requestId, options, topic); } public static WampMessage createPublish(int requestId, JSONObject options, String topic, JSONArray arguments) { return WampPublishMessageImpl.create(requestId, options, topic, arguments); } public static WampMessage createPublish(int requestId, JSONObject options, String topic, JSONArray arguments, JSONObject argumentsKw) { return WampPublishMessageImpl.create(requestId, options, topic, arguments, argumentsKw); } public static WampMessage createPublished(int requestId, int publicationId) { return WampPublishedMessageImpl.create(requestId, publicationId); } public static WampMessage createSubscribe(int requestId, JSONObject options, String topic) { return WampSubscribeMessageImpl.create(requestId, options, topic); } public static WampMessage createSubscribed(int requestId, int subscriptionId) { return WampSubscribedMessageImpl.create(requestId, subscriptionId); } public static WampMessage createUnsubscribe(int requestId, int subscriptionId) { return WampUnsubscribeMessageImpl.create(requestId, subscriptionId); } public static WampMessage createUnsubscribed(int requestId) { return WampUnsubscribedMessageImpl.create(requestId); } public static WampMessage createEvent(int subscriptionId, int publicationId, JSONObject details) { return WampEventMessageImpl.create(subscriptionId, publicationId, details); } public static WampMessage createEvent(int subscriptionId, int publicationId, JSONObject details, JSONArray arguments) { return WampEventMessageImpl.create(subscriptionId, publicationId, details, arguments); } public static WampMessage createEvent(int subscriptionId, int publicationId, JSONObject details, JSONArray arguments, JSONObject argumentsKw) { return WampEventMessageImpl.create(subscriptionId, publicationId, details, arguments, argumentsKw); } public static WampMessage createCall(int requestId, JSONObject options, String procedure) { return WampCallMessageImpl.create(requestId, options, procedure); } public static WampMessage createCall(int requestId, JSONObject options, String procedure, JSONArray arguments) { return WampCallMessageImpl.create(requestId, options, procedure, arguments); } public static WampMessage createCall(int requestId, JSONObject options, String procedure, JSONArray arguments, JSONObject argumentsKw) { return WampCallMessageImpl.create(requestId, options, procedure, arguments, argumentsKw); } public static WampMessage createResult(int requestId, JSONObject details) { return WampResultMessageImpl.create(requestId, details); } public static WampMessage createResult(int requestId, JSONObject details, JSONArray arguments) { return WampResultMessageImpl.create(requestId, details, arguments); } public static WampMessage createResult(int requestId, JSONObject details, JSONArray arguments, JSONObject argumentsKw) { return WampResultMessageImpl.create(requestId, details, arguments, argumentsKw); } public static WampMessage createRegister(int requestId, JSONObject options, String procedure) { return WampRegisterMessageImpl.create(requestId, options, procedure); } public static WampMessage createRegistered(int requestId, int registrationId) { return WampRegisteredMessageImpl.create(requestId, registrationId); } public static WampMessage createUnregister(int requestId, int registrationId) { return WampUnregisterMessageImpl.create(requestId, registrationId); } public static WampMessage createUnregistered(int requestId) { return WampUnregisteredMessageImpl.create(requestId); } public static WampMessage createInvocation(int requestId, int registrationId, JSONObject details) { return WampInvocationMessageImpl.create(requestId, registrationId, details); } public static WampMessage createInvocation(int requestId, int registrationId, JSONObject details, JSONArray arguments) { return WampInvocationMessageImpl.create(requestId, registrationId, details, arguments); } public static WampMessage createInvocation(int requestId, int registrationId, JSONObject details, JSONArray arguments, JSONObject argumentsKw) { return WampInvocationMessageImpl.create(requestId, registrationId, details, arguments, argumentsKw); } public static WampMessage createYield(int requestId, JSONObject options) { return WampYieldMessageImpl.create(requestId, options); } public static WampMessage createYield(int requestId, JSONObject options, JSONArray arguments) { return WampYieldMessageImpl.create(requestId, options, arguments); } public static WampMessage createYield(int requestId, JSONObject options, JSONArray arguments, JSONObject argumentsKw) { return WampYieldMessageImpl.create(requestId, options, arguments, argumentsKw); } }