[wildfly-dev] Improve query() operation for complex attributes?

James Perkins jperkins at redhat.com
Wed Nov 23 11:23:51 EST 2016


Ah, I see. Sorry for the confusion. It might be possible with that dot
notation. You could file a JIRA and someone can look at it when there is
time. It does seem possible though.

On Tue, Nov 22, 2016 at 5:39 PM, Lin Gao <lgao at redhat.com> wrote:

> ----- Original Message -----
> > From: "James Perkins" <jperkins at redhat.com>
> > To: "Lin Gao" <lgao at redhat.com>
> > Cc: wildfly-dev at lists.jboss.org
> > Sent: Wednesday, November 23, 2016 6:11:21 AM
> > Subject: Re: [wildfly-dev] Improve query() operation for complex
> attributes?
> >
> > The second case worked for me without an issue.
> > [standalone at localhost:9990 /]
> > /deployment=batch-chunk.war/subsystem=jaxrs/rest-resource=
> *:query(select=["rest-resource-paths"])
> > {
> >     "outcome" => "success",
> >     "result" => [{
> >         "address" => [
> >             ("deployment" => "batch-chunk.war"),
> >             ("subsystem" => "jaxrs"),
> >             ("rest-resource" =>
> > "org.jboss.example.batch.rest.BatchResource")
> >         ],
> >         "outcome" => "success",
> >         "result" => {"rest-resource-paths" => [
> >             {
> >                 "resource-path" => "batch/jobs",
> >                 "consumes" => undefined,
> >                 "produces" => ["application/json"],
> >                 "java-method" => "javax.ws.rs.core.Response
> > org.jboss.example.batch.rest.BatchResource.listBatchJobs()",
> >                 "resource-methods" => ["GET
> /batch-chunk/rest/batch/jobs"]
> >             },
> >             {
> >                 "resource-path" => "batch/jobs/{status}",
> >                 "consumes" => undefined,
> >                 "produces" => ["application/json"],
> >                 "java-method" => "javax.ws.rs.core.Response
> > org.jboss.example.batch.rest.BatchResource.listBatchJobs(@PathParam
> > java.lang.String status)",
> >                 "resource-methods" => ["GET
> > /batch-chunk/rest/batch/jobs/{status}"]
> >             }
> >         ]}
> >     }]
> > }
>
> You just listed all 'rest-resource-paths' without any filtering, if you
> have over 100 REST endpoints in 'batch-chunk.war', it will be difficult to
> find the one which provides "resource-path" => "batch/jobs".
>
> Let's assume the following command can do the task:
>
> [standalone at localhost:9990 /] /deployment=batch-chunk.war/
> subsystem=jaxrs/rest-resource=*:query(select=["rest-resource-paths"],
> where={"rest-resource-paths.resource-path"=>"batch/jobs"})
>
> here the 'rest-resource-paths.resource-path' is the attribute name in
> enhanced syntax.
>
> > The read-resource operation really does the same thing though in this
> case.
>
> Yes, it does, but I think the most important feature provided by 'query()'
> operation is that it can filter resources by conditions specified by
> 'where' parameter.
>
> It works only on simple attributes, like:
>
> [standalone at localhost:9990 /] /subsystem=datasources/jdbc-
> driver=*:query(select=[driver-xa-datasource-class-name],
> where={driver-name=h2})
> {
>     "outcome" => "success",
>     "result" => [{
>         "address" => [
>             ("subsystem" => "datasources"),
>             ("jdbc-driver" => "h2")
>         ],
>         "outcome" => "success",
>         "result" => {"driver-xa-datasource-class-name" =>
> "org.h2.jdbcx.JdbcDataSource"}
>     }]
> }
>
> It would be good if the 'query()' operation can filter the resources by
> specifying value of attributes which are inside the complex attribute, so
> that the following commands can work:
>
> [standalone at localhost:9990 /] /core-service=capability-
> registry:query(select=[possible-capabilities],where={
> possible-capabilities.name=org.wildfly.data-source})
>
> [standalone at localhost:9990 /] /deployment=batch-chunk.war/
> subsystem=jaxrs/rest-resource=*:query(select=["rest-resource-paths"],
> where={"rest-resource-paths.resource-path"=>"batch/jobs"})
>
>
>
> Best Regards
> --
> Lin Gao
> Software Engineer
> JBoss by Red Hat
>
> > On Tue, Nov 22, 2016 at 12:51 AM, Lin Gao <lgao at redhat.com> wrote:
> >
> > > Hi,
> > >
> > >   Each management resource has an operation named 'query()' to filter
> > > resources according to the condition passed by 'selector' and 'where'
> > > parameters, however it does not work for complex attributes.
> > >
> > >   2 example of complex attributes:
> > >
> > >      - 'query()' operation cannot find which 'possible-capabilities'
> > > provides the capability with name 'org.wildfly.data-source'
> > >      - It cannot find which 'rest-resource-paths' provides the REST
> > > endpoint 'resource-path=/helloworld' in jaxrs subsystem of a war
> deployment
> > > either.
> > >
> > >   Especially for the second case in above examples, it will be helpful
> for
> > > users when doing troubleshooting in case of large deployment.
> > >
> > >   Actually, it does not limit to the complex attributes, it would be
> good
> > > to be able to filter resources by condition specified by attribute
> value of
> > > nested child resources(not only by the first level of child resource).
> > >
> > >   WDYT?
> > >
> > > Best Regards
> > >
> > > --
> > > Lin Gao
> > > Software Engineer
> > > JBoss by Red Hat
> > > _______________________________________________
> > > wildfly-dev mailing list
> > > wildfly-dev at lists.jboss.org
> > > https://lists.jboss.org/mailman/listinfo/wildfly-dev
> > >
> >
> >
> >
> > --
> > James R. Perkins
> > JBoss by Red Hat
> >
>



-- 
James R. Perkins
JBoss by Red Hat
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/wildfly-dev/attachments/20161123/687558ef/attachment.html 


More information about the wildfly-dev mailing list