/** * *************************************************************************** * Copyright (c) 2010 Qcadoo Limited * Project: Qcadoo Framework * Version: 1.4 * * This file is part of Qcadoo. * * Qcadoo is free software; you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published * by the Free Software Foundation; either version 3 of the License, * or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *************************************************************************** */ package com.qcadoo.model.internal.hooks; import java.lang.reflect.InvocationTargetException; import org.springframework.context.ApplicationContext; import com.qcadoo.model.api.DataDefinition; import com.qcadoo.model.api.FieldDefinition; public abstract class AbstractModelHookDefinition extends AbstractHookDefinition { private DataDefinition dataDefinition; private FieldDefinition fieldDefinition; public AbstractModelHookDefinition(final String className, final String methodName, final String pluginIdentifier, final ApplicationContext applicationContext) throws HookInitializationException { super(className, methodName, pluginIdentifier, applicationContext); } public final void initialize(final DataDefinition dataDefinition) { this.dataDefinition = dataDefinition; } public final void initialize(final DataDefinition dataDefinition, final FieldDefinition fieldDefinition) { this.dataDefinition = dataDefinition; this.fieldDefinition = fieldDefinition; } protected final boolean call(final Object... args) { try { Object result = getMethod().invoke(getBean(), args); if (result instanceof Boolean) { return (Boolean) result; } else { return true; } } catch (IllegalArgumentException e) { throw new IllegalStateException("Failed to invoke hook method", e); } catch (IllegalAccessException e) { throw new IllegalStateException("Failed to invoke hook method", e); } catch (InvocationTargetException e) { throw new IllegalStateException("Failed to invoke hook method", e); } } public DataDefinition getDataDefinition() { return dataDefinition; } public FieldDefinition getFieldDefinition() { return fieldDefinition; } }