You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Vladimir Nisevic (JIRA)" <ji...@apache.org> on 2014/09/30 11:22:35 UTC
[jira] [Comment Edited] (ISIS-899) Can't return a view model in
Isis 1.6.0 over RO viewer.
[ https://issues.apache.org/jira/browse/ISIS-899?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14153004#comment-14153004 ]
Vladimir Nisevic edited comment on ISIS-899 at 9/30/14 9:22 AM:
----------------------------------------------------------------
Hi Jeroen, Dan. I've just tested my two ViewModel classes with latest master version - I've put my code into "todoapp-dom" project and recompiled.
Domain Service:
{code}
@Named("Address Search API")
@DomainService(menuOrder = "1.3")
public class AsePublicService {
@Render(Type.EAGERLY)
public Address getAddress(@Named("Source System") final String sourceSystem, @Named("User") final String user, @Named("Agent") final String agent, @Named("LKMS-ID") final String lkmsId, @Named("Valid Location") final boolean validLocation) {
final Address address = new Address();
address.setHousenumber("12");
Street street = new Street();
street.setStreetname("5th Avenue");
address.setStreet(street);
return address;
}
{code}
Address Model:
{code}
package a1.ase.viewmodel;
import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.ViewModel;
@ViewModel
public class Address {
public String title() {
return "Address lkmsId:" + lkmsId;
}
// {{ LkmsId (property)
private String lkmsId;
@MemberOrder(sequence = "1")
public String getLkmsId() {
return lkmsId;
}
public void setLkmsId(final String lkmsId) {
this.lkmsId = lkmsId;
}
// }}
// {{ Street (property)
private Street street;
@MemberOrder(sequence = "3")
public Street getStreet() {
return street;
}
public void setStreet(final Street street) {
this.street = street;
}
// }}
// {{ Housenumber (property)
private String housenumber;
@MemberOrder(sequence = "2")
public String getHousenumber() {
return housenumber;
}
public void setHousenumber(final String housenumber) {
this.housenumber = housenumber;
}
// }}
}
}
{code}
Street Model:
{code}
package a1.ase.viewmodel;
import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.ViewModel;
@ViewModel
public class Street {
public String title() {
return "Street lkmsId:" + lkmsId;
}
// {{ LkmsId (property)
private String lkmsId;
@MemberOrder(sequence = "1")
public String getLkmsId() {
return lkmsId;
}
public void setLkmsId(final String lkmsId) {
this.lkmsId = lkmsId;
}
// }}
// {{ Streetname (property)
private String streetname;
@MemberOrder(sequence = "2")
public String getStreetname() {
return streetname;
}
public void setStreetname(final String aName) {
this.streetname = aName;
}
// }}
}
{code}
Here my feedback
1.) using wicket viewer and calling the method getAddress, I get next exception
{code}
Stack trace:
org.apache.isis.core.runtime.persistence.PojoRecreationException
Could not recreate pojo for oid oid *a1.ase.viewmodel.Address:PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGhvdXNlbnVtYmVyPjEyPC9ob3VzZW51bWJlcj48c3RyZWV0LmJvb2ttYXJrPmExLmFzZS52aWV3bW9kZWwuU3RyZWV0OlBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NEtQRzFsYldWdWRHOC1QSE4wY21WbGRHNWhiV1UtTlhSb0lFRjJaVzUxWlR3dmMzUnlaV1YwYm1GdFpUNDhMMjFsYldWdWRHOC08L3N0cmVldC5ib29rbWFyaz48L21lbWVudG8-
org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault#adapterFor(AdapterManagerDefault.java:311)
org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento$Type$2#recreateAdapter(ObjectAdapterMemento.java:112)
org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento$Type#getAdapter(ObjectAdapterMemento.java:183)
org.apache.isis.viewer.wicket.model.m
{code}
2.) using restul viewer and calling http://localhost:8080/restful/services/toDoItems/actions/newToDo/invoke with parameters
{code}
{
"sourceSystem": {"value": "CRM"},
"user": {"value": "user1"},
"agent": {"value": "agent1"},
"lKMS-ID": {"value": "123"},
"validLocation": {"value": "true"}
}
{code}
I get this result
{code}
{
"links" : [ ],
"resulttype" : "domainobject",
"result" : {
"links" : [ {
"rel" : "self",
"href" : "http://localhost:8080/restful/objects/a1.ase.viewmodel.Address/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGhvdXNlbnVtYmVyPjEyPC9ob3VzZW51bWJlcj48c3RyZWV0LmJvb2ttYXJrPmExLmFzZS52aWV3bW9kZWwuU3RyZWV0OlBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NEtQRzFsYldWdWRHOC1QSE4wY21WbGRHNWhiV1UtTlhSb0lFRjJaVzUxWlR3dmMzUnlaV1YwYm1GdFpUNDhMMjFsYldWdWRHOC08L3N0cmVldC5ib29rbWFyaz48L21lbWVudG8-",
"method" : "GET",
"type" : "application/json;profile=\"urn:org.restfulobjects:repr-types/object\"",
"title" : "Address lkmsId:null"
}, {
"rel" : "describedby",
"href" : "http://localhost:8080/restful/domain-types/a1.ase.viewmodel.Address",
"method" : "GET",
"type" : "application/json;profile=\"urn:org.restfulobjects:repr-types/domain-type\""
}, {
"rel" : "urn:org.restfulobjects:rels/update",
"href" : "http://localhost:8080/restful/objects/a1.ase.viewmodel.Address/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGhvdXNlbnVtYmVyPjEyPC9ob3VzZW51bWJlcj48c3RyZWV0LmJvb2ttYXJrPmExLmFzZS52aWV3bW9kZWwuU3RyZWV0OlBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NEtQRzFsYldWdWRHOC1QSE4wY21WbGRHNWhiV1UtTlhSb0lFRjJaVzUxWlR3dmMzUnlaV1YwYm1GdFpUNDhMMjFsYldWdWRHOC08L3N0cmVldC5ib29rbWFyaz48L21lbWVudG8-",
"method" : "PUT",
"type" : "application/json;profile=\"urn:org.restfulobjects:repr-types/object\"",
"arguments" : {
"lkmsId" : {
"id" : "lkmsId",
"value" : null,
"extensions" : {
"x-isis-format" : "string"
},
"disabledReason" : "Non-cloneable view models are read-only"
},
"housenumber" : {
"id" : "housenumber",
"value" : "12",
"extensions" : {
"x-isis-format" : "string"
},
"disabledReason" : "Non-cloneable view models are read-only"
},
"street" : {
"id" : "street",
"value" : {
"rel" : "urn:org.restfulobjects:rels/value",
"href" : "http://localhost:8080/restful/objects/a1.ase.viewmodel.Street/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PHN0cmVldG5hbWU-NXRoIEF2ZW51ZTwvc3RyZWV0bmFtZT48L21lbWVudG8-",
"method" : "GET",
"type" : "application/json;profile=\"urn:org.restfulobjects:repr-types/object\"",
"title" : "Street lkmsId:null"
},
"disabledReason" : "Non-cloneable view models are read-only"
}
}
} ],
"extensions" : {
"oid" : "*a1.ase.viewmodel.Address:PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGhvdXNlbnVtYmVyPjEyPC9ob3VzZW51bWJlcj48c3RyZWV0LmJvb2ttYXJrPmExLmFzZS52aWV3bW9kZWwuU3RyZWV0OlBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NEtQRzFsYldWdWRHOC1QSE4wY21WbGRHNWhiV1UtTlhSb0lFRjJaVzUxWlR3dmMzUnlaV1YwYm1GdFpUNDhMMjFsYldWdWRHOC08L3N0cmVldC5ib29rbWFyaz48L21lbWVudG8-",
"isService" : false,
"isPersistent" : true
},
"title" : "Address lkmsId:null",
"domainType" : "a1.ase.viewmodel.Address",
"instanceId" : "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGhvdXNlbnVtYmVyPjEyPC9ob3VzZW51bWJlcj48c3RyZWV0LmJvb2ttYXJrPmExLmFzZS52aWV3bW9kZWwuU3RyZWV0OlBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NEtQRzFsYldWdWRHOC1QSE4wY21WbGRHNWhiV1UtTlhSb0lFRjJaVzUxWlR3dmMzUnlaV1YwYm1GdFpUNDhMMjFsYldWdWRHOC08L3N0cmVldC5ib29rbWFyaz48L21lbWVudG8-",
"members" : {
"lkmsId" : {
"id" : "lkmsId",
"memberType" : "property",
"links" : [ {
"rel" : "urn:org.restfulobjects:rels/details;property=\"lkmsId\"",
"href" : "http://localhost:8080/restful/objects/a1.ase.viewmodel.Address/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGhvdXNlbnVtYmVyPjEyPC9ob3VzZW51bWJlcj48c3RyZWV0LmJvb2ttYXJrPmExLmFzZS52aWV3bW9kZWwuU3RyZWV0OlBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NEtQRzFsYldWdWRHOC1QSE4wY21WbGRHNWhiV1UtTlhSb0lFRjJaVzUxWlR3dmMzUnlaV1YwYm1GdFpUNDhMMjFsYldWdWRHOC08L3N0cmVldC5ib29rbWFyaz48L21lbWVudG8-/properties/lkmsId",
"method" : "GET",
"type" : "application/json;profile=\"urn:org.restfulobjects:repr-types/object-property\""
} ],
"value" : null,
"extensions" : {
"x-isis-format" : "string"
},
"disabledReason" : "Non-cloneable view models are read-only"
},
"housenumber" : {
"id" : "housenumber",
"memberType" : "property",
"links" : [ {
"rel" : "urn:org.restfulobjects:rels/details;property=\"housenumber\"",
"href" : "http://localhost:8080/restful/objects/a1.ase.viewmodel.Address/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGhvdXNlbnVtYmVyPjEyPC9ob3VzZW51bWJlcj48c3RyZWV0LmJvb2ttYXJrPmExLmFzZS52aWV3bW9kZWwuU3RyZWV0OlBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NEtQRzFsYldWdWRHOC1QSE4wY21WbGRHNWhiV1UtTlhSb0lFRjJaVzUxWlR3dmMzUnlaV1YwYm1GdFpUNDhMMjFsYldWdWRHOC08L3N0cmVldC5ib29rbWFyaz48L21lbWVudG8-/properties/housenumber",
"method" : "GET",
"type" : "application/json;profile=\"urn:org.restfulobjects:repr-types/object-property\""
} ],
"value" : "12",
"extensions" : {
"x-isis-format" : "string"
},
"disabledReason" : "Non-cloneable view models are read-only"
},
"street" : {
"id" : "street",
"memberType" : "property",
"links" : [ {
"rel" : "urn:org.restfulobjects:rels/details;property=\"street\"",
"href" : "http://localhost:8080/restful/objects/a1.ase.viewmodel.Address/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGhvdXNlbnVtYmVyPjEyPC9ob3VzZW51bWJlcj48c3RyZWV0LmJvb2ttYXJrPmExLmFzZS52aWV3bW9kZWwuU3RyZWV0OlBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NEtQRzFsYldWdWRHOC1QSE4wY21WbGRHNWhiV1UtTlhSb0lFRjJaVzUxWlR3dmMzUnlaV1YwYm1GdFpUNDhMMjFsYldWdWRHOC08L3N0cmVldC5ib29rbWFyaz48L21lbWVudG8-/properties/street",
"method" : "GET",
"type" : "application/json;profile=\"urn:org.restfulobjects:repr-types/object-property\""
} ],
"value" : {
"rel" : "urn:org.restfulobjects:rels/value",
"href" : "http://localhost:8080/restful/objects/a1.ase.viewmodel.Street/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PHN0cmVldG5hbWU-NXRoIEF2ZW51ZTwvc3RyZWV0bmFtZT48L21lbWVudG8-",
"method" : "GET",
"type" : "application/json;profile=\"urn:org.restfulobjects:repr-types/object\"",
"title" : "Street lkmsId:null"
},
"disabledReason" : "Non-cloneable view models are read-only"
}
}
},
"extensions" : {
"changed" : [ ],
"disposed" : [ ]
}
}
{code}
was (Author: niv):
Hi Jeroen, Dan. I've just tested my two ViewModel classes with latest master version - I've put my code into "todoapp-dom" project and recompiled.
Domain Service:
{code}
@Named("Address Search API")
@DomainService(menuOrder = "1.3")
public class AsePublicService {
@Render(Type.EAGERLY)
public Address getAddress(@Named("Source System") final String sourceSystem, @Named("User") final String user, @Named("Agent") final String agent, @Named("LKMS-ID") final String lkmsId, @Named("Valid Location") final boolean validLocation) {
final Address address = new Address();
address.setHousenumber("12");
Street street = new Street();
street.setStreetname("5th Avenue");
address.setStreet(street);
return address;
}
{code}
Address Model:
{code}
package a1.ase.viewmodel;
import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.ViewModel;
@ViewModel
public class Address {
public String title() {
return "Address lkmsId:" + lkmsId;
}
// {{ LkmsId (property)
private String lkmsId;
@MemberOrder(sequence = "1")
public String getLkmsId() {
return lkmsId;
}
public void setLkmsId(final String lkmsId) {
this.lkmsId = lkmsId;
}
// }}
// {{ Street (property)
private Street street;
@MemberOrder(sequence = "3")
public Street getStreet() {
return street;
}
public void setStreet(final Street street) {
this.street = street;
}
// }}
// {{ Housenumber (property)
private String housenumber;
@MemberOrder(sequence = "2")
public String getHousenumber() {
return housenumber;
}
public void setHousenumber(final String housenumber) {
this.housenumber = housenumber;
}
// }}
}
}
{code}
Street Model:
{code}
package a1.ase.viewmodel;
import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.ViewModel;
@ViewModel
public class Street {
public String title() {
return "Street lkmsId:" + lkmsId;
}
// {{ LkmsId (property)
private String lkmsId;
@MemberOrder(sequence = "1")
public String getLkmsId() {
return lkmsId;
}
public void setLkmsId(final String lkmsId) {
this.lkmsId = lkmsId;
}
// }}
// {{ Streetname (property)
private String streetname;
@MemberOrder(sequence = "2")
public String getStreetname() {
return streetname;
}
public void setStreetname(final String aName) {
this.streetname = aName;
}
// }}
}
{code}
Here my feedback
1.) using wicket viewer and calling the method getAddress, I get next exception
{code}
Stack trace:
org.apache.isis.core.runtime.persistence.PojoRecreationException
Could not recreate pojo for oid oid *a1.ase.viewmodel.Address:PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1lbWVudG8-PGhvdXNlbnVtYmVyPjEyPC9ob3VzZW51bWJlcj48c3RyZWV0LmJvb2ttYXJrPmExLmFzZS52aWV3bW9kZWwuU3RyZWV0OlBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NEtQRzFsYldWdWRHOC1QSE4wY21WbGRHNWhiV1UtTlhSb0lFRjJaVzUxWlR3dmMzUnlaV1YwYm1GdFpUNDhMMjFsYldWdWRHOC08L3N0cmVldC5ib29rbWFyaz48L21lbWVudG8-
org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault#adapterFor(AdapterManagerDefault.java:311)
org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento$Type$2#recreateAdapter(ObjectAdapterMemento.java:112)
org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento$Type#getAdapter(ObjectAdapterMemento.java:183)
org.apache.isis.viewer.wicket.model.m
{code}
2.) using restul viewer and calling http://localhost:8080/restful/services/toDoItems/actions/newToDo/invoke with parameters
{code}
{
"sourceSystem": {"value": "CRM"},
"user": {"value": "user1"},
"agent": {"value": "agent1"},
"lKMS-ID": {"value": "123"},
"validLocation": {"value": "true"}
}
{code}
I get this result
{code}
STATUS 200 OK
TIME 118 ms
Pretty Raw Preview Copy
{code}
> Can't return a view model in Isis 1.6.0 over RO viewer.
> -------------------------------------------------------
>
> Key: ISIS-899
> URL: https://issues.apache.org/jira/browse/ISIS-899
> Project: Isis
> Issue Type: Bug
> Components: Core: Viewer: RestfulObjects
> Affects Versions: core-1.6.0
> Reporter: Dan Haywood
> Assignee: Dan Haywood
> Fix For: core-1.7.0
>
> Attachments: Address.java, AsePublicService.java, Street.java, Wicket.png
>
>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)