private void notifyAction(Set<ResourceScanListener> listeners, ResourceScanListener.ScanAction action) { for(ResourceScanListener listener : listeners) { listener.scanAction(action); } } }
public void fireListeners(List<ResourceScanListener.ScanResource> scanResources, OffsetListener offsetListener, JarFile jf) { if (scanResources.size() > 0) { for (ListenerInterest interested : offsetListener.listeners) { try { List<ResourceScanListener.ScanResource> desired = interested.listener.resource(scanResources); if (desired != null) { for (ResourceScanListener.ScanResource desire : desired) { interested.listener.deliver(desire, jf.getInputStream(desire.entry)); } } } catch (Exception e) { throw new RuntimeException("Unable to ask listener for resources", e); } } scanResources.clear(); } }
/** * Allows us to keep a track of who is interested in this classpath artifact * * @param listeners */ public void askListeners(List<ResourceScanListener> listeners) { if (jarOffsets.size() == 0) { OffsetListener offsetListener = new OffsetListener(); offsetListener.jarOffset = ""; offsetListener.interestingResource = new ResourceScanListener.InterestingResource(url); jarOffsets.add(offsetListener); onlyNullJarOffset = true; } for (ResourceScanListener listener : listeners) { try { for (OffsetListener offsetListener : jarOffsets) { ResourceScanListener.InterestAction interestAction = listener.isInteresting(offsetListener.interestingResource); if (interestAction != ResourceScanListener.InterestAction.NONE) { offsetListener.listeners.add(new ListenerInterest(listener, interestAction)); } } } catch (Exception ex) { throw new RuntimeException("Failed to ask listener for interest " + listener.getClass().getName() + ": " + ex.getMessage(), ex); } } }
private void fireFileResourceListeners(List<ResourceScanListener.ScanResource> scanResources, OffsetListener offsetListener) { if (scanResources.size() > 0) { for (ListenerInterest interested : offsetListener.listeners) { try { List<ResourceScanListener.ScanResource> desired = interested.listener.resource(scanResources); if (desired != null) { for (ResourceScanListener.ScanResource desire : desired) { if (desire.file.isFile()) { FileInputStream stream = new FileInputStream(desire.file); interested.listener.deliver(desire, stream); stream.close(); } } } } catch (Exception e) { throw new RuntimeException("Unable to ask listener for resources", e); } } scanResources.clear(); } }