Re: [T5] Asset Url is changed via domain. Meet Problems when use Alias or AliasOverrides
hmm. Is there an AssetFactory? Tuan wrote: Thanks Fernando Padilla, I created AssetSourceDecorator as you said. The result is + For all assets are accessed by @includestylesheet, @include, It is ok. + For all assets are accessed in template ${asset:tapestry_banner.gif}, it is ok when end-user go to the page in first time. The time after that,* it is fail, **AssetSourceDecorator is not called **.* I know assetSourceImpl make cache and check whether cache to asset. But, T5 doesn't call AssetSourceDecorator when cache for the asset is avaliable. It means that there is a class checked whether cache before. Do you know the class? Actually, I met the problems (asset, asset cache ) in last month. At the time, I created a service "AssetHelper" that having a method "getAsset(String path)". When I want to access resource (css, js, image ...), I used the service. It means that some way like that ${asset:...}, @inj...@path... can not be used Now, I see my old way is not convenient. so, I try to solve the problem by using the ways of T5 ( ${asset:tapestry_banner.gif}, ). This is my code: public class AssetSourceDecorator implements AssetSource { ... private AssetSource _t5AssetSource; public AssetSourceDecorator(AssetSource assetSource) { logger.info(">>>AssetSourceDecorator"); *_t5AssetSource = assetSource;* } public Asset getAsset(Resource baseResource, String path, Locale locale) { logger.info(">>>getAsset " + path ); path = modifyPath(path); *return _t5AssetSource.getAsset(baseResource, path, locale);* } ... } public class AppModule { public static AssetSource decorateAssetSource(AssetSource assetSource) { return new AssetSourceDecorator(assetSource); } } Fernando Padilla wrote: another thing you can play with, which is sometimes easier to integrate, is the service decoration. try learning about decorators. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [T5] Asset Url is changed via domain. Meet Problems when use Alias or AliasOverrides
Thanks Fernando Padilla, I created AssetSourceDecorator as you said. The result is + For all assets are accessed by @includestylesheet, @include, It is ok. + For all assets are accessed in template ${asset:tapestry_banner.gif}, it is ok when end-user go to the page in first time. The time after that,* it is fail, **AssetSourceDecorator is not called **.* I know assetSourceImpl make cache and check whether cache to asset. But, T5 doesn't call AssetSourceDecorator when cache for the asset is avaliable. It means that there is a class checked whether cache before. Do you know the class? Actually, I met the problems (asset, asset cache ) in last month. At the time, I created a service "AssetHelper" that having a method "getAsset(String path)". When I want to access resource (css, js, image ...), I used the service. It means that some way like that ${asset:...}, @inj...@path... can not be used Now, I see my old way is not convenient. so, I try to solve the problem by using the ways of T5 ( ${asset:tapestry_banner.gif}, ). This is my code: public class AssetSourceDecorator implements AssetSource { ... private AssetSource _t5AssetSource; public AssetSourceDecorator(AssetSource assetSource) { logger.info(">>>AssetSourceDecorator"); *_t5AssetSource = assetSource;* } public Asset getAsset(Resource baseResource, String path, Locale locale) { logger.info(">>>getAsset " + path ); path = modifyPath(path); *return _t5AssetSource.getAsset(baseResource, path, locale);* } ... } public class AppModule { public static AssetSource decorateAssetSource(AssetSource assetSource) { return new AssetSourceDecorator(assetSource); } } Fernando Padilla wrote: another thing you can play with, which is sometimes easier to integrate, is the service decoration. try learning about decorators. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [T5] Asset Url is changed via domain. Meet Problems when use Alias or AliasOverrides
another thing you can play with, which is sometimes easier to integrate, is the service decoration. try learning about decorators. On 3/26/09 12:09 AM, Tuan wrote: Hi all, This is my problems when I use Alias or AliasOverrides. Please help me correct them. _*Context: *_ IndexPage.tml MyComponent.tml -=> url of image.gif is ".../components/image.gif" In my app - business logic, theme and template are used. They are changed via *domain*. It means above image url will change via domain. Ex: - If end user go to my app site in "domain1.com", url of image should be "/components/*domain1.com*/image.gif" - ... "domain2.com", "/components/*domain2.com*/image.gif" (domain1 and domain both specify same IP) _*My solution:*_ Override service AssetSource (trig it to change path) MyAssetSource.java public class MyAssetSource extends AssetSourceImpl { ... @Override public Asset getClasspathAsset(String path) { path = modifyPath(path); return getClasspathAsset(path, null); } ... } Then, Use MyAssetSource to override T5 AssetSource service binder.bind(AssetSource.class, MyAssetSource.class).withId( "MyAssetSource"); public void contributeAlias(Configuration configuration, @InjectService("MyAssetSource") AssetSource assetSource) { configuration .add(AliasContribution.create(AssetSource.class, assetSource)); } _*Problem: *_ - T5 throws error when go to index page: No adapter from type org.apache.tapestry5.ioc.internal.util.ClasspathResource to type org.apache.tapestry5.services.AssetFactory is available (registered types are (none)) _* *_- In another way, I use contributeAliasOverrides method but I also get some errors. Look like I don't know how to use alias and aliasOverride! Please tell me how use Alias or contributeAliasOverrides. Thanks. _* *_ - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org