// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.debug.core.model;
import org.chromium.sdk.Script;
import org.eclipse.core.resources.IFile;
/**
* A representation of V8 VM resource in a virtual project. The exact nature of the resource
* is specified by metadata. However the exact type of metadata is only known in runtime.
*/
public interface VmResource {
VmResourceId getId();
Metadata getMetadata();
IFile getVProjectFile();
/**
* @return a name of the file as a user sees it (i.e. without .chromium suffix)
*/
String getLocalVisibleFileName();
void deleteResourceAndFile();
/**
* Defines a logic behind a particular resource. Other interfaces should extend this interface
* and provide more data.
* As an example there might be imaginary resource that contains formatted sources of a
* real resource.
*/
interface Metadata {
}
/**
* A special kind of {@link Metadata} that describes a resource directly linked to a resource
* in VM. It holds one or several {@link Script}s. Typically resource is .js or .html file.
*/
interface ScriptHolder extends Metadata {
/**
* @return script if this resource entirely consists of 1 script, otherwise throws exception
* @throws UnsupportedOperationException if this resource does not entirely consists of 1 script
* TODO(peter.rybin): redesign this method to normally work with html resources.
*/
Script getSingleScript();
}
}