You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Dan Haywood (JIRA)" <ji...@apache.org> on 2017/12/30 10:57:00 UTC

[jira] [Commented] (ISIS-1802) JDOQL using SELECT UNIQUE causes NPE to be thrown.

    [ https://issues.apache.org/jira/browse/ISIS-1802?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16306707#comment-16306707 ] 

Dan Haywood commented on ISIS-1802:
-----------------------------------

I couldn't reproduce this.  Using the kitchensink app:

ParentObject query:
{code}
       @Query(
                name = "findUnique",
                value = "SELECT "
                        + "FROM org.isisaddons.app.kitchensink.dom.hierarchy.parent.ParentObject "
                        + "WHERE name == :name ")
}{code}

ParentObjects repository, tried both uniqueMatch
{code}
    @MemberOrder(sequence = "30.2")
    public ParentObject findUnique(
            @ParameterLayout(named="Name")
            final String name) {
        return repositoryService.uniqueMatch(
                new QueryDefault<>(ParentObject.class,
                        "findUnique",
                        "name", name));
    }
{code}

and firstMatch:
{code}
    @MemberOrder(sequence = "30.2")
    public ParentObject findUnique(
            @ParameterLayout(named="Name")
            final String name) {
        return repositoryService.firstMatch(
                new QueryDefault<>(ParentObject.class,
                        "findUnique",
                        "name", name));
    }
{code}

with update to HierarchyObjects to call:
{code}
    @Action(semantics = SemanticsOf.SAFE)
    @MemberOrder(sequence = "11.1")
    public ParentObject findParentUnique(String name) {
        return parentObjects.findUnique(name);
    }
{code}

In both cases (when matching for existing "Parent 1" and non-existent "xxx"), I didn't see any NPE.

~~~
All that said,  I've added in some code anyway within PersistenceQueryFindUsingApplibQueryProcessor to check for a returned null, and handle approprirately.

~~~
Also, since firstMatch and uniqueMatch are almost identical, I've decided to deprecate firstMatch.  This will allow us to simplify the implementation in the future, because both allMatches and uniqueMatch work with a QueryCardinality of MULTIPLE whereas only firstMatch has a QueryCardinality of SINGLE.

> JDOQL using SELECT UNIQUE causes NPE to be thrown.
> --------------------------------------------------
>
>                 Key: ISIS-1802
>                 URL: https://issues.apache.org/jira/browse/ISIS-1802
>             Project: Isis
>          Issue Type: Bug
>    Affects Versions: 1.15.1
>            Reporter: Dan Haywood
>            Assignee: Dan Haywood
>            Priority: Minor
>             Fix For: 1.16.0
>
>
> as per https://lists.apache.org/thread.html/4658ae59347ee600242d1bc8fae7afebd912111799aad36b74ac57fd@%3Cusers.isis.apache.org%3E



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)