Object decode(Object value) { return codec.decode(value); }
Object encode(Object value) { return codec.encode(value); }
public Codecs add(Codec codec) { codecs.put(codec.name(), codec); codecs.put(codec.contentType(), codec); return this; }
Object encoded = codec.encode(message); Class encodesTo = codec.encodesTo(); javax.jms.Message jmsMessage; jmsMessage.setStringProperty(JMSMessage.CONTENT_TYPE_PROPERTY, codec.contentType());
@Override public void onMessage(Message message) { try { JMSContext.currentContext.set(this.context.asNonCloseable()); this.handler.onMessage(new JMSMessage(message, this.codecs.forContentType(JMSMessage.contentType(message)), this.endpoint), this.context); this.context.commit(); } catch (Throwable e) { this.context.rollback(); throw new RuntimeException("Unexpected error handling message", e); } finally { JMSContext.currentContext.remove(); } }
@Override public Object body() { Object body; try { if (this.baseMessage instanceof TextMessage) { body = ((TextMessage)this.baseMessage).getText(); } else if (this.baseMessage instanceof ObjectMessage) { body = ((ObjectMessage)this.baseMessage).getObject(); } else if (this.baseMessage instanceof BytesMessage) { body = new byte[(int)((BytesMessage) this.baseMessage).getBodyLength()]; ((BytesMessage)this.baseMessage).readBytes((byte[]) body); } else { throw new IllegalArgumentException("Don't know how to deal with message of type " + this.baseMessage.getClass()); } return this.codec.decode(body); } catch (JMSException e) { e.printStackTrace(); } return null; }
@Override public Reply onMessage(Message msg, Context context) throws Exception { Reply result = handler.onMessage(msg, context); Options<MessageOpOption> replyOptions = new Options<>(); replyOptions.put(PublishOption.TTL, opts.getInt(RespondOption.TTL)); replyOptions.put(PublishOption.CONTEXT, context); replyOptions.put(PublishOption.PROPERTIES, result.properties()); ((ReplyableMessage)msg).reply(result.content(), codecs.forContentType(msg.contentType()), replyOptions); return null; } };
Codec codec = codecs.forContentType(contentType);