blob: fd9d78a6cc204db5476d0cb5b1bb36269602eefd [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 Martin Lippert and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0.
*
* Contributors:
* Martin Lippert - initial implementation
* Martin Lippert - caching of generated classes
*******************************************************************************/
package org.eclipse.equinox.weaving.internal.caching;
import java.util.Map;
/**
* A CacheItem contains the necessary information to store the cached bytecode
* of a class to the cache disk storage.
*
* @author Martin Lippert
*/
public class CacheItem {
private final byte[] cachedBytes;
private final String directory;
private final Map<String, byte[]> generatedClasses;
private final String name;
/**
* Create a new item to be cached
*
* @param cachedBytes The bytes to be written to the cache
* @param directory The directory to where the bytes should be stored
* @param name The name of the file to store the bytes in
*/
public CacheItem(final byte[] cachedBytes, final String directory,
final String name) {
this(cachedBytes, directory, name, null);
}
/**
* Create a new item to be cached
*
* @param cachedBytes The bytes to be written to the cache
* @param directory The directory to where the bytes should be stored
* @param name The name of the file to store the bytes in
* @param generatedClasses The generated classes that should be stored
* together with this item (className -> bytecode)
*/
public CacheItem(final byte[] cachedBytes, final String directory,
final String name, final Map<String, byte[]> generatedClasses) {
this.cachedBytes = cachedBytes;
this.directory = directory;
this.name = name;
this.generatedClasses = generatedClasses;
}
/**
* @return The bytes to be written to the cache under the given name
*/
public byte[] getCachedBytes() {
return cachedBytes;
}
/**
* @return The directory in which the item should be stored
*/
public String getDirectory() {
return directory;
}
/**
* @return A map containing the generated classes (name -> bytecode) for
* this item or null, if there are no generated classes with this
* one
*/
public Map<String, byte[]> getGeneratedClasses() {
return generatedClasses;
}
/**
* @return The name of the file to be written to the cache
*/
public String getName() {
return name;
}
}