All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.aspectj.weaver.tools.cache.CacheBacking Maven / Gradle / Ivy

/*******************************************************************************
 * Copyright (c) 2012 Contributors.
 * All rights reserved.
 * This program and the accompanying materials are made available
 * under the terms of the Eclipse Public License v 2.0
 * which accompanies this distribution and is available at
 * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
 *
 * Contributors:
 *   John Kew (vmware)         	initial implementation
 *   Lyor Goldstein (vmware)	add support for weaved class being re-defined
 *******************************************************************************/
package org.aspectj.weaver.tools.cache;

/**
 * Interface for the backing to the cache; usually a file,
 * but could be an in-memory backing for testing.
 * 

* aspectj and jvmti provide no suitable guarantees * on locking for class redefinitions, so every implementation * must have a some locking mechanism to prevent invalid reads. *

*/ public interface CacheBacking { /** * Return a list of keys which match the given * regex. * * @param regex * @return */ String[] getKeys(String regex); /** * Remove an entry from the cache * * @param ref */ void remove(CachedClassReference ref); /** * Clear the entire cache */ void clear(); /** * Get a cache entry * * @param ref entry to retrieve * @param originalBytes Pre-weaving class bytes - required in order to * ensure that the cached entry refers to the same original class * @return the cached bytes or null, if the entry does not exist */ CachedClassEntry get(CachedClassReference ref, byte[] originalBytes); /** * Put an entry in the cache * * @param entry key of the entry * @param originalBytes Pre-weaving class bytes - required in order to * ensure that the cached entry refers to the same original class */ void put(CachedClassEntry entry, byte[] originalBytes); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy