forked from linkedin/rest.li
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
2674 lines (2163 loc) · 92.3 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1.9.12
------
(RB=192500)
Add class to filter DataSchemas in a directory by removing unwanted fields or custom properties of the schema according to given Predicate.
(RB=196098)
Improve FileClassNameScanner to 1) require a specific extension; 2) exclude whose guessed class name contains dots.
1.9.11
------
(RB=194990)
Added batch operations to the async association template.
(RB=190812)
allow specifying an empty string for coloVariants, useful in testing.
1.9.10
------
(RB=195487)
Fix a problem that can block Netty boss thread for a long time.
(RB=195243)
Fixed issue with Complex Keys with fields arrays containing a single element in get requests.
(RB=194339)
Fixing Example Generator to create correct request body for partial updates.
(RB=193189)
Added batch methods to the async interface and template for simple (non complex key, non association) collections.
(RB=190386)
Fixing couple of issues in annotated complex-key resources and async complex-key resource template. Adding extensive test covarage for both scenarios.
(RB=193265)
Add Union template builder method per member.
1.9.9
-----
(RB=188507)
fix the bug where threads that are waiting for state initialization, never stop waiting because the init step throws an exception
1.9.8
-----
(RB=192299)
Added fix to prevent a complex key when a CollectionResource is being used.
1.9.7
-----
(RB=190153)
Protect D2 from intermittent zookeeper problem
1.9.6
-----
(RB=188125)
Changed Snappy dependency to pure Java dependency to avoid JNI issues on Jetty.
1.9.5
-----
(RB=189900)
Add HttpNettyServerFactory and standalone launcher.
1.9.4
-----
(RB=189079)
Fixed issue with snapshots generation failing when referenced pdscs were circularly dependent.
Added tests to make sure that Snapshot generation and reading would work correctly with
circularly dependent models.
(RB=187506)
Added granular set methods for pagination start and count for getall and finder client builders.
1.9.3
-----
(RB=186736)
fixes snapshot incompatibility message printouts.
(RB=184701)
removes unused property keys and removes the non http-namespaced properties referenced in D2 code
(RB=184310)
Move AvroSchemaGenerator out of data-avro due to logging dependency requirement.
(RB=184337)
Adding support for partial update methods on simple resources.
(RB=184874)
Bug fix with compression client filter Accept-Encoding generation
(RB=185890)
Added string constructors to compression filters.
(RB=185181)
Use ParSeq 1.3.3, which depends on log4j 1.6.2 and converges to the same dependent version as Rest.li uses.
Add missing log4j.xml to restli-example-client.
1.9.2
-----
(RB=183317)
Simplify and speed up string intern tests in TestJacksonCodec. This only affects tests.
(RB=182331)
Adding support for java array return and input parameters for actions.
(RB=183215)
Add separate compatibility check for idl.
Add flag to turn off snapshot and idl compatibility check respectively.
1.9.1
-----
(RB=182338)
Fix bug in pegasus plugin that publish snapshot task may not run.
(RB=181765)
Fix up jdk7 warnings.
(RB=171893)
Added server/client compression filters and associated test cases.
(RB=182463)
Adjust log4j related dependencies and log4j.xml. Remove all compile-time dependency of log4j.
1.9.0
-----
(RB=176567)
Introduce simple resources concept which serves a single entity from a particular path.
(RB=174576)
Clean up SLF4J/Log4j mess by removing all dependencies on Log4j and
the SLF4J/Log4j adapter from production jars.
If your executable (war file, etc.) does not already depend on an SLF4J
adapter, you may need to introduce such a dependency, for example on
slf4jlog4j12.
(RB=176574)
Incorporate snapshot into pegasus plugin. All existing projects will automatically generate and publish the snapshot files.
(RB=179212)
add defaultRouting option to d2Config.
1.8.39
------
(RB=177700)
pegasus plugin and idl compatibility checker will check for missing and extra published idl files.
1.8.38
------
(RB=175711)
When generating idl, pass the source files of the resource classes to Javadoc.
When checking idl compatibility, doc field change is now a backwards compatible change instead of equivalent.
(RB=178168)
Update gradle plugin to check source of all languages when deciding if idl generation should be skipped. This fixes a bug where scala
*Resource.scala files were ignored.
(RB=172518)
Use PegasusPlugin to build pegasus integration test modules and examples.
1.8.37
------
(RB=176630)
Fix a pegasus plugin regression about null pointer.
1.8.36
------
(RB=175637)
Fix HttpClientFactory.shutdown() with timeout so it does not tie up
the executor for the length of the timeout.
(RB=173757)
Snapshots implemented locally in pegasus. PegasusPlugin was not changed, so others using pegasus won't be able to use Snapshots yet.
Within the project, Snapshots are now used instead of IDLs for backwards compatibility checking. (IDLs are still used to create builders
and are the source of truth for client-server interaction, however) Snapshots have the advantage that they contain the models that they
reference, so backwards incompatibile changes between models can now be noticed.
(RB=175771)
Gradle plugin: Add missing data and restli-client dependencies to javadoc task classpath. Add test and clean up source code.
1.8.35
------
(RB=174898)
In pegasus plugin, fix bug that avro schema generation is run unconditionally. Now avroSchemaGenerator configuration will be respected again.
Note that there is a new preferred appraoch to do this. Please refer to plugin comments.
In pegasus plugin, if a source set does not have jar task, skip publishing idl.
1.8.34
------
(RB=174570)
Register listener before task execution for rest.li async methods that return promises.
1.8.33
------
(RB=173024)
Add functionality to generated idl files for all source files under a source directory.
(RB=172922)
Remove dependency of system properties from build.gradle in restli-tools.
(RB=173360)
Fix incorrect schema field for idl files.
(RB=173686)
Update Gradle plugin to allow server module skip specifying idlItems. In such case, all source files will be scanned.
(RB=172449)
The generators and tools the Gradle plugin depends on become runtime dependency so that user no longer needs to specify
in the module dependency.
Allow dataTemplateCompile and restClientCompile configurations to be overridden.
(RB=173378)
Add RestliBuilderUtils, modify RestrequestbuilderGenerator to have static ORIGINAL_RESOURCE_NAME and getter
moved the log4j.xml files in the d2 and restli-server src dirs to the test dirs.
1.8.32
------
(RB=170403)
Added PatchHelper class with method which allows applying projection on patch.
(RB=171436)
Instead of getting properties from system properties, create config class for the data and Rest.li generators.
Hide the existing "run()" functions in the concrete generators to private generate() and provide static run() to pass required properties. Command-line main() will still use system properties.
Update the gradle plugin to use the new generator pattern. There is no need for synchronization block and support parallel build.
Remove dataModelJar and restModelJar artifacts from the plugin.
1.8.31
------
(RB=170494)
Interfacing the gradle plugin for LinkedIn specific version. 3rd party plugin could dynamically load the plugin and customize its properties.
1.8.30
------
(RB=170652)
Fix backward incompatible param change to RestLiResourceModelExporter.export()
1.8.29
------
(RB=169640)
Refactor IDL compatibility checking. Allow compatibility checking of referenced named Schemas.
Slightly alter some compatibility messages.
(RB=169203)
Add -resourceclasses option to idl generator command line application.
(RB=170283)
Update Gradle plugin. Use this version as source of truth in LinkedIn toolset.
1.8.28
------
(RB=167736)
Fix interface definition generation for typerefs in action return types and refactor RestLiAnnotationReader
to make action validation easier to understand.
1.8.27
------
(RB=168797)
Revert eec968ddab745286a8c9e05e35f0ddeab011a947 "Refactoring changes for testing resource compatibility."
as it breaks rum publishRestModel with this message:
"No such property: summary for class: com.linkedin.restli.tools.idlcheck.RestLiResourceModelCompatibilityChecker"
1.8.26
------
(RB=167737)
Add RestClient.sendRestRequest(..., Callback<RestResponse> callback) method.
1.8.25
------
(RB=168185)
Add support for enum value documentation for data template generator.
(RB=164876)
Fix bug where client builders failed to coerce batch results for resource collections keyed by a typeref.
(RB=165359)
Use com.linkedin.restli.server.NoMetadata to mark a finder's CollectionResult as no metadata.
Allow non-template return type for finders.
(RB=166235)
IDL compatibility checks for new methods, finders, actions and subresources.
(RB=167736)
Fix idl generation to correctly handle typerefs in action responses.
1.8.23
------
(RB=162866)
Change FixedTemplate to output using ByteString.toString() instead of asAvroString
Add more test cases for generated DataTemplate.
(RB=163290)
Fix bug where @Optional on finder assocKeys was not respected.
(RB=164364)
Fix a bug in idl compatibility checker that marks previously required and currently optional field as incompatible.
(RB=126830)
Deprecate the "items" field for the query parameters in idl. Array parameters use standard pdsc array format.
To make it backwards compatibile, request builders can still use Iterable parameters.
Fix bug that builder methods with Iterable<? extends DataTemplate> parameter are not working.
Update build scripts.
Use Gradle 1.5.
(RB=130743)
Add special rule of idl compatibility checker to handle the deprecated "items" field.
1.8.22
------
(RB=162206)
fix logging message for D2
(RB=161556)
Use thread context classpath instead of pegasus classpath when using Class.forName on names of
coercers, validators and avro custom data translators.
(RB=161961)
Add copy() and clone() methods to generated non-record DataTemplates.
Generated record DataTemplates have had these methods since 1.8.4.
(RB=162841)
Adding new resource class is a backward compatible change now.
Add instruction message for idl compatibility check failure.
1.8.21
------
(RB=162036)
Fix UnsupportedOperationException from SimpleLoadBalancerSTate while creating transportClientProperties for https
1.8.20
------
(RB=161479)
made TARGET_SERVICE_KEY_NAME a public static variable
(RB=154752)
Fix bug where shutdown of HttpClientFactory will fail if the final
event leading to shutdown occurs on a Netty IO thread.
(RB=159386)
Support typerefs in association keys for batch responses.
(RB=160441)
Disable interning of field names by Jackson parser.
This should reduce intended growth in perm gen.
(RB=160184)
Add embedded schema to Avro schema translated from Pegasus schema
This allows reverse translation without loss (e.g. loss of typeref, custom translation instructions).
1.8.19
------
(RB=158603)
Fix bug that context path is missing in docgen "View in JSON format" link.
(RB=154315)
Add SSL support in D2 client.
1.8.18
------
(RB=157884)
Fix NPE in Data Template generator when an array item or map value type is a typeref'ed union.
(RB=157128)
Fix queryParamsDataMap not able to convert single element query to StringArray
1.8.17
------
(RB=157735)
fix default and master service bugs in D2ConfigCmdline
1.8.16
-------
(RB=154319)
Allow repeat registration of a coercer *only* if the coercer is the same class as already registered.
(RB=154979)
add ability to exclude individual services from colo variants in d2-config-cmdline
1.8.15
------
(RB=154062)
moved transportClient, degrader and many other cluster properties to service properties (part 2)
(RB=153714)
make sure that a marked down server is not marked up by ZookeeperConnectionManager when the zookeeper connection is expired
(RB=153778)
Add "View in JSON format" link to all docgen pages in the navigation header.
1.8.14
-------
(RB=147678)
Improve client side logging of RestLiServiceException
(RB=152564)
Fix race condition between ZKConnection.start() and DefaultWatcher.process() by waiting for initialization completion
This replaces RB 149393
1.8.13
-------
(RB=152377)
Reapply "moved transportClient, degrader and many other cluster properties to service properties (part 1)"
Push the config producing code first then push the config consuming part later.
(RB=151543)
minimize the amount of logging that D2 makes when there is no state changes
1.8.12
------
Reverted "moved transportClient, degrader and many other cluster properties to service properties (part 1)"
(RB=151817)
Update RestLiConfig to allow RestLiServer to load specific resource classes.
(RB=152325)
Restore binary compatibility by changing return type of ScatterGatherBuilder$RequestInfo.getRequest()
back to Request (it was changed to BatchRequest in 1.8.9; this change was source compatible
but not binary compatible).
1.8.11
------
(RB=152040)
moved transportClient, degrader and many other cluster properties to service properties (part 1)
Push the config producing code first then push the config consuming part later.
(RB=152100)
bump to 1.8.11
1.8.10
------
(RB=150230)
Add detection of wrong assocKey in RestRequestBuilderGenerator.
Add display of assocKeys of finder in restli-docgen.
(RB=144421)
Added RoutingAwareClient to facilitate service name lookup from a routeKey
(RB=151086)
bump to 1.8.10
1.8.9
-----
(RB=149304)
Added ScatterGather support for BatchUpdates and BatchDeletes.
Made a backwards incompatible change to ScatterGatherBuilder.RequestInfo constructor; it now
accepts a BatchRequest instead of Request.
(RB=150347)
bump to 1.8.9
1.8.8
-----
(RB=144188)
Added jmx methods to query trackerClient and number of hashpoint.
(RB=149202)
Add dataModel build script and use in restli-common to publish EmptyRecord
and other core restli schemas so they can be referenced by other projects.
(RB=149393)
fix for ZKConnection/DefaultWatcher race condition
1.8.7
-----
(RB=146100)
Performance optimization for construction of query params to avoid
needlessly appending the array index as a string for each field in
a list only to remove it later.
(RB=146833)
Deprecate AbstractValidator default (no-arg) constructor. See class
comments for context.
(RB=146839)
Potential fix for Avro Schema Translator transient problem where
some embedded/contained schemas are not being translated.
1.8.6
-----
(RB=139285)
Fix up RestLiServiceException.toString() and update ErrorResponse
schema to correctly reflect optional fields.
(RB=141420)
Add ColoVariants to D2Config
1.8.5
-----
(RB=138254)
Add pdsc file and validator for EmptyRecord.
(RB=138178)
Workaround bug in ScheduledThreadPoolExecutor that caused
delays when calling HttpClientFactory.shutdown().
(RB=139799)
Order subresources when restspec.json is exported. This avoids massive changes in restspec.json when
resources are added or removed. (This is due to internal use of HashMap.)
(RB=140005)
add ClientBuilderUtil.addSuffixToBaseName.
(RB=140198)
Fix bug in translating null value in a union with null when translating from Avro data to Pegasus.
(RB=140010)
Performance tuning for requests with large numbers of query params.
(RB=140733)
Modified LoadBalancerStrategy to use error rate for load balancing
1.8.4
-----
(RB=137488)
Fix to PSON deserialization issues.
PSON responses should not deserialize correctly.
The default representation for PSON strings is now a length-encoded string.
All length encoded strings are now encoded with a two byte length by default. This is a backwards-
incompatible change.
(RB=136944)
Allow Content-Types to include an optional Charset. For now it is ignored, but including it will
no longer allow either the client or the server to be unable to parse the Content-Type.
1.8.3
-----
(RB=135225)
Fix UnsupportedOperationException from UnmodifiableMap in SimpleLoadBalancerState.
1.8.2
------
(RB=131451)
Add PatchTreeRecorder & PatchRequestRecorder to build patches that allow you to remove fields.
(RB=130545)
Allow clients to send request bodies in pson format. Upgraded servers will be
able to interpet bodies in pson format.
(RB=133781)
Remove legacy server code that uses ',' as separator for batch_get ids. Correct format is "?ids=1&ids=2".
1.8.1
-----
Revert RB 126830 until compatibility issues are resolved.
1.8.0
-----
Increasing version to 1.8.0, because 126830 is wire-compatible, but compile-incompatible.
(RB=129457)
Modified D2ClientBuilder to accept load balancer factory as a parameter.
1.7.12
-----
(RB=130083)
Add RestliServlet to provide developers with a simple way to build a war using rest.li.
(RB=126830)
Deprecate the "items" field for the query parameters in idl. Array parameters use standard pdsc array format.
To make it backwards compatibile, request builders can still use Iterable parameters.
Fix bug that builder methods with Iterable<? extends DataTemplate> parameter are not working.
1.7.11
-----
(RB=130026)
Change build scripts to work with Gradle 1.3.
(RB=130083)
Add RestliServlet to provide developers with a simple way to build a war using rest.li.
1.7.10
-----
(RB=129645)
Add methods for common uses for ResponseFuture.getResponseEntity and RestClient.sendRequest(RequestBuilde ...)
client.sendRequest(builder.build()).getResponse().getEntity() can be simplified as follow to
client.sendRequest(builder).getResponseEntity();
1.7.9
-----
(RB=129334)
add try/catch to PropertyEvent runnables, add UnhandledExceptionHandler to NamedThreadFactory
(RB=129193)
fix a bug where the LoadBalancer config gets overwritten by empty map and causes D2 Strategy
to not instantiate properly
(RB=123406)
Change to allow clients to request data in pson-encoded format (and interpet pson-encoded data),
and for servers to be able to send pson-encoded responses.
Clients can signify that a response should be in pson format by sending the request with the
header "Accept-Type : application/x-pson". The server will then encode the result in pson and
send it back with the header "Content-Type : application/x-pson". If the client recieves a
response with this header it will decode it with the pson codec.
Some headers will now work a bit differently:
Content-Type headers will no longer be sent with responses unless there is actual body content
to encode. This change was made primarily to simplify picking the right header. There's no
point in trying to figure out the right content-type header to send back if there isn't
actually any content to send.
Accept-Type headers can now be sent with requests. The default client won't send Accept-Type
headers (same as the old code), but users can use the new RestClient constructor to create a
client that will send Accept-Type headers. Right now there are four basic options for
Accept-Type headers:
- no header: server will send back result as application/json. This is required for backwards
compatibility.
- application/json highest quality in header: server will send back result as application/json
- application/x-pson highest quality in header: server will send back result as
application/x-pson. If the server code is old, result will be sent back as application/json
- */* highest quality in header: for now, server will send back result as application/json, if
no other accept types are found. However, the server will prefer to send back responses in
formats that are explicitly mentioned in the header, even when they are lower quality than */*
(RB=128653)
ActionResponseDecoder.getEntity() will return Void.class if its fieldDef is
null, to preserve compatibility from before the Action response changes.
(RB=128251)
Add javadoc to rest.li docgen and include restspec.json files as resource in rest.li server jars.
1.7.8
-----
(RB=119453)
Add default value handling for query parameter in complex type, including all DataTemplate subclasses, array of simple types and complex types.
Union can be used as query parameter type.
(RB=127439)
Fix NPE resulting from calling .getEntityClass() on an ActionResponseDecoder for a void-returning Action.
1.7.7
-----
(RB=123370)
Add TextDataCodec to support serializing and deserializing to String, Writer and Reader.
Move getStringEncoding() from DataCodec to TextDataCodec interface. This is potentially
a backwards incompatible change.
Replace use of ByteArrayInputStream(string.getBytes(Data.UTF_8_CHARSET)) with new JacksonDataCodec
and SchemaParser APIs that take String as input.
1.7.6
-----
(RB=122933)
If union is named because it is typeref'ed, the typeref schema was
originally not available through the generated code. This change
add a new HasTyperefInfo interface. If the union is named through
through typeref, the generated subclass of UnionTemplate will also
implement this interface. This interface provides the TyperefInfo
of the typeref that names the union.
(RB=121895)
Fix encoding bug in QueryTunnel Util.
Make ByteString.toString() to return a summary instead of the whole
array as an Avro string.
HttpBridge for RPC requests should not log the whole entity.
Remove Entity body from Request/Response toString().
(RB=122813)
restli-docgen displays all nested subresources and related models in the JSON format.
1.7.5
-----
(RB=122512)
Move PsonDataCodec from test to main source dir.
1.7.4
-----
(RB=122372)
RequestContext should not be shared across requests in ParSeqRestClient
1.7.3
-----
(RB=122016)
Add support for Avro 1.6. To use Avro 1.6, depend on data-avro_1_6.
Also fix getBytes() to explicitly specify UTF-8. This has no impact
on platforms whose default encoding is UTF-8.
(RB=121948)
Add DataList serialization and deserialization to JacksonDataCodec.
1.7.2
-----
(RB=120743)
Infer order of include and fields properties of record if location information is not available.
Change generated and up-to-date log messages to info. This was useful initially for debugging. Since
it has not been a problem, changing to info will reduce build output noise from generator.
(RB=120925)
Add requisite maven configuration and pom generation to root build.gradle to enable releasing pegasus
to maven central.
(RB=120249)
Copy 'pegasus' gradle plugin into pegasus codebase from RUM, so 3rd party developers have access to
the build tools required for a working development flow. Also add maven central and maven local as repos
so developers can publish pegasus artifacts to their local repo and build standalone apps based on those
artifacts (this part will not be needed after we push pegasus artifacts to the maven central repo but
helps in the short term).
(RB=119121)
Fixed an issue where Actions that declare their return types as primitives (return int instead of
Integer, for example) no longer fail while trying to coercer the response into the correct type.
1.7.1
-----
Bad build, not published
1.7.0
-----
(RB=116297)
Add Schema compatibility checker. See com.linkedin.data.schema.compatibility.CompatibilityChecker and
CompatibilityOptions for details.
There is a change in MessageList class to take a type parameter. This is binary compatible but may
result in unchecked compilation warning/errors (depending on compiler setting.) Impact should be
minimum since this class is mostly for use within pegasus. However, it leaked by data-transform
package by DataProcessingException. This has been fixed to use List<Message> instead of MessageList.
(RB=118831)
In idl compatibility checker, allow parameter optional to be upgraded to default, and allow default to be downgraded to optional.
(RB=119617)
Add PageIncrement.FIXED to better support post-filtered search result paging.
1.6.14
-----
(RB=118380)
Add handling of long queries via X-HTTP-Method-Override
(RB=118576)
In idl compatibility checker, allow finder AssocKey to be upgraded to AssocKeys, but disallow the opposite direction.
1.6.12
-----
(RB=118288)
Fix bug in Avro generator in which referenced schema is not generated even
if schema file or name is explicitly mentioned as input args to avro schema
generator.
(RB=117895)
Fix bug in Avro schema and data translator that occurs when optional typeref
of union present. Significantly improve test coverage for typeref for avro
data and schema translation.
(RB=118838)
Add Request.getResourcePath() to provide access to the resource path parts that uniquely identify what resource the request is for.
(RB=118345)
Fix a bug where @AssocKeys of CustomTypes would cause IDL generation to crash.
Added test cases for @AssocKeys of CustomTypes.
1.6.11
------
(RB=115603)
Fix a bug in DegraderLoadBalancerStrategyV2 and DegraderLoadBalancerStrategyV3 that will not recover if we reach complete degraded state
(RB=117601)
Changed RestSpecAnnotation.skipDefault default from false to true.
(RB=116643)
All sub-level idl custom annotations are always included in class level.
1.6.10
------
(RB=116608)
Preserve PropertyEventBusImpl constructor backward compatibility
1.6.9
-----
(RB=111712)
Split original Restli example server/client into two versions: Basic and D2. The Basic version does not contain any D2 features.
Improve the D2 version of server and client to fully utilize D2.
Add gradle tasks to start all the variants of servers and clients.
Add gradle task to write D2-related configuration to ZooKeeper.
(RB=111517)
Restore method signatures changed in 1.6.7 to preserve backward compatibility
1.6.8
-----
Revert "Don't log entity body in Rest{Request,Response}Impl.toString(), since it's likely to log sensitive data."
1.6.7
-----
(RB=111517)
Fix a bug in batching multiple get requests into one, and refactor query parameters handling in
Request and RequestBuilder hierarchy.
(RB=108674)
Custom Types will now work as keys.
Keys keep track of their own schemas.
Reference types for keys are annotated in the class level annotation, as a new parameter in
RestLiCollection as keyTyperefClass, or as part of the @Key annotation for associations.
(RB=TBD)
Added docgen to restli-server-standalone config.
(RB=101117)
Custom Types will now work with action parameters.
FieldDefs/Params now keep track of their own schemas.
Action parameter metadata is now calculated in a static block in generated builder code --
no longer generated on the fly at call-time.
Action response metadata is now also calculated in a static block or in the AnnotationReader,
rather than on the fly at call-time.
Fixed a typeref bug that would cause non-custom type typerefs to appear in builders as their
reference types rather than their underlying types.
1.6.6
-----
(RB=112754)
Fix SI-515. Escape '.'s in keys from QueryParamDataMap so AnyRecords can be encoded as query params.
(RB=106343)
Fix url escaping of string when used as keys in rest.li. (SI-495)
1.6.5
-----
(RB=109987)
Rename startServer task in restli-example-server to startExampleServer.
Rename RestLiExamplesServer in restli-int-test-server to RestLiIntTestServer.
The old startServer task is still used to start the current restli-int-test-server.
(RB=110881)
Change idl custom annotation default value of skipDefault to false.
1.6.4
-----
(RB=103770)
Allow custom annotations in resource classes to be passed to generated .restspec.json files.
(RB=99932)
Add D2ClientBuilder class, which conveniently generates D2Client with basic ZooKeeper setup.
1.6.3
-----
(RB=107630)
pass requestContext up to restli layer.
1.6.2
-----
(RB=103500)
Move non-LI-specific part of photo server example into pegasus.
1.6.1
-----
(RB=105748)
Integrate compatibility level into idl checker. The exit code of the main function now depends on both
the check result and the level.
(RB=106155)
Fix incorrect handling of absent optional complex query parameters.
1.6.0
-----
(RB=101499)
Add "validatorPriority" to enable validator execution order to be specified.
See details in DataSchemaAnnotationValidator class.
* <b>Validator Execution Order</b>
* <p>
*
* Execution ordering of multiple validators specified within the same "validate"
* property is determined by the "validatorPriority" property of each validator.
*
* <code>
* "validate" : {
* "higherPriorityValidator" : {
* "validatorPriority" : 1
* },
* "defaultPriorityValidator" : {
* },
* "lowerPriorityValidator" : {
* "validatorPriority" : -1
* }
* }
* </code>
* <p>
*
* The higher the priority value, the higher the priority of the validator, i.e.
* a validator with higher prority value will be executed before the validators
* with lower priority values. The default priority value for a validator that
* does not specify a priority value is 0. Execution order of validators with
* the same priority value is not defined or specified.
* <p>
*
* Validators may be attached to a field as well as the type of the field.
* This class will always execute the validators associated to the type of the field
* before it will execute the validators associated with the field.
* <p>
*
* If schema of a data element is a typeref, then the validator associated with
* the typeref is executed after the validator of the referenced type.
* <p>
*
* Beyond the above execution ordering guarantees provided by this class,
* the execution order of validators among different data elements is determined
* by the traversal order of the caller (i.e. how data elements passed to the
* {@link #validate(ValidatorContext)} method of this class. Typically, the caller will be
* {@link com.linkedin.data.schema.validation.ValidateDataAgainstSchema}
* and this caller performs a post-order traversal of data elements.
There is an incompatible semantic change. Previously the outer typeref validators
are executed before the inner typeref validators.
(RB=104954)
Fix bug to not throw NPE when include schema is not valid.
When RuntimeException is thrown by code generator, make sure that accummulated
parser messages are emitted through a RuntimeException to help diagnose the
cause of the RuntimeException.
1.5.12
------
(RB=104243)
Fix StackOverflowError when generating mock data for schema that recursively references itself.
(RB=104714)
Move SSL configuration to from HttpClientFactory down to TransportClientFactory.
1.5.11
-----
(RB=103288)
Fix NullPointerException in testcase's shutdown method.
1.5.10
-----
(RB=99688)
Fix bug with double-encoding spaces in query parameters.
1.5.9
-----
(RB=97871)
retry d2-config-cmdline on connectionLossException
1.5.8
-----
(RB=96060)
Add doc and Javadoc of source resource class name to generated idl and client builder.
(RB=96333)
Allow http status code be specified in GET methods and Action methods. For GET, define custom GET method (by annotating
with @RestMethod.Get) with return type GetResult<V>. For Action, define the action method with return type
ActionResult<V>.
1.5.7
-----
(RB=96131)
Fix NPE in RestRequestBuilderGenerator when processing legacy IDL format.
1.5.6
-----
(RB=95037)
Generated rest client builders now contain Javadoc extracted from .restspec.json files.
Such document originally comes from the Javadoc of corresponding resource classes.
1.5.5
-----
(RB=94738)
Add consistency check between SSLContext and SSLParameters arguments
of HttpNettyClient constructor.
(RB=95371)
Deprecate RestLiConfig.setClassLoader(). RestLi now loads resource
classes using the current thread's contextClassLoader.
1.5.4
-----
(RB=93597)
Enhance JSR330Adapter to support injection via constructor arguments,
allowing a safer coding practice of declaring final member variables
in rest.li resources.
(RB=92918)
RestLiResourceModelExporter now returns a GeneratorResult of files modified/created so it is more consistent with the
other generator classes.
1.5.3
-----
(RB=93836)
Detect class name conflicts that occur when a generated class name
is the same as the class name for a NamedDataSchema.
Also clean up DataTemplateGenerator code.
Array items and map values of generated classes is always the
the first schema with custom Java binding or the fully
dereferenced schema if there is no custom Java binding.
1.5.2
-----
(RB=92697)
Add SSL support to R2 http client.
1.5.1
-----
(RB=93099)
Remove cow.
1.5.0
-----
(RB=93107)
Fix bug of JMX bean
(RB=93024)
Follow on change to remove old Rpc code in data.