#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
#

#######################################################################################################################
#####################   code generator property file  #################################################################
#######################################################################################################################
# Extensions - The extension class names are comma separated
# and these extensions will run before the main emitter
# these are loaded in their lexical order
# Note the last extension - It includes a check to figure out whether proper databinding has taken place
# This extension should appear AFTER all the databinding extensions inorder to function properly
codegen.extension=org.apache.axis2.wsdl.codegen.extension.PackageFinder,\
org.apache.axis2.wsdl.codegen.extension.JAXWSWapperExtension,\
  org.apache.axis2.wsdl.codegen.extension.SchemaUnwrapperExtension,\
  org.apache.axis2.wsdl.codegen.extension.XMLBeansExtension, \
  org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension, \
  org.apache.axis2.wsdl.codegen.extension.JiBXExtension, \
  org.apache.axis2.wsdl.codegen.extension.JAXBRIExtension, \
  org.apache.axis2.wsdl.codegen.extension.TypeMapperExtension, \
  org.apache.axis2.wsdl.codegen.extension.DefaultDatabindingExtension, \
  org.apache.axis2.wsdl.codegen.extension.PolicyEvaluator
#extensions that work after the main emitter. These will include functionality such as
#formatters
post.codegen.extension=org.apache.axis2.wsdl.codegen.extension.JavaPrettyPrinterExtension, \
  org.apache.axis2.wsdl.codegen.extension.XMLPrettyPrinterExtension, \
  org.apache.axis2.wsdl.codegen.extension.WSDLPrettyPrinterExtension, \
  org.apache.axis2.wsdl.codegen.extension.ExcludePackageExtension

#codegen.extension=org.apache.axis2.wsdl.codegen.extension.AxisBindingBuilder,org.apache.axis2.wsdl.codegen.extension.WSDLValidatorExtension,org.apache.axis2.wsdl.codegen.extension.PackageFinder,org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension
# The third party schemas to be loaded. e.g. The Xmime extension
# Note - these will be loaded from the org.apache.axis2.wsdl.codegen.schema package.
# so whatever the third party schema's that are listed here should be present there
#codegen.thirdparty.schema=
codegen.thirdparty.schema=xmime.xsd,soap-enc.xsd
#####################################################################################################################
#####################################################################################################################
# Codegen data binding frameworks and their related information
# The names of the codegeneration frameworks in lexical order
# these are the names that should be passed onto the tool as arguments as well
codegen.databinding.frameworks=adb,xmlbeans,jibx,jaxbri,none
# this property keeps the names of the databinding frameworks which support
# unwrapping 
codegen.databinding.unwrap.supported=adb,xmlbeans,jibx,jaxbri
# this property keeps the names of the databinding frameworks that handle unwrapping
# directly (rather than by using the unwrapper extension)
codegen.databinding.unwrap.direct=jibx
# the related extensions for the specified data binding frameworks above
# Note -  these are in the lexical order of the framework names. There is an implicit assumption
# that a given databinding framework will be processed only by one extension
codegen.databinding.extensions=org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension,org.apache.axis2.wsdl.codegen.extension.XMLBeansExtension,org.apache.axis2.wsdl.codegen.extension.JiBXExtension,org.apache.axis2.wsdl.codegen.extension.JAXBRIExtension,org.apache.axis2.wsdl.codegen.extension.DefaultDatabindingExtension
# the default data binding framework name
codegen.databinding.frameworks.default=adb
# the databinding templates -
codegen.databinding.adb.supporter.template=/org/apache/axis2/schema/template/ADBDatabindingTemplate.xsl
codegen.databinding.xmlbeans.supporter.template=/org/apache/axis2/xmlbeans/template/XmlbeansDatabindingTemplate.xsl
codegen.databinding.jibx.supporter.template=/org/apache/axis2/jibx/template/JibXDatabindingTemplate.xsl
codegen.databinding.jaxbri.supporter.template=/org/apache/axis2/jaxbri/template/JaxbRIDatabindingTemplate.xsl
codegen.databinding.none.supporter.template=/org/apache/axis2/wsdl/template/java/NoneDatabindingTemplate.xsl

codegen.databinding.testobject.template=/org/apache/axis2/wsdl/template/java/TestObjectCreationTemplate.xsl
#####################################################################################################################
#####################################################################################################################
# Language types - these are the language types that the code generator understands. Again this is the name of the
# language that should be passed from the tool as well
#
codegen.languages=java,c,jax-ws
# Emitter class is the  major code generator class that should be changed according to the language.
# The emiiters need to implement the org.apache.axis2.wsdl.codegen.emitter.Emitter interface
# Note - The emitters should appear in the lexical order of the languages. So the language java in the above
# list corresponds to the org.apache.axis2.wsdl.codegen.emitter.JavaEmitter
codegen.emitters=org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter,org.apache.axis2.wsdl.codegen.emitter.CEmitter,org.apache.axis2.wsdl.codegen.emitter.jaxws.JAXWS20Emitter
# Default language, this is the default language that would be picked when no language is specified. it should be
# one of the languages specified above
codegen.languages.default=java
# Default source folder name
codegen.general.src.name=src
# Default resource folder name
codegen.general.resource.name=resources
#####################################################################################################################
########################  Language specific section #################################################################
#####################################################################################################################
# The language specific section has a special custom style. The language name comes first and separated from the period
# a unique name. These parameters will be included in a hashmap that is will be stored in another hash map with the
# language as the key
#####################################################################################################################
# Java section  - Templates.
# The format of the templates is <writer-class-name>,<template-name>
# Note this section is specific to the emitter logic. One can have anything here!
java.interface.template=org.apache.axis2.wsdl.codegen.writer.InterfaceWriter,/org/apache/axis2/wsdl/template/java/InterfaceTemplate.xsl
java.interface.impl.template=org.apache.axis2.wsdl.codegen.writer.InterfaceImplementationWriter,/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl
java.bean.template=org.apache.axis2.wsdl.codegen.writer.BeanWriter,/org/apache/axis2/wsdl/template/java/BeanTemplate.xsl
java.callback.template=org.apache.axis2.wsdl.codegen.writer.CallbackHandlerWriter,/org/apache/axis2/wsdl/template/java/CallbackHandlerTemplate.xsl
java.exception.template=org.apache.axis2.wsdl.codegen.writer.ExceptionWriter,/org/apache/axis2/wsdl/template/java/ExceptionTemplate.xsl
java.skeleton.template=org.apache.axis2.wsdl.codegen.writer.SkeletonWriter,/org/apache/axis2/wsdl/template/java/SkeletonTemplate.xsl
java.skeleton.interface.template=org.apache.axis2.wsdl.codegen.writer.SkeletonInterfaceWriter,/org/apache/axis2/wsdl/template/java/SkeletonInterfaceTemplate.xsl
java.testclass.template=org.apache.axis2.wsdl.codegen.writer.TestClassWriter,/org/apache/axis2/wsdl/template/java/TestClassTemplate.xsl
java.service.template=org.apache.axis2.wsdl.codegen.writer.ServiceXMLWriter,/org/apache/axis2/wsdl/template/general/ServiceXMLTemplate.xsl
java.message.receiver.template=org.apache.axis2.wsdl.codegen.writer.MessageReceiverWriter,/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl
#
java.antbuild.xmlbeans.template=org.apache.axis2.wsdl.codegen.writer.AntBuildWriter,/org/apache/axis2/wsdl/template/general/xmlbeansAntBuildTemplate.xsl
java.antbuild.jibx.template=org.apache.axis2.wsdl.codegen.writer.AntBuildWriter,/org/apache/axis2/wsdl/template/general/jibxAntBuildTemplate.xsl
java.antbuild.jaxbri.template=org.apache.axis2.wsdl.codegen.writer.AntBuildWriter,/org/apache/axis2/wsdl/template/general/jaxbriAntBuildTemplate.xsl
java.antbuild.adb.template=org.apache.axis2.wsdl.codegen.writer.AntBuildWriter,/org/apache/axis2/wsdl/template/general/adbAntBuildTemplate.xsl
java.antbuild.none.template=org.apache.axis2.wsdl.codegen.writer.AntBuildWriter,/org/apache/axis2/wsdl/template/general/defaultAntBuildTemplate.xsl
# file extension for generated files from this language
java.filename.extension=java
#
#####################################################################################################################
# C section  - Templates.
# The format of the templates is <writer-class-name>,<template-name>
# Note this section is specific to the emitter logic. One can have anything here!

c.interface.header.template=org.apache.axis2.wsdl.codegen.writer.CStubHeaderWriter,/org/apache/axis2/wsdl/template/c/StubHeaderTemplate.xsl
c.interface.impl.template=org.apache.axis2.wsdl.codegen.writer.CStubSourceWriter,/org/apache/axis2/wsdl/template/c/StubSourceTemplate.xsl
c.skeleton.header.template=org.apache.axis2.wsdl.codegen.writer.CSkelHeaderWriter,/org/apache/axis2/wsdl/template/c/SkelHeaderTemplate.xsl
c.skeleton.impl.template=org.apache.axis2.wsdl.codegen.writer.CSkelSourceWriter,/org/apache/axis2/wsdl/template/c/SkelSourceTemplate.xsl
c.svc_skeleton.template=org.apache.axis2.wsdl.codegen.writer.CSvcSkeletonWriter,/org/apache/axis2/wsdl/template/c/ServiceSkeleton.xsl
c.service.template=org.apache.axis2.wsdl.codegen.writer.CServiceXMLWriter,/org/apache/axis2/wsdl/template/c/ServiceXMLTemplate.xsl
c.build.template=org.apache.axis2.wsdl.codegen.writer.CBuildScriptWriter,/org/apache/axis2/wsdl/template/c/BuildScriptTemplate.xsl
# file extension for generated source files from this language
c.filename.extension=c

jax-ws.exception.template=org.apache.axis2.wsdl.codegen.writer.ExceptionWriter,/org/apache/axis2/wsdl/template/java/JaxwsExceptionTemplate.xsl
jax-ws.interface.impl.template=org.apache.axis2.wsdl.codegen.writer.InterfaceImplementationWriter,/org/apache/axis2/wsdl/template/java/JaxwsServiceEndpointInterfaceImplTemplate.xsl
jax-ws.skeleton.template=org.apache.axis2.wsdl.codegen.writer.SkeletonWriter,/org/apache/axis2/wsdl/template/java/JaxwsServiceClassTemplate.xsl
jax-ws.skeleton.interface.template=org.apache.axis2.wsdl.codegen.writer.SkeletonInterfaceWriter,/org/apache/axis2/wsdl/template/java/JaxwsServiceEndpointInterfaceTemplate.xsl
jax-ws.testclass.template=org.apache.axis2.wsdl.codegen.writer.TestClassWriter,/org/apache/axis2/wsdl/template/java/TestClassTemplate.xsl
jax-ws.service.template=org.apache.axis2.wsdl.codegen.writer.ServiceXMLWriter,/org/apache/axis2/wsdl/template/java/JaxwsServiceXMLTemplate.xsl
jax-ws.antbuild.jaxbri.template=org.apache.axis2.wsdl.codegen.writer.AntBuildWriter,/org/apache/axis2/wsdl/template/general/jaxbriAntBuildTemplate.xsl
jax-ws.antbuild.none.template=org.apache.axis2.wsdl.codegen.writer.AntBuildWriter,/org/apache/axis2/wsdl/template/general/defaultAntBuildTemplate.xsl
# file extension for generated files from this language
jax-ws.filename.extension=java

