public void addJarOffset(String offset, URL url) { OffsetListener listener = new OffsetListener(); listener.jarOffset = offset.startsWith("/") ? offset.substring(1) : offset; listener.interestingResource = new ResourceScanListener.InterestingResource(url); jarOffsets.add(listener); }
/** * 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); } } }