[jbosstools-issues] [JBoss JIRA] (JBIDE-12609) NPE when validating EL which uses java.util.Map

Alexey Kazakov (JIRA) jira-events at lists.jboss.org
Thu Sep 13 14:02:32 EDT 2012


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

Alexey Kazakov updated JBIDE-12609:
-----------------------------------

    Description: 
1. Create JSF 2 KickStart project
2. Modify User.java:

{code}
package demo;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name="user")
@SessionScoped
public class User {
	private Map<String, User> users = new HashMap<String, User>();
	private Map<String, Collection> list = new HashMap<String, Collection>();

	private String name;

	public User() {
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String sayHello() {
		return "greeting";
	}

	public Map<String, User> getUsers() {
		return users;
	}

	public void setUsers(Map<String, User> users) {
		this.users = users;
	}

	public Map<String, Collection> getList() {
		return list;
	}

	public void setList(Map<String, Collection> list) {
		this.list = list;
	}
}
{code}
3. Open inputname.xhtml
4. Add <ui:param name="group" value="#{user}" /> inside <ui:composition> (line #9)
5. Save the file.
6. Open common.xhtml
7. Add <h:outputText value="#{group.users['admin'].nam}" />
8. See the log:
{code}
Caused by: java.lang.NullPointerException
	at org.jboss.tools.jst.web.kb.internal.validation.ELValidator.validateElOperand(ELValidator.java:493)
	at org.jboss.tools.jst.web.kb.internal.validation.ELValidator.validateELExpression(ELValidator.java:350)
	at org.jboss.tools.jst.web.kb.internal.validation.ELValidator.validateEL(ELValidator.java:325)
	at org.jboss.tools.jst.web.kb.internal.validation.ELValidator.validate(ELValidator.java:270)
	at org.jboss.tools.common.validation.AsYouTypeValidatorManager.validate(AsYouTypeValidatorManager.java:174)
	... 10 more
{code}
9. Press Ctrl and move the mouse over ['admin']
10. See the log:
{code}
java.lang.NullPointerException
	at org.jboss.tools.common.el.core.resolver.ELSegmentImpl$1.getStartPosition(ELSegmentImpl.java:63)
	at org.jboss.tools.common.el.core.resolver.ELResolutionImpl.findSegmentByOffset(ELResolutionImpl.java:94)
	at org.jboss.tools.jst.text.ext.hyperlink.ELHyperlinkDetector.detectHyperlinks(ELHyperlinkDetector.java:61)
	at org.eclipse.ui.texteditor.HyperlinkDetectorRegistry$HyperlinkDetectorDelegate.detectHyperlinks(HyperlinkDetectorRegistry.java:80)
	at org.eclipse.jface.text.hyperlink.HyperlinkManager.findHyperlinks(HyperlinkManager.java:286)
	at org.eclipse.jface.text.hyperlink.HyperlinkManager.findHyperlinks(HyperlinkManager.java:258)
	at org.eclipse.jface.text.hyperlink.HyperlinkManager.mouseMove(HyperlinkManager.java:462)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:212)
...
{code}
11. Add <h:outputText value="#{group.users['admin'].name}" />
12. Try Ctrl+Click on name. java.util.Iterator is open instead of User.getName()

  was:
1. Create JSF 2 KickStart project
2. Modify User.java:

{code}
package demo;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name="user")
@SessionScoped
public class User {
	private Map<String, User> users = new HashMap<String, User>();
	private Map<String, Collection> list = new HashMap<String, Collection>();

	private String name;

	public User() {
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String sayHello() {
		return "greeting";
	}

	public Map<String, User> getUsers() {
		return users;
	}

	public void setUsers(Map<String, User> users) {
		this.users = users;
	}

	public Map<String, Collection> getList() {
		return list;
	}

	public void setList(Map<String, Collection> list) {
		this.list = list;
	}
}
{code}
3. Open inputname.xhtml
4. Add <h:outputText value="#{user.users['xyz'].nam}" />
5. See the log:
{code}
Caused by: java.lang.NullPointerException
	at org.jboss.tools.jst.web.kb.internal.validation.ELValidator.validateElOperand(ELValidator.java:493)
	at org.jboss.tools.jst.web.kb.internal.validation.ELValidator.validateELExpression(ELValidator.java:350)
	at org.jboss.tools.jst.web.kb.internal.validation.ELValidator.validateEL(ELValidator.java:325)
	at org.jboss.tools.jst.web.kb.internal.validation.ELValidator.validate(ELValidator.java:270)
	at org.jboss.tools.common.validation.AsYouTypeValidatorManager.validate(AsYouTypeValidatorManager.java:174)
	... 10 more
{code}


    
> NPE when validating EL which uses java.util.Map
> -----------------------------------------------
>
>                 Key: JBIDE-12609
>                 URL: https://issues.jboss.org/browse/JBIDE-12609
>             Project: Tools (JBoss Tools)
>          Issue Type: Bug
>          Components: jsp/jsf/xml source editing
>    Affects Versions: 4.0.0.Alpha2
>            Reporter: Alexey Kazakov
>            Assignee: Victor Rubezhny
>             Fix For: 4.0.0.Alpha2
>
>
> 1. Create JSF 2 KickStart project
> 2. Modify User.java:
> {code}
> package demo;
> import java.util.Collection;
> import java.util.HashMap;
> import java.util.Map;
> import javax.faces.bean.ManagedBean;
> import javax.faces.bean.SessionScoped;
> @ManagedBean(name="user")
> @SessionScoped
> public class User {
> 	private Map<String, User> users = new HashMap<String, User>();
> 	private Map<String, Collection> list = new HashMap<String, Collection>();
> 	private String name;
> 	public User() {
> 	}
> 	public String getName() {
> 		return name;
> 	}
> 	public void setName(String name) {
> 		this.name = name;
> 	}
> 	public String sayHello() {
> 		return "greeting";
> 	}
> 	public Map<String, User> getUsers() {
> 		return users;
> 	}
> 	public void setUsers(Map<String, User> users) {
> 		this.users = users;
> 	}
> 	public Map<String, Collection> getList() {
> 		return list;
> 	}
> 	public void setList(Map<String, Collection> list) {
> 		this.list = list;
> 	}
> }
> {code}
> 3. Open inputname.xhtml
> 4. Add <ui:param name="group" value="#{user}" /> inside <ui:composition> (line #9)
> 5. Save the file.
> 6. Open common.xhtml
> 7. Add <h:outputText value="#{group.users['admin'].nam}" />
> 8. See the log:
> {code}
> Caused by: java.lang.NullPointerException
> 	at org.jboss.tools.jst.web.kb.internal.validation.ELValidator.validateElOperand(ELValidator.java:493)
> 	at org.jboss.tools.jst.web.kb.internal.validation.ELValidator.validateELExpression(ELValidator.java:350)
> 	at org.jboss.tools.jst.web.kb.internal.validation.ELValidator.validateEL(ELValidator.java:325)
> 	at org.jboss.tools.jst.web.kb.internal.validation.ELValidator.validate(ELValidator.java:270)
> 	at org.jboss.tools.common.validation.AsYouTypeValidatorManager.validate(AsYouTypeValidatorManager.java:174)
> 	... 10 more
> {code}
> 9. Press Ctrl and move the mouse over ['admin']
> 10. See the log:
> {code}
> java.lang.NullPointerException
> 	at org.jboss.tools.common.el.core.resolver.ELSegmentImpl$1.getStartPosition(ELSegmentImpl.java:63)
> 	at org.jboss.tools.common.el.core.resolver.ELResolutionImpl.findSegmentByOffset(ELResolutionImpl.java:94)
> 	at org.jboss.tools.jst.text.ext.hyperlink.ELHyperlinkDetector.detectHyperlinks(ELHyperlinkDetector.java:61)
> 	at org.eclipse.ui.texteditor.HyperlinkDetectorRegistry$HyperlinkDetectorDelegate.detectHyperlinks(HyperlinkDetectorRegistry.java:80)
> 	at org.eclipse.jface.text.hyperlink.HyperlinkManager.findHyperlinks(HyperlinkManager.java:286)
> 	at org.eclipse.jface.text.hyperlink.HyperlinkManager.findHyperlinks(HyperlinkManager.java:258)
> 	at org.eclipse.jface.text.hyperlink.HyperlinkManager.mouseMove(HyperlinkManager.java:462)
> 	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:212)
> ...
> {code}
> 11. Add <h:outputText value="#{group.users['admin'].name}" />
> 12. Try Ctrl+Click on name. java.util.Iterator is open instead of User.getName()

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jbosstools-issues mailing list