blob: e91a1b7ef239e87b72b6aad4eef0043f2fcfaccd [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2002-2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
*******************************************************************************/
package org.eclipse.wst.wsi.internal.core.report.impl;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.eclipse.wst.wsi.internal.core.WSIConstants;
import org.eclipse.wst.wsi.internal.core.log.MessageEntry;
import org.eclipse.wst.wsi.internal.core.report.AssertionResult;
import org.eclipse.wst.wsi.internal.core.report.Entry;
import org.eclipse.wst.wsi.internal.core.report.EntryContainer;
import org.eclipse.wst.wsi.internal.core.util.EntryType;
import org.eclipse.wst.wsi.internal.core.xml.XMLUtils;
/**
* This class represents an entry in a report.
*
* @version 1.0.1
* @author Peter Brittenham (peterbr@us.ibm.com)
*/
public class EntryImpl extends EntryResultImpl implements Entry
{
/**
* Entry type.
*/
protected EntryType entryType = null;
/**
* Artifact name (optional).
*/
protected String artifactName = null;
/**
* Reference ID.
*/
protected String referenceID = null;
/**
* Parent element name (only used when entry type is "port" or "operation").
*/
protected String parentElementName = null;
/**
* Entry detail object.
*/
protected Object entryDetail = null;
/**
* Entry container.
*/
protected EntryContainer entryContainer = null;
/* (non-Javadoc)
* @see org.wsi.test.report.Entry#getEntryType()
*/
public EntryType getEntryType()
{
return this.entryType;
}
/* (non-Javadoc)
* @see org.wsi.test.report.Entry#setEntryType(EntryType)
*/
public void setEntryType(EntryType entryType)
{
this.entryType = entryType;
}
/* (non-Javadoc)
* @see org.wsi.test.report.Entry#getArtifactName()
*/
public String getArtifactName()
{
return this.artifactName;
}
/* (non-Javadoc)
* @see org.wsi.test.report.Entry#setArtifactName(java.lang.String)
*/
public void setArtifactName(String artifactName)
{
this.artifactName = artifactName;
}
/* (non-Javadoc)
* @see org.wsi.test.report.Entry#getReferenceID()
*/
public String getReferenceID()
{
return this.referenceID;
}
/* (non-Javadoc)
* @see org.wsi.test.report.Entry#setReferenceID(String)
*/
public void setReferenceID(String referenceID)
{
this.referenceID = referenceID;
}
/* (non-Javadoc)
* @see org.wsi.test.report.Entry#getParentElementName()
*/
public String getParentElementName()
{
return this.parentElementName;
}
/* (non-Javadoc)
* @see org.wsi.test.report.Entry#setParentElementName(String)
*/
public void setParentElementName(String parentElementName)
{
this.parentElementName = parentElementName;
}
/* (non-Javadoc)
* @see org.wsi.test.report.Entry#getEntryDetail()
*/
public Object getEntryDetail()
{
return this.entryDetail;
}
/* (non-Javadoc)
* @see org.wsi.test.report.Entry#setEntryDetail(Object)
*/
public void setEntryDetail(Object entryDetail)
{
this.entryDetail = entryDetail;
}
/* (non-Javadoc)
* @see org.wsi.test.report.Entry#getEntryContainer()
*/
public EntryContainer getEntryContainer()
{
return this.entryContainer;
}
/* (non-Javadoc)
* @see org.wsi.test.report.Entry#setEntryContainer(org.wsi.test.report.EntryContainer)
*/
public void setEntryContainer(EntryContainer entryContainer)
{
this.entryContainer = entryContainer;
}
/* (non-Javadoc)
* @see org.wsi.test.report.EntryResult#addAssertionResult(AssertionResult)
*/
public void addAssertionResult(AssertionResult assertionResult)
{
super.addAssertionResult(assertionResult);
if (this.entryContainer != null)
this.entryContainer.addAssertionResult(assertionResult);
}
/* (non-Javadoc)
* @see org.wsi.test.report.Entry#getStartXMLString(String)
*/
public String getStartXMLString(String namespaceName, boolean showLogEntry, boolean envelopeArtifactType)
{
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
String nsName = namespaceName;
if ((!nsName.equals("") && (!nsName.endsWith(":"))))
nsName += ":";
// Create element
pw.print(" <" + nsName + ELEM_NAME + " ");
if (this.entryType != null)
{
if (envelopeArtifactType)
{
// we use the same actual entry for both message and envelope artifacts
// we now need to output entry type names that actually pertain to the artifact type
pw.print(
WSIConstants.ATTR_TYPE + "=\"" + getCorrespondingEnvelopeEntryTypeName(this.entryType.getTypeName()) + "\" ");
}
else
{
pw.print(
WSIConstants.ATTR_TYPE + "=\"" + this.entryType.getTypeName() + "\" ");
}
}
else if (this.artifactName != null)
{
pw.print(WSIConstants.ATTR_TYPE + "=\"[" + this.artifactName + "]\" ");
}
if (this.referenceID != null)
pw.print(
WSIConstants.ATTR_REFERENCE_ID + "=\"" + XMLUtils.xmlEscapedString(this.referenceID) + "\"");
// If service name was set then add it
//if (parentElementName != null) {
// pw.print(" " + WSIConstants.ATTR_PARENT_ELEMENT_NAME + "=\"" + this.parentElementName + "\"");
//}
// End element
pw.println(">");
// ADD: Need to check for config option that specifies
// that log entries should be added
// If target is a log entry, then add reference to it
if ((entryType != null)
&& (entryType.getArtifactType().isMessages())
&& (showLogEntry))
{
MessageEntry logEntry = (MessageEntry) entryDetail;
pw.println(logEntry.toXMLString(WSIConstants.NS_NAME_WSI_LOG));
}
return sw.toString();
}
/* (non-Javadoc)
* @see org.wsi.test.report.Entry#getStartXMLString(String)
*/
public String getStartXMLString(String namespaceName, boolean showLogEntry)
{
return getStartXMLString(namespaceName, showLogEntry, false);
}
/* (non-Javadoc)
* @see org.wsi.test.report.Entry#getEndXMLString(String)
*/
public String getEndXMLString(String namespaceName)
{
String nsName = namespaceName;
if ((!nsName.equals("") && (!nsName.endsWith(":"))))
nsName += ":";
return " </" + nsName + ELEM_NAME + ">";
}
/* (non-Javadoc)
* @see org.wsi.test.document.DocumentElement#toXMLString(String)
*/
public String toXMLString(String namespaceName)
{
// Return string
return getStartXMLString("", false) + getEndXMLString("");
}
public String getCorrespondingEnvelopeEntryTypeName(String messageEntryTypeName)
{
String envelopeEntryTypeName = messageEntryTypeName;
if (messageEntryTypeName != null)
{
if (messageEntryTypeName.equals(EntryType.TYPE_MESSAGE_ANY))
envelopeEntryTypeName = EntryType.TYPE_ENVELOPE_ANY;
else if (messageEntryTypeName.equals(EntryType.TYPE_MESSAGE_REQUEST))
envelopeEntryTypeName = EntryType.TYPE_ENVELOPE_REQUEST;
else if (messageEntryTypeName.equals(EntryType.TYPE_MESSAGE_RESPONSE))
envelopeEntryTypeName = EntryType.TYPE_ENVELOPE_RESPONSE;
}
return envelopeEntryTypeName;
}
}