###############################################################################
# Copyright (c) 2008 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 Corporation - initial API and implementation
###############################################################################
!--ScenarioType REQUIRED. Differentiates from "service" scenario.
ScenarioType=client

!--InitialSelection REQUIRED.  Workspace relative URI to the input WSDL or Java.
InitialSelection=/dynamicWebProjectName/WebContent/wsdl/myService.wsdl

!--Utility property values - use these to list values for the following properties:
!-- Client.RuntimeId, Client.ServerId 
ListRuntimes=true
ListServers=true
!-- Verbose will list informational messages as well as errors if set to true
Verbose=true

 
!--Client.RuntimeId - ID of web service runtime 
Client.RuntimeId=org.eclipse.jst.ws.axis.creation.axisWebServiceRT
!--Client.ServerId - ID of target server 
Client.ServerId=org.eclipse.jst.server.tomcat.60

!--ClientProjectName - name of Client project - this property can be used to give the client project a 
!-- different name than the project containing the initial selection
!--ClientProjectName=clientProjectName

!--ClientEarProjectName- name of Client EAR project - set only if applicable for selected server type
!--ClientEarProjectName=clientEARProjectName

!--ClientComponentType - type of Client project - the following are valid Axis templates: template.jst.web and template.jst.utility
!--ClientComponentType=template.jst.web

!-- CustomizeClientMappings - set to true to supply package-namespace mappings type: boolean
!--CustomizeClientMappings=false  
    
!-- Mappings 
!-- Workspace relative URI to property file containing mappings
!-- Mappings are used to override the default package names of the generated Java classes.
!-- Need not be set if CustomizeClientMappings is false  
!-- The content of the properties file must be of the format namespace=package.
!--Mappings=/testProj/mappings/mappings.txt

!--OverwriteFilesEnabled - set to true to overwrite files that already exist. type:boolean 
!-- note for non-interactive mode it is recommended that this be set to true
!-- OverwriteFilesEnabled=true

!--CreateFoldersEnabled - set to true create folders necessary during file generation type:boolean
!-- note for non-interactive mode it is recommended that this be set to true
!-- CreateFoldersEnabled=true

!--CheckoutFilesEnabled - set to true to check out files with no warning to the user type:boolean
!-- note for non-interactive mode it is recommended that this be set to true
!-- CheckoutFilesEnabled=true
