| /******************************************************************************* |
| * Copyright (c) 2004, 2007 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; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IProgressMonitor; |
| /** |
| * Represents a (server) runtime type from which runtime instances can be |
| * created. |
| * <p> |
| * The server core framework supports |
| * an open-ended set of runtime types, which are contributed via |
| * the <code>runtimeTypes</code> extension point in the server core |
| * plug-in. Runtime type objects carry no state (all information is |
| * read-only and is supplied by the server runtime type declaration). |
| * The global list of known runtime types is available via |
| * {@link ServerCore#getRuntimeTypes()}. |
| * </p> |
| * <p> |
| * This interface is not intended to be implemented by clients. |
| * </p> |
| * <p> |
| * [issue: What value do runtimes add? |
| * It's main role is for setting up the Java build classpath |
| * for projects holding modules that must be Java compiled. |
| * If the notion of module is to transcend the vagaries of particular |
| * types of server, and, indeed, be published to multiple servers |
| * simultaneously, then matters of build classpath had better not |
| * be tied to the particular servers involved.] |
| * </p> |
| * <p> |
| * Two runtime types are identical if and only if they have the same id. |
| * </p> |
| * |
| * @since 1.0 |
| */ |
| public interface IRuntimeType { |
| /** |
| * Returns the id of this runtime type. |
| * Each known server runtime type has a distinct id. |
| * Ids are intended to be used internally as keys; they are not |
| * intended to be shown to end users. |
| * |
| * @return the runtime type id |
| */ |
| public String getId(); |
| |
| /** |
| * Returns the displayable name for this runtime type. |
| * <p> |
| * Note that this name is appropriate for the current locale. |
| * </p> |
| * |
| * @return a displayable name for this runtime type |
| */ |
| public String getName(); |
| |
| /** |
| * Returns the displayable description for this runtime type. |
| * <p> |
| * Note that this description is appropriate for the current locale. |
| * </p> |
| * |
| * @return a displayable description for this runtime type |
| */ |
| public String getDescription(); |
| |
| /** |
| * Returns the displayable vendor name for this runtime type. If the |
| * runtime type did not specific a vendor, an empty string is returned. |
| * <p> |
| * Note that this description is appropriate for the current locale. |
| * </p> |
| * |
| * @return a displayable vendor name for this runtime type |
| */ |
| public String getVendor(); |
| |
| /** |
| * Returns the displayable version name for this runtime type. If the |
| * runtime type did not specific a vendor, an empty string is returned. |
| * <p> |
| * Note that this description is appropriate for the current locale. |
| * </p> |
| * |
| * @return a displayable version name for this runtime type |
| */ |
| public String getVersion(); |
| |
| /** |
| * Returns an array of module types that this runtime type can support. |
| * <p> |
| * A new array is returned on each call, so clients may store or modify the result. |
| * </p> |
| * |
| * @return the array of module types {@link IModuleType} |
| */ |
| public IModuleType[] getModuleTypes(); |
| |
| /** |
| * Returns whether this runtime type can be instantiated. |
| * <p> |
| * [issue: It's unclear what this method is for. |
| * The implementation checks whether the "class" |
| * and "workingCopyClass" attributes (both optional) were specified. |
| * What would be the point of a runtime type that didn't |
| * have both of these attributes and could not be "created"?] |
| * </p> |
| * |
| * @return <code>true</code> if this type of runtime can be |
| * instantiated, and <code>false</code> if it cannot |
| * @see #createRuntime(String, IProgressMonitor) |
| */ |
| public boolean canCreate(); |
| |
| /** |
| * Creates a working copy instance of this runtime type. |
| * After setting various properties of the working copy, |
| * the client should call {@link IRuntimeWorkingCopy#save(boolean, IProgressMonitor)} |
| * to bring the runtime instance into existence. |
| * <p> |
| * Default values are set by calling the instance's delegate. |
| * Clients should assume that the location and other properties are |
| * not set and must be explicitly set by the client. |
| * </p> |
| * |
| * @param id the id to assign to the runtime instance; the default name is |
| * used if id is <code>null</code> or an empty string |
| * @param monitor a progress monitor, or <code>null</code> if progress |
| * reporting and cancellation are not desired |
| * @return a new runtime working copy with the given id |
| * @throws CoreException if an exception occurs while creating this runtime |
| * or setting it's default values |
| */ |
| public IRuntimeWorkingCopy createRuntime(String id, IProgressMonitor monitor) throws CoreException; |
| } |