/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.modelgenerator.wsdl.model.impl;
import org.teiid.designer.modelgenerator.wsdl.model.Fault;
import org.teiid.designer.modelgenerator.wsdl.model.Message;
import org.teiid.designer.modelgenerator.wsdl.model.Operation;
import org.teiid.designer.modelgenerator.wsdl.model.Part;
/**
* @since 8.0
*/
public class MessageImpl extends WSDLElementImpl implements Message {
private Part[] m_parts;
private Operation m_operation;
private Fault m_fault;
private int m_type;
private String m_namespace;
private String m_use;
private String m_encStyle;
public MessageImpl(Operation oper) {
m_operation = oper;
}
public MessageImpl(Fault fault) {
m_fault = fault;
}
@Override
public Part[] getParts() {
//defensive copy
Part[] newParts = new Part[m_parts.length];
for(int i = 0; i < m_parts.length; i++) {
newParts[i] = (Part) m_parts[i].copy();
}
return newParts;
}
@Override
public void setParts(Part[] parts) {
m_parts = parts;
}
@Override
public Operation getOperation() {
return m_operation;
}
@Override
public boolean isRequest() {
return m_type == Message.REQUEST_TYPE;
}
@Override
public boolean isResponse() {
return m_type == Message.RESPONSE_TYPE;
}
@Override
public boolean isFault() {
return m_type == Message.FAULT_TYPE;
}
@Override
public void setType(int type) {
m_type = type;
}
@Override
public int getType() {
return m_type;
}
@Override
public Message copy() {
Message message;
if(m_operation != null) {
message = new MessageImpl(getOperation());
} else {
message = new MessageImpl(getFault());
}
message.setName(getName());
message.setId(getId());
message.setType(getType());
message.setEncodingStyle(getEncodingStyle());
message.setUse(getUse());
message.setNamespaceURI(getNamespaceURI());
Part[] newParts = new Part[m_parts.length];
for(int i = 0; i < newParts.length; i++) {
newParts[i] = (Part) m_parts[i].copy();
}
message.setParts(newParts);
return message;
}
@Override
public Fault getFault() {
return m_fault;
}
@Override
public String toString() {
StringBuffer buff = new StringBuffer();
buff.append("<message name='"); //$NON-NLS-1$
buff.append(getName());
buff.append("' id='"); //$NON-NLS-1$
buff.append(getId());
buff.append("' typeCode='"); //$NON-NLS-1$
switch (getType()) {
case Message.REQUEST_TYPE:
buff.append("Request"); //$NON-NLS-1$
break;
case Message.RESPONSE_TYPE:
buff.append("Response"); //$NON-NLS-1$
break;
case Message.FAULT_TYPE:
buff.append("Fault"); //$NON-NLS-1$
break;
}
buff.append("' namespace='"); //$NON-NLS-1$
buff.append(getNamespaceURI());
buff.append("' use='"); //$NON-NLS-1$
buff.append(getUse());
buff.append("' ecodingStyles='"); //$NON-NLS-1$
buff.append(getEncodingStyle());
buff.append("' >"); //$NON-NLS-1$
for(int i = 0; i < m_parts.length; i++) {
buff.append(m_parts[i].toString());
}
buff.append("</message>"); //$NON-NLS-1$
return buff.toString();
}
@Override
public String getUse() {
return m_use;
}
@Override
public void setUse(String use) {
m_use = use;
}
@Override
public String getNamespaceURI() {
return m_namespace;
}
@Override
public void setNamespaceURI(String ns) {
m_namespace = ns;
}
@Override
public void setEncodingStyle(String style) {
m_encStyle = style;
}
@Override
public String getEncodingStyle() {
return m_encStyle;
}
}