blob: ad7ec7c75e263da8469d637d2070bf07f542ad60 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 Martin Lippert 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:
* Martin Lippert initial implementation
*******************************************************************************/
package org.eclipse.equinox.service.weaving;
/**
* A CacheEntry represents an item that is read (or should have been read) from
* the cache.
*
* A cache entry is the primary communication item between the basic hook
* mechanism and the cache implementation. The cache can tell the hook to skip
* any weaving for the class (in the case the cache knows that the class don't
* need any weaving, e.g. no aspects affect this class) or to use the bytes that
* are read from the cache to define the class in the VM.
*
* @author Martin Lippert
*/
public class CacheEntry {
private final byte[] cachedBytes;
private final boolean dontWeave;
/**
* Creates a new cache entry. This item can tell the basic hook mechanism to
* use the given cached bytes for the class definition or if the original
* class bytes needs weaving or not
*
* @param dontWeave A flag that indicates whether this item needs to be
* woven or not
* @param cachedBytes The bytes for the class read from the cache
*/
public CacheEntry(final boolean dontWeave, final byte[] cachedBytes) {
this.dontWeave = dontWeave;
this.cachedBytes = cachedBytes;
}
/**
* Tell the hook mechanism to weave a class or not to weave a class
*
* @return true, if the class doesn't need any weaving, otherwise false
*/
public boolean dontWeave() {
return dontWeave;
}
/**
* Returns the bytes that are read from the cache. These bytes should be
* used for defining the class instead of the original ones.
*
* @return The cached bytes for the class
*/
public byte[] getCachedBytes() {
return cachedBytes;
}
}