private void processResource ( final Group group , final Resource resource ) { final UriLocator uriLocator = locatorFactory . getInstance ( resource . getUri ( ) ) ; if ( uriLocator instanceof WildcardUriLocatorSupport ) { final WildcardStreamLocator wildcardStreamLocator = ( ( WildcardUriLocatorSupport ) uriLocator ) . getWildcardStreamLocator ( ) ; // TODO should we probably handle the situation when wildcard is present, but the implementation is not // expandedHandledAware? if ( wildcardStreamLocator . hasWildcard ( resource . getUri ( ) ) && wildcardStreamLocator instanceof WildcardExpanderHandlerAware ) { final WildcardExpanderHandlerAware expandedHandler = ( WildcardExpanderHandlerAware ) wildcardStreamLocator ; LOG . debug ( "Expanding resource: {}" , resource . getUri ( ) ) ; final String baseNameFolder = computeBaseNameFolder ( resource , uriLocator , expandedHandler ) ; LOG . debug ( "baseNameFolder: {}" , baseNameFolder ) ; expandedHandler . setWildcardExpanderHandler ( createExpanderHandler ( group , resource , baseNameFolder ) ) ; try { // trigger the wildcard replacement uriLocator . locate ( resource . getUri ( ) ) ; } catch ( final IOException e ) { // log only LOG . debug ( "[FAIL] problem while trying to expand wildcard for the following resource uri: {}" , resource . getUri ( ) ) ; } finally { // remove the handler, it is not needed anymore expandedHandler . setWildcardExpanderHandler ( null ) ; } } } }
Process each resource and replace it with a collection of resources if it contains wildcard .