Prakash Udupa created TRINIDAD-2421: ---------------------------------------
Summary: NullPointerException when property not resolvable through -tr-property-ref Key: TRINIDAD-2421 URL: https://issues.apache.org/jira/browse/TRINIDAD-2421 Project: MyFaces Trinidad Issue Type: Bug Components: Skinning Affects Versions: 2.0.1-core Reporter: Prakash Udupa The bug: ----------- Suppose in an application's skin file there is a selector definition with a custom skin property '-tr-cjk-font-family' like the following: tr|mySelectorInternal::title{ -tr-cjk-font-family: -tr-property-ref("tr|mySelector","font-family"); } ...and then "font-family" is not defined anywhere for the selector "tr|mySelector". This will lead to the following NPE... java.lang.NullPointerException at java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:881) at org.apache.myfaces.trinidadinternal.style.cache.FileSystemStyleCache._getStyleContextResolvedSkinProperties(FileSystemStyleCache.java:790) at org.apache.myfaces.trinidadinternal.style.cache.FileSystemStyleCache._createEntry(FileSystemStyleCache.java:605) at org.apache.myfaces.trinidadinternal.style.cache.FileSystemStyleCache._getEntry(FileSystemStyleCache.java:465) at org.apache.myfaces.trinidadinternal.style.cache.FileSystemStyleCache.getStyleSheetURIs(FileSystemStyleCache.java:183)... And when this NPE happens, applications are completely broken. It is perfectly fine for a property to not resolve through tr-property-ref due to missing dependencies, it is the skinning framework code that should handle this case gracefully. We should just not try to add a null value to ConcurrentHashMap in the above code path. I'll attach a patch with simple code addition that does a not-null check to cover this case. -- This message was sent by Atlassian JIRA (v6.1#6144)