What i am doing wrong or missing?

Could someone give a tip on AngularJS for when invoking a create
(POST) action ?

I have currently this use case, and it works when the API method all
args are by-value.

However when the args are by-reference (object reference), i am unable
to succeed it using AngularJS. But i succeed if i do it using Postman.

The message i am getting is:

        "Expected a link (because this object's type is not a value) but
found no 'href'"

Thanks in advance, Eder



= Source Code on backend =
AuditItemMenu.java:
@Action(
)
@MemberOrder(sequence = "3")
public AuditItem create(
        final Audit audit,
        final Asset asset,
        final Location location) {
    return auditItemrepository.create(audit, asset, location);
}


= Source Code on frontend =

.factory('AuditItemStore', function($http, $ionicLoading, $resource) {
var apiUrl = 'http://localhost:8080';

// Define a resource
var AuditItemCreate = $resource(
  apiUrl + 
'/restful/services/domainapp.dom.BusinessEntities.AuditItemMenu/actions/create/invoke');

var list = function() {

    var pendingWrites = [];

    return pendingWrites;
}

var create = function(auditItem) {

      var data =        {
        "location" : {
          "href" :
"http://localhost:8080/restful/objects/businessentities.Location/47";
        },
        "asset"    : {
            "href":
"http://localhost:8080/restful/objects/businessentities.Asset/36";
        },
        "audit"    : {
            "href" :
"http://localhost:8080/restful/objects/businessentities.Audit/2";
        }
      }

      // Post the new data
      var a2 = new AuditItemCreate();

      a2.$save(data)
          .then(function(res)  { console.log("success") })
          .catch(function(req) { console.log("error saving obj: " +
JSON.stringify(req, null, 4)); })
          .finally(function()  { console.log("always called") });
};


= Error result, as displayed by Chrome Developer Tools console =

POST 
http://localhost:8080/restful/services/domainapp.dom.BusinessEntities.AuditItemMenu/actions/create/invoke?asset=%7B%22href%22:%22http:%2F%2Flocalhost:8080%2Frestful%2Fobjects%2Fbusinessentities.Asset%2F36%22%7D&audit=%7B%22href%22:%22http:%2F%2Flocalhost:8080%2Frestful%2Fobjects%2Fbusinessentities.Audit%2F2%22%7D&location=%7B%22href%22:%22http:%2F%2Flocalhost:8080%2Frestful%2Fobjects%2Fbusinessentities.Location%2F47%22%7D
422 (Unprocessable Entity)

audititemstore.js:60 error saving obj:
{
    "data": {
        "asset": {
            "value":
"{\"href\":\"http://localhost:8080/restful/objects/businessentities.Asset/36\"}";,
            "invalidReason": "Expected a link (because this object's
type is not a value) but found no 'href'"
        },
        "audit": {
            "value":
"{\"href\":\"http://localhost:8080/restful/objects/businessentities.Audit/2\"}";,
            "invalidReason": "Expected a link (because this object's
type is not a value) but found no 'href'"
        },
        "location": {
            "value":
"{\"href\":\"http://localhost:8080/restful/objects/businessentities.Location/47\"}";,
            "invalidReason": "Expected a link (because this object's
type is not a value) but found no 'href'"
        },
        "x-ro-invalidReason": "Mandatory"
    },
    "status": 422,
    "config": {
        "method": "POST",
        "transformRequest": [
            null
        ],
        "transformResponse": [
            null
        ],
        "data": {},
        "url": 
"http://localhost:8080/restful/services/domainapp.dom.BusinessEntities.AuditItemMenu/actions/create/invoke";,
        "params": {
            "location": {
                "href":
"http://localhost:8080/restful/objects/businessentities.Location/47";
            },
            "asset": {
                "href":
"http://localhost:8080/restful/objects/businessentities.Asset/36";
            },
            "audit": {
                "href":
"http://localhost:8080/restful/objects/businessentities.Audit/2";
            }
        },
        "headers": {
            "Accept": "application/json, text/plain, */*",
            "Authorization": "Basic ZG9tYWluYXBwLWFkbWluOnBhc3M=",
            "Content-Type": "application/json;charset=utf-8"
        }
    },
    "statusText": "Unprocessable Entity"
}




NOTE:

If i change the args, by adding 'value' in the JSON string, i still
get the same error:

var data =      {
        "location": {
          "value": {
            "href":
"http://localhost:8080/restful/objects/businessentities.Location/47";
          }
        },
        "asset": {
          "value": {
            "href":
"http://localhost:8080/restful/objects/businessentities.Asset/36";
          }
        },
        "audit": {
          "value": {
            "href":
"http://localhost:8080/restful/objects/businessentities.Audit/2";
          }
        }
}



POST 
http://localhost:8080/restful/services/domainapp.dom.BusinessEntities.AuditItemMenu/actions/create/invoke?asset=%7B%22value%22:%7B%22href%22:%22http:%2F%2Flocalhost:8080%2Frestful%2Fobjects%2Fbusinessentities.Asset%2F36%22%7D%7D&audit=%7B%22value%22:%7B%22href%22:%22http:%2F%2Flocalhost:8080%2Frestful%2Fobjects%2Fbusinessentities.Audit%2F2%22%7D%7D&location=%7B%22value%22:%7B%22href%22:%22http:%2F%2Flocalhost:8080%2Frestful%2Fobjects%2Fbusinessentities.Location%2F47%22%7D%7D
422 (Unprocessable Entity)
audititemstore.js:60 error saving obj:
{
    "data": {
        "asset": {
            "value":
"{\"value\":{\"href\":\"http://localhost:8080/restful/objects/businessentities.Asset/36\"}}";,
            "invalidReason": "Expected a link (because this object's
type is not a value) but found no 'href'"
        },
        "audit": {
            "value":
"{\"value\":{\"href\":\"http://localhost:8080/restful/objects/businessentities.Audit/2\"}}";,
            "invalidReason": "Expected a link (because this object's
type is not a value) but found no 'href'"
        },
        "location": {
            "value":
"{\"value\":{\"href\":\"http://localhost:8080/restful/objects/businessentities.Location/47\"}}";,
            "invalidReason": "Expected a link (because this object's
type is not a value) but found no 'href'"
        },
        "x-ro-invalidReason": "Mandatory"
    },
    "status": 422,
    "config": {
        "method": "POST",
        "transformRequest": [
            null
        ],
        "transformResponse": [
            null
        ],
        "data": {},
        "url": 
"http://localhost:8080/restful/services/domainapp.dom.BusinessEntities.AuditItemMenu/actions/create/invoke";,
        "params": {
            "location": {
                "value": {
                    "href":
"http://localhost:8080/restful/objects/businessentities.Location/47";
                }
            },
            "asset": {
                "value": {
                    "href":
"http://localhost:8080/restful/objects/businessentities.Asset/36";
                }
            },
            "audit": {
                "value": {
                    "href":
"http://localhost:8080/restful/objects/businessentities.Audit/2";
                }
            }
        },
        "headers": {
            "Accept": "application/json, text/plain, */*",
            "Authorization": "Basic ZG9tYWluYXBwLWFkbWluOnBhc3M=",
            "Content-Type": "application/json;charset=utf-8"
        }
    },
    "statusText": "Unprocessable Entity"
}
---------

2017-09-01 14:01 GMT-04:00, L Eder <[email protected]>:
> Hello members:
>
> Could any one shed a light on this issue?
>
> I successful run this POST request using Postman:
> JSON body
> "
>       {
>                       "location" : {
>               "value" : { "href":
> "http://localhost:8080/restful/objects/businessentities.Location/46"; }
>                       },
>                       "asset" : {
>               "value" : { "href":
> "http://localhost:8080/restful/objects/businessentities.Asset/36"; }
>                       },
>               "audit" : {
>                       "value" : { "href":
> "http://localhost:8080/restful/objects/businessentities.Audit/2"; }
>                       }
>       }
> "
>
> However on javascript:
> "
>           var data =  {
>             "location" : {
>               "href" :
> "http://localhost:8080/restful/objects/businessentities.Location/47";
>             },
>             "asset"    : {
>                 "href":
> "http://localhost:8080/restful/objects/businessentities.Asset/36";
>             },
>             "audit"    : {
>                 "href" :
> "http://localhost:8080/restful/objects/businessentities.Audit/2";
>             }
>           }
>
>           // Post the new data
>           var a2 = new AuditItemCreate();
>           a2.$save(data);
>         ...
> "
>
> i am getting this failure (as displayed by chrome developer tools):
> "
> data:
> asset:
> invalidReason:"Expected a link (because this object's type is not a
> value) but found no 'href'"
> value:"{"href":"http://localhost:8080/restful/objects/businessentities.Asset/36"}";
> __proto__:Object
> audit:
> invalidReason:"Expected a link (because this object's type is not a
> value) but found no 'href'"
> value:"{"href":"http://localhost:8080/restful/objects/businessentities.Audit/2"}";
> __proto__:Object
> location:
> invalidReason:"Expected a link (because this object's type is not a
> value) but found no 'href'"
> value:"{"href":"http://localhost:8080/restful/objects/businessentities.Location/47"}";
> __proto__:Object
> x-ro-invalidReason:"Mandatory"
> "
>
> What is wrong in this javascript code?
>
> Thank you very much, Eder
>

Reply via email to