Hi Steve,

Hmm, thanks for your work on this so far.

Unfortunately, I haven't been able to reproduce.  I've run up the
kitchensink on one dev box, and then accessed it from another, with
kitchensink running in SERVER rather than prototype mode.  On the
"semantics" menu it will return an object that has a no-arg action "Safe
action", and this invokes just fine.

My suggestion is trying to trace the interaction from Wicket's javascript,
see where it gets stuck.  If you use Chrome dev tools, you should be able
to find the callback, eg [1].  I know you say you aren't seeing any network
interaction, but if you were, then (with "preserve log" checked), you would
see something like [2], ie an initial XHR request to invoke the action,
which ultimately returns a response code for the javascript to request the
next version of the entity (or at least, the bit of the page to be
repainted).

If you can't find the callback in the first place, then I guess there's
some sort of issue with javascript resources not being downloaded, or with
the Wicket callbacks not being wired together somehow when the HTML DOM is
initially built.

If you can find the callback, then I guess it's hitting some sort of
network issue.

@martin-g ... any further insights/clues/debugging suggestions?

Thx
Dan



[1] http://imgur.com/a/RUVvW
[2] http://imgur.com/a/vwAbC






On 14 September 2016 at 11:45, Stephen Cameron <steve.cameron...@gmail.com>
wrote:

>
>
> This is the HTML DOM from Chrome for the Add Next (Scheduled Activity)
> button.
>
>    <div class="btn-group">
>         <div id="id1b2">
>             <ul class="additionalLinkList additionalLinkListInline
> list-unstyled list-inline" id="id1b3">
>                 <li class="additionalLinkItem" title="Adds another child
> Activity">
>                     <a href="javascript:;" class="btn btn-sm btn-default
> noVeil RecurringActivity-addNextScheduledActivity" id="id1a1">
>                         <span class="fa fa-fw fa-plus-square
> fontAwesomeIcon"></span><span class="additionalLinkItem add-next">Add
> Next</span>
>                     </a>
>                 </li>
>             </ul>
>         </div>
>    </div>
>
> This is what is present for the single arg Action
>
> <div class="entityActions" id="id1ad">
>             <ul class="additionalLinkList additionalLinkListInline
> list-unstyled list-inline" id="id1ae">
>                 <li class="additionalLinkItem" title="">
>                     <a href="javascript:;" class="btn btn-sm btn-default
> noVeil RecurringActivity-addMany" id="id195">
>                         <span class="fa fa-fw fa-plus-square
> fontAwesomeIcon"></span><span class="additionalLinkItem add-many">Add
> Many</span>
>                     </a>
>                 </li>
>             </ul>
>         </div>
>
> There is no difference. The  href="javascript:;" is maybe just a place
> holder to make the markup legal and the actual javascript routine executed
> is updated after page load. So, I need to see that enhance DOM to know
> where to start I guess.
>
> However,  that the no-args 'Add Next' button works on one system and not
> on another, might suggest something to someone.
>
> It maybe suggests that something important is not getting to the client?
>
> I now have a work-around, so urgency is not so great,  I can work on
> resolving this as time allows.
>
> Regards
> Steve C
>
>
>
>
>
>
> On Wed, Sep 14, 2016 at 10:20 AM, Stephen Cameron <
> steve.cameron...@gmail.com> wrote:
>
>> Network activity with no args Action: none!
>>
>> Network activity with 1-parameter Action: some, see request below
>>
>> GET /chats/wicket/entity?14-1.IBehaviorListener.0-theme-entityPa
>> geContainer-entity-rows-1-rowContents-1-col-entityHeader
>> Panel-entityActions-additionalLinkList-additionalLinkItem-0-additionalLink&_=1473812104907
>> HTTP/1.1
>> Host: lifechatsdb
>> Connection: keep-alive
>> Wicket-FocusedElementId: id195
>> User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36
>> (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
>> Accept: application/xml, text/xml, */*; q=0.01
>> X-Requested-With: XMLHttpRequest
>> Wicket-Ajax: true
>> Wicket-Ajax-BaseURL: entity?14
>> Referer: http://lifechatsdb/chats/wicket/entity?14
>> Accept-Encoding: gzip, deflate, sdch
>> Accept-Language: en-US,en;q=0.8
>> Cookie: LoggedIn=PjpOK6Pku8mL27old8t-DA; 
>> isis..viewer..wicket..themes..selected=Flatly;
>> isisWicketRememberMe=VQ_ElYTPZMrqNSoiJsEZ2G0ktvE5ArT4;
>> JSESSIONID=wdt3bnexk6vx16c6cmh9g57mf
>>
>>
>>
>> The
>>
>> On Wed, Sep 14, 2016 at 10:04 AM, Stephen Cameron <
>> steve.cameron...@gmail.com> wrote:
>>
>>> Hi Oscar,
>>>
>>> I am setting both sides, setParentActivity(this); is where the
>>> child->parent object reference is created.
>>>
>>> I added the code simply to show its just a very simple method (that
>>> works just fine on my laptop).
>>>
>>> It seems that the problem does in fact relate to the action having no
>>> parameters(arguments)!
>>>
>>> I show this I created another action as below
>>>
>>> @Action
>>> public RecurrentActivity addMany(Integer count){
>>>    for(int i = 0; i<count; i++){
>>>       addNextScheduledActivity()
>>>    }
>>>    return this;
>>> }
>>>
>>> This works, it just calls the 'problematic' no-args action in a loop
>>> depending on how many times you pass as an Integer parameter.
>>>
>>> I'll try to snoop on the requests using Chrome as Jeroen suggested.
>>>
>>> Steve
>>>
>>>
>>>
>>>
>>>
>>> On Tue, Sep 13, 2016 at 10:22 PM, Óscar Bou - GOVERTIS <
>>> o....@govertis.com> wrote:
>>>
>>>> Hi, Steve.
>>>>
>>>> You’re not setting both sides of the relationship (only adding to the
>>>> collection, but not setting the property on the other side, assuming it’s a
>>>> 1-n relationship).
>>>>
>>>> This is managed through 2 DN properties:
>>>> - datanucleus.manageRelationships
>>>> - datanucleus.manageRelationshipsChecks
>>>>
>>>> Have you introduced any changes on the “persistor_datanucleus.properties”
>>>> file?
>>>>
>>>> Usually you will find something like:
>>>>
>>>> # Manage Relationships
>>>> isis.persistor.datanucleus.impl.datanucleus.manageRelationships=true
>>>> isis.persistor.datanucleus.impl.datanucleus.manageRelationshipsChecks=true
>>>>
>>>>
>>>>
>>>> Cheers,
>>>>
>>>> Oscar
>>>>
>>>>
>>>>
>>>>
>>>> [1] http://www.datanucleus.org/products/datanucleus/jdo/orm/
>>>> relationships.html
>>>>
>>>>
>>>> El 13 sept 2016, a las 14:14, Jeroen van der Wal <jer...@stromboli.it>
>>>> escribió:
>>>>
>>>> My first step would be to watch the network activity in Chrome developer
>>>> tools [1]. Secondly you can set up remote debugging of your app [2].
>>>>
>>>> [1] https://developer.chrome.com/devtools
>>>> [2]
>>>> http://blog.trifork.com/2014/07/14/how-to-remotely-debug-app
>>>> lication-running-on-tomcat-from-within-intellij-idea/
>>>>
>>>> On 13 September 2016 at 13:38, Stephen Cameron <
>>>> steve.cameron...@gmail.com>
>>>> wrote:
>>>>
>>>> Hi,
>>>>
>>>> I have an unusual situation where the behaviour of what is apparently
>>>> the
>>>> same configuration of my app differs on two different systems. When I
>>>> deploy my app to a clients server there is one action that produces no
>>>> effects whereas on my development machine it works as expected.
>>>>
>>>> The norma; effect is to add new objects to a collection, each click of
>>>> the
>>>> action should create a new collection member.
>>>>
>>>> At the client site all other action buttons work as expected, only one
>>>> has
>>>> the problem. All I can think that is unusual about this one compared to
>>>> all  the others is that it has no parameters.
>>>>
>>>> I've made a copy of the database as the clients sit'e, imported that at
>>>> home and everything works.
>>>>
>>>> I am using the Isis security module, but I don't think that is causing a
>>>> problem, the action button is not greyed out as inactivated.
>>>>
>>>> I've used three different browsers at the client's site, all have the
>>>> same
>>>> issue.
>>>>
>>>> The action is simple
>>>>
>>>>    @Action
>>>>    public RecurringActivity addNextScheduledActivity() {
>>>>        if (getChildActivities().size() == 0) {
>>>>            if (getStartDateTime() == null) {
>>>>                container.warnUser("Please set 'Start date time' for
>>>> this
>>>> Recurring Activity (as starting time from which to schedule more
>>>> activity
>>>> events)");
>>>>            } else {
>>>>                ActivityEvent obj =
>>>> container.newTransientInstance(ActivityEvent.class);
>>>>                obj.setParentActivity(this);
>>>>                obj.setName(getName());
>>>>                obj.setAbbreviatedName(getAbbreviatedName());
>>>>                //set time one second ahead for comparison inequality
>>>>                obj.setStartDateTime(getStartDateTime().plusSeconds(1));
>>>>                getChildActivities().add(obj);
>>>>                container.persistIfNotAlready(obj);
>>>>                container.flush();
>>>>            }
>>>>        } else {
>>>>            // find last event from which to schedule next
>>>>            // first should be last in chronological order
>>>>            DateTime origin =
>>>> getChildActivities().first().getStartDateTime();
>>>>            ActivityEvent obj =
>>>> container.newTransientInstance(ActivityEvent.class);
>>>>            obj.setParentActivity(this);
>>>>            obj.setName(getName());
>>>>            obj.setAbbreviatedName(getAbbreviatedName());
>>>>            switch (getPeriodicity()) {
>>>>            case DAILY:
>>>>                obj.setStartDateTime(origin.plusDays(1));
>>>>                break;
>>>>            case WEEKLY:
>>>>                obj.setStartDateTime(origin.plusDays(7));
>>>>                break;
>>>>            case FORTNIGHTLY:
>>>>                obj.setStartDateTime(origin.plusDays(14));
>>>>                break;
>>>>            case MONTHLY:
>>>>                obj.setStartDateTime(origin.plusDays(28));
>>>>                break;
>>>>            case BIMONTHLY:
>>>>                obj.setStartDateTime(origin.plusDays(56));
>>>>                break;
>>>>            }
>>>>            getChildActivities().add(obj);
>>>>            container.persistIfNotAlready(obj);
>>>>            container.flush();
>>>>        }
>>>>        return this;
>>>>    }
>>>>
>>>> I can start adding some debug messages to this code, but is there a
>>>> smarter
>>>> way to find out happens at the client and server sides?
>>>>
>>>> I guess one distinct difference is that in my development environment
>>>> the
>>>> client and server are on the same machine, but in deployment they
>>>> aren't.
>>>>
>>>> Thanks for any advice.
>>>>
>>>> Steve Cameron
>>>>
>>>>
>>>>
>>>> Óscar Bou Bou
>>>> Socio - IT & GRC Management Services Director
>>>> m: +34 620 267 520
>>>> s:  <http://www.govertis.com>www.govertis.com e: o....@govertis.com
>>>>
>>>> LinkedIn: https://www.linkedin.com/in/oscarbou
>>>> Twitter:  @oscarbou <https://twitter.com/oscarbou>
>>>>
>>>>
>>>>
>>>> Este mensaje y los ficheros anexos son confidenciales. Los mismos
>>>> contienen información reservada que no puede ser difundida. Si usted ha
>>>> recibido este correo por error, tenga la amabilidad de eliminarlo de su
>>>> sistema y avisar al remitente mediante reenvío a su dirección electrónica;
>>>> no deberá copiar el mensaje ni divulgar su contenido a ninguna persona.
>>>>
>>>> Su dirección de correo electrónico junto a sus datos personales constan
>>>> en un fichero titularidad de GOVERTIS ADVISORY SERVICES, S.L. cuya
>>>> finalidad es la de mantener el contacto con Ud. Si quiere saber de qué
>>>> información disponemos de Ud., modificarla, y en su caso, cancelarla, puede
>>>> hacerlo enviando un escrito al efecto, acompañado de una fotocopia de su
>>>> D.N.I. a la siguiente dirección: GOVERTIS ADVISORY SERVICES, S.L. Avda
>>>> Cortes Valencianas, 58 – 8º - 6ª. 46015 - Valencia,  y Paseo de la
>>>> Castellana, 153, 28045 - MADRID. Asimismo, es su responsabilidad comprobar
>>>> que este mensaje o sus archivos adjuntos no contengan virus informáticos, y
>>>> en caso que los tuvieran eliminarlos.
>>>>
>>>>
>>>
>>
>

Reply via email to