/*******************************************************************************
 * 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.
 *******************************************************************************/

contribute(currentType(subType('groovy.lang.Script'))) {
    property name : 'parameters', type : 'java.util.Map'
	property name: 'context', type: 'java.util.Map'
	property name: 'delegator', type: 'org.ofbiz.entity.Delegator'
	property name: 'dispatcher', type: 'org.ofbiz.service.LocalDispatcher'

	method name: 'runService', type: 'java.util.Map', params: [serviceName: 'String', inputMap: 'java.util.Map']
	method name: 'makeValue', type: 'java.util.Map', params: [entityName: 'String']
	method name: 'findOne', type: 'java.util.Map', params: [entityName: 'String', inputMap: 'java.util.Map']
	method name: 'findList', type: 'java.util.List', params: [entityName: 'String', inputMap: 'java.util.Map']
	method name: 'select', type: 'org.ofbiz.entity.util.EntityQuery', params: [entity: 'java.util.Set']
	method name: 'select', type: 'org.ofbiz.entity.util.EntityQuery', params: [entity: 'String...']
	method name: 'from', type: 'org.ofbiz.entity.util.EntityQuery', params: [entity: 'java.lang.Object']
	method name: 'success', type: 'def', params: [message: 'String']
	method name: 'failure', type: 'java.util.Map', params: [message: 'String']
	method name: 'error', type: 'def', params: [message: 'String']
	method name: 'logInfo', type: 'void', params: [message: 'String']
	method name: 'logWarning', type: 'void', params: [message: 'String']
	method name: 'logError', type: 'void', params: [message: 'String']
}
