Alternative solution (definitely not saying better):

Have own version of cas-theme-default.properties
cas.standard.css.file=/css/cas.css?v=${project.version}
cas.admin.css.file=/css/admin.css?v=${project.version}
cas.javascript.file=/js/cas.js?v=${project.version}

Get Maven to "filter" this file (stupid name), seems horribly verbose but 
best I've found is:
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>false</filtering>
                <excludes>
                    <exclude>**/cas-theme-default.properties</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/cas-theme-default.properties</include>
                </includes>
            </resource>
        </resources>
    </build>
Easier in other build systems?

Bit shameful when this problem bit me.

Cheers

Sam


On Thursday, January 11, 2018 at 5:45:50 PM UTC, John Sampson wrote:
>
> Hello, I'm currently upgrading a highly customized 4.X CAS version to 
> 5.0.6 and running into a problem with cached assets on our F5 Appliance. 
>
> The problem is that many of the customized assets have the same name (ex. 
> cas.js) but different content, and while we can clear the F5 Ram Cache, 
> this does not allow us the flexibility to switch cleanly back and 
> forth between the two versioned deployments and we would rather add 
> a VersionResourceResolver to the newer version (5.0.X) of the application 
> so that all assets have hash codes in the file names so that the F5 
> appliance will cache the proper version, and the two applications will not 
> be getting one another's assets. 
>
>  If someone has already done this and could provide some pointers I would 
> appreciate it. I think I'm half way there, but am not sure I'm not mixing 
> solutions. We have a desire to get away from our highly customized versions 
> and back inline with the direction of the underlying CAS software (and this 
> is out first step).
>
> I've read several articles and gotten as far as encoding the urls in the 
> templates, but when the login page is accessed, the server returns a 404 
> for the javascript assets, so here is what I have in the 5.0.6 application:
>
> *Background/Environment:*
>
>  
>
>    - Software: CAS 5.0.6 built with an overlay
>    - Application.properties in src/main/resources
>    - JavaScript resources in: src/main/resources/static/js
>    - Thymeleaf templates in in: src/main/resources/static/templates
>    - Environment:
>       -  Local: build and run locally via a fat jar.
>       -  Everywhere else: fat jar built on Jenkins, Docker Image deployed 
>       to K8S Cluster with an F5
>    
>
> *Resources I've reviewed:*
>
>
>    - CAS User Interface Customization 
>    
> <https://apereo.github.io/cas/5.0.x/installation/User-Interface-Customization-CSSJS.html>
>  (No 
>    real info)
>    - Spring Boot 1.4.2 Reference 
>    
> <https://docs.spring.io/spring-boot/docs/1.4.2.RELEASE/reference/html/boot-features-developing-web-applications.html#boot-features-spring-mvc-static-content>
>  (Static 
>    Content, which suggests that the ResourceUrlEncodingFilter should be 
>    AutoConfigured and handled internally by Thymeleaf but it doesn't seem to 
>    be, which is why I added the bean and additional syntax to the templates 
>    below).
>
>
> *Application.properties*
>
> *spring.resources.chain.strategy.content.enabled*=*true**spring.resources.chain.strategy.content.paths*=*/***
>
> *StaticResourceConfig.java*
>
> @Configuration*public class *StaticResourceConfig *extends 
> *WebMvcConfigurerAdapter {
>     @Override    *public void *addResourceHandlers(ResourceHandlerRegistry 
> registry) {
>         VersionResourceResolver versionResourceResolver = *new 
> *VersionResourceResolver()
>                 .addVersionStrategy(*new *ContentVersionStrategy(), 
> *"/js/*.js"*);
>
>         registry.addResourceHandler(*"/js/**"*)
>                 .addResourceLocations(*"classpath:/static/"*)
>                 .setCachePeriod(60 * 60 * 24 * 365) */* one year */*          
>       .resourceChain(*true*)
>                 .addResolver(versionResourceResolver);
>     }
>
>     */****     * Enables usage of versioned assets in thyme leaf templates.** 
>     * **@return*     **/*    @Bean    *public *ResourceUrlEncodingFilter 
> resourceUrlEncodingFilter(){
>         *return new *ResourceUrlEncodingFilter();
>     }
> } 
>
> *LoginForm.html* 
>
>  ... 
>
> <*script **type=**"text/javascript" 
> **th**:src=**"${@mvcResourceUrlProvider.getForLookupPath('/js/login.js')}" 
> */> 
>
> ...
>
>  
> The the script tag above  is rendered properly in the page by 
> the ResourceUrlEncodingFilter:
>
> <script type="text/javascript" 
> src="/js/login-5082a374b0db842cb10cbe96ee10ecbc.js" />
>
>
> However, the server responds with a 404 when the file is requested. 
>
> *Conculsion:*
>
> I feel like I'm missing some component that maps 
> login-5082a374b0db842cb10cbe96ee10ecbc.js back to login.js when the 
> request is received but don't know where to go and debug to look for it. 
>
> In my Google searches, I've seen a few bugs listed with regards to the 
> ordering of Resolvers and the Ant Path Matching Patterns in 
> Spring/SpringBoot, but am just getting around to figuring out which classes 
> log to debug and can report back when I find anything there, but wanted to 
> get this email in the event anyone has some experience or advice with this.
>
> Thanks,
>
> -John
>

-- 
- Website: https://apereo.github.io/cas
- Gitter Chatroom: https://gitter.im/apereo/cas
- List Guidelines: https://goo.gl/1VRrw7
- Contributions: https://goo.gl/mh7qDG
--- 
You received this message because you are subscribed to the Google Groups "CAS 
Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/7f201099-e6f8-46ec-8971-07ed1a95dd86%40apereo.org.

Reply via email to