Hi Nicoktay,
Unfortunately the documentation is a bit unclear of how to make the calls
and what it expects.
There are two ways of creating assets through the REST interface both which
produces Atom Entries as responses. Ideally we should be able to return
other responses than Atom Entries.
The way you are trying to create the asset is by posting a stream, this also
produces an Atom Entry as response.
When posting as a stream you also need to include a slug header specifying
the asset name. Based on the extension we will determine what type of asset
it is.
Something like this:
Response response=
client.path("guvnor-5.4.0.Final-jboss-as-7.0/rest/packages/mortgages/assets")
.accept(MediaType.APPLICATION_ATOM_XML_TYPE)
.type(MediaType.APPLICATION_OCTET_STREAM_TYPE)
.header("slug", "myAssetName.drl")
.post(source);
nicoktay wrote
Thanks for the reply Jervis,
Regarding to the problem I tried to create a RuleModel and wanted to store
this as drl asset.
Followed your suggestion but still I am mistaken in somewhere.
String drl = p.marshal(rulemodel);
WebClient client =
WebClient.create("http://127.0.0.1:8080/","admin","admin",null);
InputStream source = new ByteArrayInputStream(read.marshal(m).getBytes());
Response response=
client.path("guvnor-5.4.0.Final-jboss-as-7.0/rest/packages/mortgages/assets").accept("application/xml").post(source);
and I had following error
*
30-ene-2013 18:00:10 org.apache.cxf.phase.PhaseInterceptorChain
doDefaultLogging
ADVERTENCIA: Interceptor for {http://127.0.0.1:8080/}WebClient has thrown
exception, unwinding now
org.apache.cxf.interceptor.Fault: Could not send Message.
at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:247)
at
org.apache.cxf.jaxrs.client.WebClient.doChainedInvocation(WebClient.java:616)
at org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:596)
at org.apache.cxf.jaxrs.client.WebClient.invoke(WebClient.java:241)
at org.apache.cxf.jaxrs.client.WebClient.post(WebClient.java:250)
at ExpertSystem.Main_FireRules.testRuleModel(Main_FireRules.java:281)
at ExpertSystem.Main_FireRules.main(Main_FireRules.java:68)
Caused by: java.io.IOException: Server returned HTTP response code: 415
for URL:
http://127.0.0.1:8080/guvnor-5.4.0.Final-jboss-as-7.0/rest/packages/mortg...
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at
sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown
Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown
Source)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2190)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2071)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1925)
at
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:662)
at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
... 7 more
Caused by: java.io.IOException: Server returned HTTP response code: 415
for URL:
http://127.0.0.1:8080/guvnor-5.4.0.Final-jboss-as-7.0/rest/packages/mortg...
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown
Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2102)
... 12 more
*
Will be greatful for any help thanks,
Nicoktay.
Jervis Liu wrote
> On 2013/1/30 0:10, nicoktay wrote:
>> Hi all,
>>
>> I was trying to use POST method of REST API to create new asset and
>> insert
>> it into guvnor as in the document
>>
http://docs.jboss.org/drools/release/5.5.0.Final/drools-guvnor-docs/html/...
>>
<http://docs.jboss.org/drools/release/5.5.0.Final/drools-guvnor-docs/html/ch09.html#d0e3500>
>>
>> Below I tried to create new asset using POST, please guide me where I
>> was
>> wrong.
>>
>> WebClient client =
>>
WebClient.create("http://127.0.0.1:8080/","admin","admin",null);
>>
>> Response response=
>>
client.path("guvnor-5.4.0.Final-jboss-as-7.0/rest/packages/mortgages/assets/newtechnicalrule.drl").accept("text/plain").post(rule);
>> // rule is string drl which will be created with the name of
>> "newtechnicalrule.drl".
> When you use POST to create an asset, the correct url is
>
http://localhost:8080/guvnor-5.5.0.Final/rest/packages{packageName}/assets
>
<http://localhost:8080/guvnor-5.5.0.Final/rest/packages%7BpackageName%7D/assets>
>
> The POST method produces MIME-Types of application/atom+xm, not
> "text/plain"
>
> Cheers,
> Jervis
>
> *
>
>
>
>>
>> Welcome to any help thanks,
>>
>> Nicoktay.
>>
>>
>>
>> --
>> View this message in context:
>>
http://drools.46999.n3.nabble.com/REST-API-new-asset-tp4021927.html
>> Sent from the Drools: User forum mailing list archive at
Nabble.com.
>> _______________________________________________
>> rules-users mailing list
>>
> rules-users@.jboss
>
>
> _______________________________________________
> rules-users mailing list
> rules-users@.jboss
--
View this message in context:
http://drools.46999.n3.nabble.com/REST-API-new-asset-tp4021927p4021984.html
Sent from the Drools: User forum mailing list archive at
Nabble.com.