Uploaded image for project: 'Causeway'
  1. Causeway
  2. CAUSEWAY-1401

NPE when wrapping call to FixtureScripts#runFixtureScript for a newly instantiated FixtureScript

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Won't Fix
    • 1.12.1
    • 1.13.0
    • Core
    • None

    Description

      The FixtureScripts#runFixtureScript action is marked as "Prototyping", and basically there's no need to invoke it wrapped, but perhaps is relevant for other use cases.

      When executing something like:
      this.wrap(this.fixtureScripts).runFixtureScript(
      new MyFixtureScript(), null);

      A NullPointerException is thrown, as for the execution on DomainObjectInvokationHandler#handleActionMethod requires to create an adapter for the contributee (line 590):
      [java]
      contributeeAdapter = adapterFor(contributed);
      [/java]

      As the MyFixtureScript is a ViewModel, this will be delegated to FixtureScript#viewModelMemento() which in fact will contain:

      [java]
      @Programmatic
      @Override
      public String viewModelMemento()

      { return fixtureScripts.mementoFor(this); }

      [/java]

      Being "fixtureScripts" null.

      Not sure how to solve this, as basically the FixtureScript requires to be injected before executing it.
      As perhaps this will be the only method that can potentially been invoked before the FixtureScript being wrapped on the "FixtureScripts" service, an easy solution would be to check if the "fixtureScript" variable is null and, in that case, inject its own instance on this same method.

      Attachments

        Activity

          People

            danhaywood Daniel Keir Haywood
            oscarbou Óscar Bou
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: