[ https://issues.apache.org/jira/browse/TAP5-2019?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13665461#comment-13665461 ]
Magnus Kvalheim commented on TAP5-2019: --------------------------------------- Found a workaround as discussed in the thread - http://apache-tapestry-mailing-list-archives.1045711.n5.nabble.com/Why-is-AssetPathConverter-not-called-for-javascript-stacks-td5716629.html Will post back here for reference. Decorator: public static JavaScriptStackPathConstructor decorateJavaScriptStackPathConstructor( final JavaScriptStackPathConstructor delegate, @Local final AssetPathConverter assetPathConverter) { return new JavaScriptStackPathConstructor() { public List<String> constructPathsForJavaScriptStack(String stackName) { List<String> paths = delegate.constructPathsForJavaScriptStack(stackName); if (Validator.isNullOrEmpty(paths)) return paths; List<String> newList = new ArrayList<>(paths.size()); for (String path : paths) { newList.add(assetPathConverter.convertAssetPath(path)); } return newList; } }; } > AssetPathConverter is not called for javascript stacks > ------------------------------------------------------ > > Key: TAP5-2019 > URL: https://issues.apache.org/jira/browse/TAP5-2019 > Project: Tapestry 5 > Issue Type: Bug > Components: tapestry-core > Affects Versions: 5.3.4 > Reporter: Magnus Kvalheim > Labels: AssetPathConverter, assets, cdn > > (related thread: > http://tapestry.1045711.n5.nabble.com/Why-is-AssetPathConverter-not-called-for-javascript-stacks-td5716629.html) > We use assetpathconverter in order to get assets from CDN(cloudfront). > However it looks like it's not working for stack assets (but it is for other > assets). > Module: > binder.bind(AssetPathConverter.class, > CDNAssetPathConverter.class).withId("CDNAssetPathConverter"); > public static void > contributeServiceOverride(MappedConfiguration<Class,Object> configuration, > @Local AssetPathConverter assetPathConverter) { > configuration.add(AssetPathConverter.class, assetPathConverter); > } > CDNAssetPathConverter: > public class CDNAssetPathConverter implements AssetPathConverter { > private IParameter ip; > private String applicationVersion; > public CDNAssetPathConverter(@Inject > @Symbol(SymbolConstants.APPLICATION_VERSION) String applicationVersion, > @Inject IParameter ip){ > this.applicationVersion = applicationVersion; > this.ip = ip; > } > String getCDNDomain() { > return ip.getString(PKey.DOMAIN_CDN_VERSIONED, null); > } > @Override > public String convertAssetPath(String assetPath) { > String domain = getCDNDomain(); > if(domain==null) return assetPath; > > String result = convertToCDN(assetPath, domain); > return result; > } > private String convertToCDN(String path, String domain) { > String _path = path.replaceFirst("^/+", ""); > return String.format("http://%s/%s", domain, _path); > } > @Override > public boolean isInvariant() { > return false; > } > } > Howard thought it might be an oversight -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira