/*******************************************************************************
 * 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.apache.ofbiz.entity.Delegator'
	property name: 'dispatcher', type: 'org.apache.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', fields: 'java.util.Map', useCache: 'boolean']
    method name: 'findList', type: 'java.util.List', params: [entityName: 'String', inputMap: 'java.util.Map']
    method name: 'select', type: 'org.apache.ofbiz.entity.util.EntityQuery', params: [entity: 'java.util.Set']
    method name: 'select', type: 'org.apache.ofbiz.entity.util.EntityQuery', params: [entity: 'String...']
    method name: 'from', type: 'org.apache.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']
    method name: 'logVerbose', type: 'void', params: [message: 'String']
}
