Bug 1124630
| Summary: | RFE: zanata-client should use jersey instead of resteasy | ||
|---|---|---|---|
| Product: | [Retired] Zanata | Reporter: | Patrick Huang <pahuang> |
| Component: | Component-Maven | Assignee: | Patrick Huang <pahuang> |
| Status: | CLOSED CURRENTRELEASE | QA Contact: | Ding-Yi Chen <dchen> |
| Severity: | medium | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | client-3.3 | CC: | camunoz, dchen, sflaniga, zanata-bugs |
| Target Milestone: | --- | Keywords: | Triaged |
| Target Release: | client-3.7 | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | commit eec55675829ea6d53a719645837c50d2cad112d4 | Doc Type: | Bug Fix |
| Doc Text: | Story Points: | 5 | |
| Clone Of: | Environment: | ||
| Last Closed: | 2015-07-30 01:57:51 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | |||
| Bug Blocks: | 1124615, 1171529 | ||
|
Description
Patrick Huang
2014-07-30 00:59:54 UTC
We have estimated story points for switching the client from using Resteasy to a leaner library in Fedora. It was also noted that using Resteasy interfaces to invoke clients is discouraged. Discussed replacement options where: - Apache HttpClient - Jersey - Direct curl invocation (not probable since it would break platform independence) All of these would reduce the transitive dependency size. After a bit of digging, it's a lot more involved then I thought. First we need to migrate from RESTEasy specific things to JAX-RS api (Use JAX-RS interface only). This includes but not limited to: - in zanata API change all ClientResponse<T> to JAX-RS Response - in zanata API org.zanata.rest.DocumentFileUploadForm to remove the dependency to RESTEasy multipart and to use generic JAX-RS. Seems possible http://stackoverflow.com/a/20477172/345718 - in zanata API remove @Wrapped annotation from SourceDocsResource and ProjectsResource. Looks like we don't have to use it? http://stackoverflow.com/a/11775245/345718 - remove all the IXXXResource proxy interfaces as they won't be used anymore. - change server to implement this new zanata API (actual implementation may not change too much. Just the annotation and returned type has changed. Maybe some more configuration for multipart to work.) - in Zanata client change ZanataProxyFactory to use JAX-RS client API(I've tried it and it works for the normal end points but haven't tried the multipart one) - figure out how to make disableSSLCert work in this new client API http://stackoverflow.com/questions/6047996/ignore-self-signed-ssl-cert-using-jersey-client jersey version in f21 and rawhide: 1.17.1 Another thought: We may only need to change the return type to Response and remove/replace RESTEasy annotation from API. The server could stay the same. After all what the client sees should be just XML/JSON payload. This means: - we could move the @Wrapped annotation to server - either move org.zanata.rest.DocumentFileUploadForm to server or figure out a way to use JAX-RS annotation only. Patrick, you could use (eg) org.zanata.rest.service.SourceDocResource in the client (as in the server), instead of org.zanata.rest.client.ISourceDocResource. It's already using plain JAX-RS Response return types rather than ClientResponse. Or you might want to use org.zanata.rest.enunciate.SourceDocResource By "move the @Wrapped annotation to server", I assume you mean move it to (zanata-server)/SourceDocResourceService instead of (zanata-api)/SourceDocResource. That sounds okay, but perhaps GenericEntity is more portable? Tested with commit ffcc07caa662d87b7d801703b808d2d03ee2469d
Push with tar-1.26
== ][ERROR] Operation failed: Invalid syntax for the expression '%5Ba-zA-Z0-9%5D+(%5Ba-zA-Z0-9_%5C-,{.}%5D*%5Ba-zA-Z0-9%5D+)%3F' associated with the name 'id'
To retry from the last document, please set the following option(s):
--from-doc "tar"
.
[ERROR] Execution failed:
java.lang.RuntimeException: Invalid syntax for the expression '%5Ba-zA-Z0-9%5D+(%5Ba-zA-Z0-9_%5C-,{.}%5D*%5Ba-zA-Z0-9%5D+)%3F' associated with the name 'id'
at org.zanata.client.commands.push.PushCommand.pushCurrentModule(PushCommand.java:428)
at org.zanata.client.commands.push.PushCommand.run(PushCommand.java:199)
at org.zanata.client.commands.ConfigurableCommand.runWithActions(ConfigurableCommand.java:106)
at org.zanata.client.commands.ArgsUtil.runCommand(ArgsUtil.java:48)
at org.zanata.client.ZanataClient.processArgs(ZanataClient.java:170)
at org.zanata.client.ZanataClient.main(ZanataClient.java:95)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Invalid syntax for the expression '%5Ba-zA-Z0-9%5D+(%5Ba-zA-Z0-9_%5C-,{.}%5D*%5Ba-zA-Z0-9%5D+)%3F' associated with the name 'id'
at com.sun.jersey.api.uri.UriTemplateParser.parseName(UriTemplateParser.java:390)
at com.sun.jersey.api.uri.UriTemplateParser.parse(UriTemplateParser.java:282)
at com.sun.jersey.api.uri.UriTemplateParser.<init>(UriTemplateParser.java:154)
at com.sun.jersey.api.uri.UriTemplate.createURIComponent(UriTemplate.java:799)
at com.sun.jersey.api.uri.UriTemplate.createURIWithStringValues(UriTemplate.java:769)
at com.sun.jersey.api.uri.UriTemplate.createURIWithStringValues(UriTemplate.java:720)
at com.sun.jersey.api.uri.UriTemplate.createURI(UriTemplate.java:663)
at com.sun.jersey.api.uri.UriBuilderImpl._build(UriBuilderImpl.java:661)
at com.sun.jersey.api.uri.UriBuilderImpl.build(UriBuilderImpl.java:641)
at org.zanata.rest.client.ClientUtil.resolvePath(ClientUtil.java:69)
at org.zanata.rest.client.AsyncProcessClient.startSourceDocCreationOrUpdate(AsyncProcessClient.java:68)
at org.zanata.client.commands.push.PushCommand.pushSrcDocToServer(PushCommand.java:499)
at org.zanata.client.commands.push.PushCommand.pushCurrentModule(PushCommand.java:384)
... 11 more
Caused by: java.util.regex.PatternSyntaxException: Illegal repetition near index 34
%5Ba-zA-Z0-9%5D+(%5Ba-zA-Z0-9_%5C-,{.}%5D*%5Ba-zA-Z0-9%5D+)%3F
^
at java.util.regex.Pattern.error(Pattern.java:1924)
at java.util.regex.Pattern.closure(Pattern.java:3104)
at java.util.regex.Pattern.sequence(Pattern.java:2101)
at java.util.regex.Pattern.expr(Pattern.java:1964)
at java.util.regex.Pattern.group0(Pattern.java:2854)
at java.util.regex.Pattern.sequence(Pattern.java:2018)
at java.util.regex.Pattern.expr(Pattern.java:1964)
at java.util.regex.Pattern.compile(Pattern.java:1665)
at java.util.regex.Pattern.<init>(Pattern.java:1337)
at java.util.regex.Pattern.compile(Pattern.java:1022)
at com.sun.jersey.api.uri.UriTemplateParser.parseName(UriTemplateParser.java:366)
... 23 more
fixed in last commit As the fix verified in maven client but not yet packed to fedora, I change the title and other fields to reflect this. VERIFIED with eec55675829ea6d53a719645837c50d2cad112d4 See also https://github.com/zanata/zanata-api/pull/22 for related API changes. |