/******************************************************************************* * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 *******************************************************************************/ package org.ebayopensource.turmeric.runtime.tests.binding.jaxb; import java.io.OutputStream; import java.net.HttpURLConnection; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; import javax.activation.DataHandler; import javax.xml.namespace.QName; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import org.ebayopensource.turmeric.runtime.binding.objectnode.ObjectNode; import org.ebayopensource.turmeric.runtime.common.binding.DataBindingDesc; import org.ebayopensource.turmeric.runtime.common.binding.Serializer; import org.ebayopensource.turmeric.runtime.common.binding.SerializerFactory; import org.ebayopensource.turmeric.runtime.common.exceptions.ErrorUtils; import org.ebayopensource.turmeric.runtime.common.exceptions.ServiceException; import org.ebayopensource.turmeric.runtime.common.pipeline.MessageContext; import org.ebayopensource.turmeric.runtime.common.pipeline.OutboundMessage; import org.ebayopensource.turmeric.runtime.common.service.ServiceOperationParamDesc; import org.ebayopensource.turmeric.runtime.common.types.Cookie; import org.ebayopensource.turmeric.runtime.common.types.G11nOptions; import org.ebayopensource.turmeric.runtime.errorlibrary.ErrorConstants; import org.ebayopensource.turmeric.runtime.tests.service1.sample.types1.MyMessage; /** * Attachment not supported. * * @author wdeng */ public class TestOutboundMessage implements OutboundMessage { MessageContext m_ctx; private Object m_transportData; private DataBindingDesc m_dbDesc; private ServiceOperationParamDesc m_paramDesc; private Object[] m_objs = new Object[1]; private G11nOptions m_g11n = new G11nOptions(); private ByteBuffer m_byteBuffer; public TestOutboundMessage(DataBindingDesc dbDesc, ServiceOperationParamDesc paramDesc) { m_dbDesc = dbDesc; m_paramDesc = paramDesc; } @Override public DataBindingDesc getDataBindingDesc() { return m_dbDesc; } @Override public ServiceOperationParamDesc getParamDesc() { return m_paramDesc; } @Override public Map<String, String> buildOutputHeaders() throws ServiceException { return null; } @Override public void serialize(OutputStream out) throws ServiceException { try { List<Class> paramTypes = new ArrayList<Class>(); paramTypes.add(MyMessage.class); SerializerFactory serFactory = getDataBindingDesc().getSerializerFactory(); Serializer ser = serFactory.getSerializer(); XMLStreamWriter writer = serFactory.getXMLStreamWriter(this, paramTypes, out); writer.writeStartDocument(); Object obj = m_objs[0]; Class objectClz = MyMessage.class; if (null != obj) { objectClz = obj.getClass(); } QName xmlName = getParamDesc().getXmlNameForJavaType(objectClz); ser.serialize(this, obj, xmlName, objectClz, writer); writer.writeEndDocument(); writer.flush(); } catch (XMLStreamException e) { throw new ServiceException(ErrorUtils.createErrorData(ErrorConstants.CFG_GENERIC_ERROR, ErrorConstants.ERRORDOMAIN), e); } } @Override public ObjectNode getMessageBody() { return null; } @Override public MessageContext getContext() { return m_ctx; } public void setContext(MessageContext ctx) { m_ctx = ctx; } @Override public Cookie getCookie(String name) { return null; } @Override public Cookie[] getCookies() { return null; } @Override public G11nOptions getG11nOptions() { return m_g11n; } @Override public Collection<ObjectNode> getMessageHeaders() { return null; } public String getMessageHeaderElement(String name) { return null; } public Map<String, String> getMessageHeaderElements() { return null; } @Override public Object getParam(int idx) { return m_objs[0]; } @Override public int getParamCount() { if (getParam(0) != null) { return 1; } return 0; } @Override public String getPayloadType() { return null; } @Override public String getTransportHeader(String name) { return null; } @Override public boolean hasTransportHeader(String name) { return false; } @Override public Map<String, String> getTransportHeaders() { return null; } @Override public String getTransportProtocol() { return null; } public boolean hasMessageHeader() { return false; } @Override public boolean isErrorMessage() { return false; } @Override public Object getErrorResponse() { return null; } @Override public void setCookie(Cookie cookie) throws ServiceException { } public void setMessageHeaderNode(ObjectNode header) throws ServiceException { } public void setMessageHeaderElement(String name, String value) throws ServiceException { } @Override public void setParam(int idx, Object value) throws ServiceException { m_objs[0] = value; } @Override public void setTransportHeader(String name, String value) throws ServiceException { } public boolean supportsMessageHeader() { return false; } @Override public Object getTransportData() { return m_transportData; } @Override public void setTransportData(Object data) { m_transportData = data; } @Override public ByteBuffer getByteBuffer() throws ServiceException { return m_byteBuffer; } @Override public void setByteBuffer(ByteBuffer buffer) throws ServiceException { m_byteBuffer = buffer; } @Override public void setErrorResponse(Object error) { } @Override public void addDataHandler(DataHandler dh, String id) { } @Override public boolean hasAttachment() { return false; } @Override public void setG11nOptions(G11nOptions options) { } @Override public void recordPayload(int maxBytes) throws ServiceException { } @Override public byte[] getRecordedData() throws ServiceException { return null; } @Override public boolean isREST() { return false; } public void setREST(boolean isREST) { } @Override public String getUnserializableReason() { return null; } @Override public boolean isUnserializable() { return false; } @Override public void setUnserializable(String reason) { } @Override public int getMaxURLLengthForREST() { return 0; } @Override public void addMessageHeader(ObjectNode header) throws ServiceException { } @Override public void serializeHeader(XMLStreamWriter out) throws ServiceException { } @Override public void serializeBody(OutputStream out) throws ServiceException { } @Override public ServiceOperationParamDesc getHeaderParamDesc() throws ServiceException { return null; } @Override public void addMessageHeaderAsJavaObject(Object headerJavaObject) throws ServiceException { } @Override public int getTransportErrorResponseIndicationCode() throws ServiceException { return HttpURLConnection.HTTP_INTERNAL_ERROR; } @Override public List<Class> getParamTypes() throws ServiceException { return null; } }