[
https://jira.jboss.org/jira/browse/SHRINKWRAP-85?page=com.atlassian.jira....
]
Aslak Knutsen commented on SHRINKWRAP-85:
-----------------------------------------
In it's simples form:
Archive:
/**
* Add a listener for call back based on a specific filter.
*
* @param filter Filter to match for this {@link Listener}
* @param listener CallBack on add
* @return This archive
*/
T addListener(Filter<ArchivePath> filter, Listener listener);
Listener:
public interface Listener
{
/**
* CallBack when a {@link Asset} is added to a specific {@link ArchivePath}.
*
* @param archivePath Where in the {@link Archive} it is being added.
* @param asset What is being added
* @return the Asset to insert into the {@link Archive}, null to not add.
*/
Asset added(ArchivePath archivePath, Asset asset);
}
MemoryMapArchiveBase:
@Override
public T add(Asset asset, ArchivePath path)
{
Validate.notNull(asset, "No asset was specified");
Validate.notNull(path, "No path was specified");
Asset listenerAsset = invokeListeners(path, asset);
........
// should support listener chaining, not just the first one found?
private Asset invokeListeners(ArchivePath path, Asset asset)
{
for(Map.Entry<Filter<ArchivePath>, Listener> listenerEntry :
listeners.entrySet())
{
if(listenerEntry.getKey().include(path))
{
return listenerEntry.getValue().added(path, asset);
}
}
return asset;
}
Support Event/Listener style callbacks
--------------------------------------
Key: SHRINKWRAP-85
URL:
https://jira.jboss.org/jira/browse/SHRINKWRAP-85
Project: ShrinkWrap
Issue Type: Feature Request
Reporter: Aslak Knutsen
A interesting feature would be to be able to add listeners for events on ContainerTypes
or paths.
/META-INF/* or all events generated via ClassContainer
usecase 1, if/when we add something like a ManifestDescriptor, instead of having it like
the WebArchiveDescriptor.addServlet, adding a addMenifestLibrary that delegates down to
addLibrary and update the 'classpath: ' manifest entry.. we could register a
listener on the LibraryContainer and get callbacks when a 'normal' addLibrary
happens
usecase 2, could deploy a 'live' archive to embedded.. one could register a
listener on all changes in the archive and auto redeploy it on events..
deploy it once, redeploy on change
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira