[jboss-jira] [JBoss JIRA] (WFLY-4023) javax.el.ImportHandler#importClass & #importPackage doesn't import WEB-INF/classes

Tomaz Cerar (JIRA) issues at jboss.org
Tue Oct 28 09:42:35 EDT 2014


     [ https://issues.jboss.org/browse/WFLY-4023?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Tomaz Cerar updated WFLY-4023:
------------------------------
    Steps to Reproduce: 
{code:title=Bar.java|borderStyle=solid}
@ManagedBean(eager=true)
@ApplicationScoped
public class EnumConfig {

    @PostConstruct
    public void init() {

        System.out.println("Testing 123...");

        FacesContext.getCurrentInstance().getApplication().addELContextListener(

            new ELContextListener() {

                @Override
                public void contextCreated(ELContextEvent event) {

                    System.out.println("Testing 456...");

                    event.getELContext().getImportHandler().importClass(
                        "foo.bar.business.model.enumeration.YesOrNo");

                    //importHandler.importPackage(
                    //  "foo.bar.business.model.enumeration.preference");

                    Class<?> clazz = importHandler.resolveClass("YesOrNo");

                    System.out.println("clazz = " + clazz);
                }
            }
        );
    }
}
{code}

{noformat}
21:26:48,703 INFO [stdout] (MSC service thread 1-4) Testing 123...
21:39:11,976 INFO [stdout] (default task-9) Testing 456...
21:39:11,976 INFO [stdout] (default task-18) clazz = null

importHandler = {javax.el.ImportHandler at 15909}
    classNameMap = {java.util.HashMap at 15910} size = 1
        [0] = {java.util.HashMap$Node at 15923}"YesOrNo" -> "foo.bar.business.model.enumeration.YesOrNo"
    classMap = {java.util.HashMap at 15911} size = 0
    staticNameMap = {java.util.HashMap at 15912} size = 0
    notAClass = {java.util.HashSet at 15913} size = 1
        [0] = {java.lang.String at 15030}"foo.bar.business.model.enumeration.YesOrNo"
    packages = {java.util.ArrayList at 15914} size = 1
        [0] = {java.lang.String at 15926}"java.lang"
{noformat}

  was:
{code:title=Bar.java|borderStyle=solid}
@ManagedBean(eager=true)
@ApplicationScoped
public class EnumConfig {

    @PostConstruct
    public void init() {

        System.out.println("Testing 123...");

        FacesContext.getCurrentInstance().getApplication().addELContextListener(

            new ELContextListener() {

                @Override
                public void contextCreated(ELContextEvent event) {

                    System.out.println("Testing 456...");

                    event.getELContext().getImportHandler().importClass(
                        "foo.bar.business.model.enumeration.YesOrNo");

                    //importHandler.importPackage(
                    //  "foo.bar.business.model.enumeration.preference");

                    Class<?> clazz = importHandler.resolveClass("YesOrNo");

                    System.out.println("clazz = " + clazz);
                }
            }
        );
    }
}

21:26:48,703 INFO [stdout] (MSC service thread 1-4) Testing 123...
21:39:11,976 INFO [stdout] (default task-9) Testing 456...
21:39:11,976 INFO [stdout] (default task-18) clazz = null

importHandler = {javax.el.ImportHandler at 15909}
    classNameMap = {java.util.HashMap at 15910} size = 1
        [0] = {java.util.HashMap$Node at 15923}"YesOrNo" -> "foo.bar.business.model.enumeration.YesOrNo"
    classMap = {java.util.HashMap at 15911} size = 0
    staticNameMap = {java.util.HashMap at 15912} size = 0
    notAClass = {java.util.HashSet at 15913} size = 1
        [0] = {java.lang.String at 15030}"foo.bar.business.model.enumeration.YesOrNo"
    packages = {java.util.ArrayList at 15914} size = 1
        [0] = {java.lang.String at 15926}"java.lang"




> javax.el.ImportHandler#importClass & #importPackage doesn't import WEB-INF/classes
> ----------------------------------------------------------------------------------
>
>                 Key: WFLY-4023
>                 URL: https://issues.jboss.org/browse/WFLY-4023
>             Project: WildFly
>          Issue Type: Bug
>          Components: JSF
>    Affects Versions: 8.1.0.Final
>         Environment: Win7, Wildfly 8.1.0.Final
>            Reporter: Patrick Garner
>            Assignee: Farah Juma
>   Original Estimate: 4 hours
>  Remaining Estimate: 4 hours
>
> ImportHandler is not importing classes in WEB-INF/classes and, thus, developers are unable to import classes into the EL evaluation environment per EL 3.0 spec. section 1.22.2 "Imports of Packages, Classes, and Static Fields"
> Here's the ImportHandler relevant code (https://github.com/jboss/jboss-el-api_spec/blob/master/src/main/java/javax/el/ImportHandler.java#L176)
> {code:java}
> private Class<?> getClassFor(String className) {
>     if (!notAClass.contains(className)) {
>         try {
>             return Class.forName(className, false, getClass().getClassLoader());
>         } catch (ClassNotFoundException ex) {
>             notAClass.add(className);
>         }
>     }
>     return null;
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.1#6329)


More information about the jboss-jira mailing list