Winston Prakash wrote:
>
> The following is not the offending code. The Resource loading
> happened to happen here. The offending code is at
> JavaScriptUtilities.getThemeJavaScript which is exposed via this method.
>
This is not the source of the problem.
This call site only references "themeContext.getResourcePath". The
contract of "getResourcePath" is to
return absolute reference to the argument. The assumption being that the
argument is a relative path.
The contract does not say that the argument cannot be "". Clearly if
this interface were tightened
then it might not be appropriate to call this method in this way. Note
that the code that is
not in the "isDesignTime" block will not generate the warning.
The reason that the warning is showing up is because of the design time
hack in
JSFThemeContext. If a runtime ThemeContext were implemented by VWP/Creator
then we wouldn't have had to have these "isDesignTime" hacks in
component level code
which is clearly not good practice.
That said, if this is a problem the "isDesignTime" hack can check for ""
and act appropriately.
> BTW, work around in this code is because of the image properties
> specified as fully qualified name
>
> Ex.
>
> ALARM_CRITICAL_SMALL=/com/sun/webui/jsf/suntheme/images/alarms/critical_small.gif
>
>
> It should be
>
> ALARM_CRITICAL_SMALL=com/sun/webui/jsf/suntheme/images/alarms/critical_small.gif
>
>
> NB complains about this, since it is against the recommendation by JLS
Again this is not a runtime problem. And has nothing to do with JLS
recommendations.
It is just a data format in a properties file.
And we know the history of this issue. Our component resource bundles
have been
specified in this way for a very long time and it was risky to change
this in case other
code that we did not control was referencing this theme data.
Please do not forget that these are independent component libraries and
have a life
of their own. They are not and should not have to have NB specific code
as part
of the implementation.
>
>
> >If you VWP/Creator had fully implemented FacesContext like we had
> been asking over the years
> > then these design time tests would also not have to be necessary and
> again this issue would not have
> > arisen.
>
> We do. We use JSF RI 1.2 directly at designtime via JSF support module.
Are you saying you are no longer creating a FacesContext wrapper ?
-rick
>
> - Winston
>
>>
>> You should have also referenced this code in your email since you
>> reference JSFThemeContext
>>
>> /**
>> * Return an appropriate resource path within this theme context.
>> * Use is Beans.isDesignTime to prevent ThemeServlet prefix from
>> * being appended. Creator handles doing the right thing with
>> * getRequestContextPath()
>> */
>> public String getResourcePath(String path) {
>> String resourcePath = path;
>> if (Beans.isDesignTime()) {
>> <<<====================================
>> ClassLoader cl = getDefaultClassLoader();
>> // NB6 gives warnings if the path has a leading "/". So,
>> strip it of
>> f if it has one
>> URL url = cl.getResource(path.startsWith("/") ?
>> path.substring(1) :
>> path);
>> if (url != null) {
>> resourcePath = url.toExternalForm();
>> }
>> } else if (path != null) {
>> FacesContext context = FacesContext.getCurrentInstance();
>> String servletContext = getThemeServletContext();
>> StringBuilder sb = new StringBuilder(128);
>> // Just to make sure
>> //
>> if (!servletContext.startsWith("/")) {
>> sb.append("/");
>> }
>> sb.append(servletContext);
>> if (!path.startsWith("/") && !servletContext.endsWith("/")) {
>> sb.append("/");
>> }
>> sb.append(path);
>> resourcePath = context.getApplication().getViewHandler().
>> getResourceURL(context, sb.toString());
>> }
>> return resourcePath;
>> }
>>
>> If you VWP/Creator had fully implemented FacesContext like we had
>> been asking over the years
>> then these design time tests would also not have to be necessary and
>> again this issue would not have
>> arisen.
>>
>> -rick
>>
>>>
>>> -rick
>>>
>>>>
>>>> - Winston
>>>>
>>>>>> Netbeans enforces it by throwing an exception. Since this part of
>>>>>> the
>>>>>> code in JSFThemeContext viloates seems to violate this principle,
>>>>>> NB keeps throwing
>>>>>> the informational exception
>>>>>>
>>>>>> java.lang.IllegalStateException: You are trying to access file:
>>>>>> from the default package. Please see
>>>>>> http://www.netbeans.org/download/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/classpath.html#default_package
>>>>>>
>>>>>> at
>>>>>> org.netbeans.ProxyClassLoader.printDefaultPackageWarning(ProxyClassLoader.java:478)
>>>>>>
>>>>>> at
>>>>>> org.netbeans.ProxyClassLoader.getResource(ProxyClassLoader.java:258)
>>>>>> at java.lang.ClassLoader.getResource(ClassLoader.java:972)
>>>>>> at java.lang.ClassLoader.getResource(ClassLoader.java:972)
>>>>>> at
>>>>>> com.sun.webui.jsf.theme.JSFThemeContext.getResourcePath(JSFThemeContext.java:148)
>>>>>>
>>>>>> at
>>>>>> com.sun.webui.jsf.util.JavaScriptUtilities.getThemeJavaScript(JavaScriptUtilities.java:509)
>>>>>>
>>>>>> at
>>>>>> com.sun.webui.jsf.util.JavaScriptUtilities.getDojoConfig(JavaScriptUtilities.java:131)
>>>>>>
>>>>>> at
>>>>>> com.sun.webui.jsf.renderkit.html.HeadRenderer.renderAttributes(HeadRenderer.java:134)
>>>>>>
>>>>>> at
>>>>>> com.sun.webui.jsf.renderkit.html.AbstractRenderer.encodeBegin(AbstractRenderer.java:156)
>>>>>>
>>>>>> at
>>>>>> javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:785)
>>>>>>
>>>>>> at
>>>>>> org.netbeans.modules.visualweb.insync.faces.FacesPageUnit.renderBean(FacesPageUnit.java:1276)
>>>>>>
>>>>>> at
>>>>>> org.netbeans.modules.visualweb.insync.faces.FacesPageUnit.renderNode(FacesPageUnit.java:1532)
>>>>>>
>>>>>> at
>>>>>> org.netbeans.modules.visualweb.insync.faces.FacesPageUnit.renderBean(FacesPageUnit.java:1324)
>>>>>>
>>>>>>
>>>>>> - Winston
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>>
>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_woodstock.dev.java.net
>>>>>> For additional commands, e-mail: dev-help_at_woodstock.dev.java.net
>>>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe_at_woodstock.dev.java.net
>>> For additional commands, e-mail: dev-help_at_woodstock.dev.java.net
>>>
>