| /******************************************************************************* |
| * Copyright (c) 2003, 2005 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 |
| *******************************************************************************/ |
| package org.eclipse.wst.server.core.model; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.wst.server.core.IModule; |
| /** |
| * A module delegate provides a mechanism for discovering information |
| * about individual modules. Modules are returned from module factory |
| * delegates; their delegates are created when |
| * ModuleFactoryDelegate.createModule() is called. |
| * <p> |
| * When the module needs to be given a delegate, the delegate class |
| * specified for the module is instantiated with a 0-argument |
| * constructor. |
| * </p> |
| * <p> |
| * Module delegates may keep state in instance fields, but that state is |
| * transient and will not be persisted across workbench sessions. |
| * </p> |
| * <p> |
| * This abstract class is intended to be extended only by clients |
| * to extend the <code>moduleFactories</code> extension point. |
| * </p> |
| * |
| * @see org.eclipse.wst.server.core.IModule |
| * @see ModuleFactoryDelegate |
| * @since 1.0 |
| */ |
| public abstract class ModuleDelegate { |
| private IModule module; |
| |
| /** |
| * Delegates must have a public 0-arg constructor. |
| */ |
| public ModuleDelegate() { |
| // do nothing |
| } |
| |
| /** |
| * Initializes this module delegate with its life-long module instance. |
| * <p> |
| * This method is called by the server core framework. |
| * Clients should never call this method. |
| * </p> |
| * |
| * @param newModule the module instance |
| */ |
| public final void initialize(IModule newModule) { |
| this.module = newModule; |
| initialize(); |
| } |
| |
| /** |
| * Initializes this module delegate. This method gives delegates a chance |
| * to do their own initialization. |
| * <p> |
| * This method is called by the server core framework. |
| * Clients should never call this method. |
| * </p> |
| */ |
| public void initialize() { |
| // do nothing |
| } |
| |
| /** |
| * Returns the module that this module delegate corresponds to. |
| * |
| * @return the module |
| */ |
| public IModule getModule() { |
| return module; |
| } |
| |
| /** |
| * Validates this module instance. Subclasses should |
| * override and call super.validate() for basic validation. |
| * <p> |
| * This method is called by the web server core framework. |
| * Clients should never call this method. |
| * </p> |
| * |
| * @return a status object with code <code>IStatus.OK</code> if this |
| * module is valid, otherwise a status object indicating what is |
| * wrong with it |
| */ |
| public abstract IStatus validate(); |
| |
| /** |
| * Returns the child modules of this module. |
| * |
| * @return a possibly empty array of child modules |
| */ |
| public abstract IModule[] getChildModules(); |
| |
| /** |
| * Returns the current array of module artifacts. |
| * |
| * @return a possibly empty array containing the module resources |
| * @throws CoreException thrown if there is a problem getting the members |
| */ |
| public abstract IModuleResource[] members() throws CoreException; |
| } |