| /* |
| * Copyright 2003-2004 The Apache Software Foundation. |
| // (c) Copyright IBM Corp. 2004, 2005 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 |
| * |
| * 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. |
| */ |
| package org.apache.axis.wsdl.wsdl2ws.cpp; |
| import java.io.File; |
| import java.io.IOException; |
| import java.util.ArrayList; |
| import java.util.Iterator; |
| |
| import org.apache.axis.wsdl.wsdl2ws.CUtils; |
| import org.apache.axis.wsdl.wsdl2ws.WSDL2Ws; |
| import org.apache.axis.wsdl.wsdl2ws.WrapperFault; |
| import org.apache.axis.wsdl.wsdl2ws.info.FaultInfo; |
| import org.apache.axis.wsdl.wsdl2ws.info.MethodInfo; |
| import org.apache.axis.wsdl.wsdl2ws.info.ParameterInfo; |
| import org.apache.axis.wsdl.wsdl2ws.info.WebServiceContext; |
| |
| /** |
| * @author nithya |
| * @author Samisa Abeysinghe (sabeysinghe@virtusa.com) |
| */ |
| |
| public class ExceptionHeaderWriter extends HeaderFileWriter |
| { |
| String faultInfoName; |
| |
| public ExceptionHeaderWriter( |
| WebServiceContext wscontext, |
| String faultInfoName) |
| throws WrapperFault |
| { |
| //super(WrapperUtils.getClassNameFromFullyQualifiedName(wscontext.getSerInfo().getQualifiedServiceName())); |
| super("Axis" + faultInfoName + "Exception"); //damitha |
| if (WSDL2Ws.c_veryVerbose) |
| System.out.println("faultInfoName is:" + faultInfoName); |
| this.wscontext = wscontext; |
| this.faultInfoName = "Axis" + faultInfoName + "Exception"; |
| } |
| |
| protected File getFilePath(boolean useServiceName) throws WrapperFault |
| { |
| String targetOutputLocation = wscontext.getWrapperInfo().getTargetOutputLocation(); |
| new File(targetOutputLocation).mkdirs(); |
| |
| String serviceName = ""; |
| if (useServiceName) |
| serviceName = wscontext.getServiceInfo().getServicename() + "_"; |
| |
| String fileName = targetOutputLocation + "/" + serviceName + faultInfoName + c_fileExtension; |
| |
| wscontext.addGeneratedFile(fileName); |
| return new File(fileName); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.apache.axis.wsdl.wsdl2ws.cpp.HeaderFileWriter#writePreprocssorStatements() |
| */ |
| protected void writePreprocessorStatements() throws WrapperFault |
| { |
| try |
| { |
| c_writer.write("#include <string>\n"); |
| c_writer.write("#include <exception>\n"); |
| c_writer.write("#include <axis/AxisException.hpp>\n"); |
| c_writer.write("#include <axis/ISoapFault.hpp>\n"); |
| getLangName(); |
| c_writer.write("using namespace std;\n"); |
| c_writer.write("AXIS_CPP_NAMESPACE_USE \n\n"); |
| } |
| catch (IOException e) |
| { |
| throw new WrapperFault(e); |
| } |
| } |
| |
| /* (non-Javadoc) |
| * @see org.apache.axis.wsdl.wsdl2ws.cpp.HeaderFileWriter#writeClassComment() |
| */ |
| protected void writeClassComment() throws WrapperFault |
| { |
| try |
| { |
| c_writer.write("/*\n"); |
| c_writer.write( |
| " * This file was auto-generated by the Axis C++ Web Service " |
| + "Generator (WSDL2Ws)\n"); |
| c_writer.write( |
| " * This file contains an Exception class of the web service.\n"); |
| c_writer.write(" */\n\n"); |
| } |
| catch (IOException e) |
| { |
| throw new WrapperFault(e); |
| } |
| } |
| |
| /* (non-Javadoc) |
| * @see org.apache.axis.wsdl.wsdl2ws.cpp.HeaderFileWriter#writeConstructors() |
| */ |
| protected void writeConstructors() throws WrapperFault |
| { |
| try |
| { |
| String faultName = faultInfoName; |
| |
| if ("AxisClientException".equals(faultInfoName)) |
| { |
| faultName = getServiceName() + "_" + faultInfoName; |
| } |
| |
| c_writer.write("public:\n"); |
| c_writer.write("\tSTORAGE_CLASS_INFO " + faultName + "(ISoapFault* pFault);\n"); |
| c_writer.write("\tSTORAGE_CLASS_INFO " + faultName + "(const int iExceptionCode, const char* pcMessage = NULL );\n"); |
| c_writer.write("\tSTORAGE_CLASS_INFO " + faultName + "(const " + faultName + "& e);\n"); |
| |
| } |
| catch (IOException e) |
| { |
| throw new WrapperFault(e); |
| } |
| } |
| |
| /* (non-Javadoc) |
| * @see org.apache.axis.wsdl.wsdl2ws.cpp.HeaderFileWriter#writeDistructors() |
| */ |
| protected void writeDestructors() throws WrapperFault |
| { |
| try |
| { |
| String faultName = faultInfoName; |
| |
| if ("AxisClientException".equals(faultInfoName)) |
| { |
| faultName = getServiceName() + "_" + faultInfoName; |
| } |
| |
| c_writer.write("\tSTORAGE_CLASS_INFO virtual ~" + faultName + "() throw();\n"); |
| } |
| catch (IOException e) |
| { |
| throw new WrapperFault(e); |
| } |
| } |
| /* (non-Javadoc) |
| * @see org.apache.axis.wsdl.wsdl2ws.cpp.HeaderFileWriter#writeMethods() |
| */ |
| protected void writeMethods() throws WrapperFault |
| { |
| try |
| { |
| |
| c_writer.write("\tSTORAGE_CLASS_INFO const ISoapFault* getFault();\n\n"); |
| c_writer.write("private:\n"); |
| c_writer.write("\tSTORAGE_CLASS_INFO string getMessageForExceptionCode(int iExceptionCode);\n"); |
| c_writer.write("\t ISoapFault* m_pISoapFault;\n"); |
| c_writer.write("\t string m_sMessageForExceptionCode;\n\n"); |
| } |
| catch (Exception e) |
| { |
| throw new WrapperFault(e); |
| } |
| } |
| |
| protected String getFileType() |
| { |
| return "Exception"; // must change accordingly |
| } |
| protected String getExtendsPart() |
| { |
| return ": public AxisException"; |
| } |
| |
| public void getLangName() throws WrapperFault |
| { |
| ArrayList methods; |
| methods = wscontext.getServiceInfo().getMethods(); |
| MethodInfo minfo; |
| |
| try |
| { |
| for (int i = 0; i < methods.size(); i++) |
| { |
| minfo = (MethodInfo) methods.get(i); |
| Iterator paramsFault = minfo.getFaultType().iterator(); |
| String langName = null; |
| while (paramsFault.hasNext()) |
| { |
| FaultInfo info = (FaultInfo) paramsFault.next(); |
| ArrayList paramInfo = info.getParams(); |
| for (int j = 0; j < paramInfo.size(); j++) |
| { |
| ParameterInfo par = (ParameterInfo) paramInfo.get(j); |
| langName = par.getLangName(); |
| c_writer.write( |
| "#include \"" |
| + langName |
| + CUtils.getHeaderFileExtension() |
| + "\"\n\n"); |
| } |
| } |
| } |
| } |
| catch (Exception e) |
| { |
| System.out.println( |
| "Error occurred yet we continue to generate other classes ... you should check the error"); |
| e.printStackTrace(); |
| } |
| } |
| } |