blob: 968e41a43e28cac7b59d7b0b9b788ccf8bba2b4b [file] [log] [blame]
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* 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
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#if !defined(AXIS_SOAPMETHOD_H__OF_AXIS_INCLUDED_)
#define AXIS_SOAPMETHOD_H__OF_AXIS_INCLUDED_
#include "../common/Param.h"
#include "../common/ISoapMethod.h"
#include "SoapSerializer.h"
#include <list>
AXIS_CPP_NAMESPACE_START
class Attribute;
using namespace std;
/*
@class SoapMethod
@brief The SOAP Body of a SOAP Envelope according to
SOAP 1.2 specification.
The SOAP method.
SOAP Body child Element:
All child element information items of the SOAP Body element information
item:
- SHOULD have a [namespace name] property which has a value, that is
the name of the element SHOULD be namespace qualified.
- MAY have any number of character information item children. Child
character information items whose character code is amongst the
white space characters as defined by XML 1.0 [XML 1.0] are
considered significant.
- MAY have any number of element information item children. Such
element information items MAY be namespace qualified.
- MAY have zero or more attribute information items in its
[attributes] property. Among these MAY be the following, which has
special significance for SOAP processing:
- encodingStyle attribute information item
@author Roshan Weerasuriya (roshan@opensource.lk, roshanw@jkcsworld.com)
*/
class SoapMethod : public ISoapMethod
{
private:
int serializeAttributes(SoapSerializer& pSZ, list<AxisChar*>& lstTmpNameSpaceStack);
list<Attribute*> m_attributes;
bool isSerializable();
int serializeOutputParam(SoapSerializer& pSZ);
AxisString m_strPrefix;
AxisString m_strLocalname;
AxisString m_strUri;
list<Param*> m_OutputParams;
bool m_isWrapperStyle;
public:
int reset();
int addAttribute(Attribute* pAttribute);
const AxisChar* getMethodName();
/**
* This method return AXIS_SUCCESS if it serialize the SoapMethod successfully.
* If not it returns AXIS_FAIL. The caller of this method has to deal in a
* appropriate manner after calling this method.
*/
int serialize(SoapSerializer& pSZ);
void addOutputParam(Param *param);
void setURI(const AxisChar* uri);
void setLocalName(const AxisChar* localname);
void setWrapperStyle(bool bIsWrapperStyle) { m_isWrapperStyle = bIsWrapperStyle; }
bool isWrapperStyle() { return m_isWrapperStyle; }
void setPrefix(const AxisChar* prefix);
SoapMethod();
virtual ~SoapMethod();
/** Method to clear up all the current out params in preparation of a new method call */
void clearOutParams();
/** Method to clear up all the current attributes in preparation of a new method call */
void clearAttributes();
/** Return namespace prefix */
AxisString getPrefix() { return m_strPrefix; }
/** return URI */
AxisString getUri() { return m_strUri; }
};
AXIS_CPP_NAMESPACE_END
#endif