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

Reply via email to