-
Notifications
You must be signed in to change notification settings - Fork 22
/
whats-new.html.haml
408 lines (365 loc) · 18 KB
/
whats-new.html.haml
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
---
layout: base
---
%h1
Please find the latest releases at github:
%p
%a(href='https://github.com/togglz/togglz/releases' class='biglink')
https://github.com/togglz/togglz/releases
%a(name='3.0.0')
%h3
Togglz 3.0.0 and later
Find the latest releases <a href="https://github.com/togglz/togglz/releases">at github</a>.
%h2 Archived release notes
%a(name='2.6.1.Final')
%h3
Togglz 2.6.1.Final
See the list of <a href="https://github.com/togglz/togglz/milestone/11?closed=1">fixed issues</a> on GitHub.
%a(name='2.6.0.Final')
%h3
Togglz 2.6.0.Final
See the list of <a href="https://github.com/togglz/togglz/milestone/9?closed=1">fixed issues</a> on GitHub.
%a(name='2.5.0.Final')
%h3
Togglz 2.5.0.Final
See the list of <a href="https://github.com/togglz/togglz/milestone/7?closed=1">fixed issues</a> on GitHub.
%a(name='2.4.1.Final')
%h3
Togglz 2.4.1.Final
See the list of <a href="https://github.com/togglz/togglz/milestone/8?closed=1">fixed issues</a> on GitHub.
%a(name='2.4.0.Final')
%h3
Togglz 2.4.0.Final
See the list of <a href="https://github.com/togglz/togglz/milestone/6?closed=1">closed issues and pull requests</a> on GitHub.
%a(name='2.3.0.Final')
%h3
Togglz 2.3.0.Final
%ul
%li
Core: Added support for IP ranges to ClientIpActivationStrategy
(see <a href="https://github.com/togglz/togglz/pull/172">#172</a>)
%li
Spring Boot: Auto-caching existing StateRepository if enabled
(see <a href="https://github.com/togglz/togglz/pull/164">#164</a>)
%li
Spring Boot: Make the properties documentation available in the properties
editor in STS and IntelliJ IDEA and other tools
(see <a href="https://github.com/togglz/togglz/pull/165">#165</a>)
%li
Spring Boot: Added SpringSecurityUserProvider to condition for
SpringSecurityUserProviderConfiguration
(see <a href="https://github.com/togglz/togglz/pull/173">#173</a>)
%li
Google App Engine: Prevent the creation of unnecessary transactions
(see <a href="https://github.com/togglz/togglz/pull/167">#167</a>)
%a(name='2.3.0.RC2')
%h3
Togglz 2.3.0.RC2
%ul
%li
New Apache Zookeeper integration module. Many thanks to
<a href="https://github.com/ryangardner">Ryan Gardner</a> and his team
for this awesome contribution
(see <a href="https://github.com/togglz/togglz/pull/162">#162</a>)
%li
New System Property activation strategy
(see <a href="https://github.com/togglz/togglz/pull/163">#163</a>)
%li
Major performance improvements for looking up the FeatureManager
(see <a href="https://github.com/togglz/togglz/pull/158">#158</a>)
%li
New JMH benchmark test suite for tracking performance problems
(see <a href="https://github.com/togglz/togglz/pull/159">#159</a>)
%li
Fixed issue that caused failing integration tests when using the
Spring Boot integration module
%li
Some minor improvements in the Spring Boot integration module
%a(name='2.3.0.RC1')
%h3
Togglz 2.3.0.RC1
%ul
%li
New Spring Boot Starter module. Many thanks to
<a href="https://github.com/marceloverdijk">Marcel Overdijk</a> for his
contribution and his help with getting Togglz to work with Spring Boot.
(see <a href="https://github.com/togglz/togglz/issue/134">#134</a> and
<a href="https://github.com/togglz/togglz/pull/154">#154</a>)
%li
New Hazelcast module. Many thanks to
<a href="https://github.com/camielza">Camiel de Vleeschauwer</a> for his contribution.
(see <a href="https://github.com/togglz/togglz/pull/153">#153</a>)
%li
Many minor improvements for the Spring <code>BeanFinder</code> implementations which
now should work much better especially in non Spring Web environments.
%li
New annotation <code>@DefaultActivationStrategy</code> which can be used to specify a
default strategy for a feature directly on the enum.
(see <a href="https://github.com/togglz/togglz/pull/141">#141</a>)
%li
Many minor improvements and bugfixes...
%a(name='2.2.0.Final')
%h3
Togglz 2.2.0.Final
%ul
%li
New Netflix Archaius module. Many thanks to
<a href="https://github.com/RichSteele">Richard Steele</a> for his contribution.
(see <a href="https://github.com/togglz/togglz/pull/126">#126</a>)
%li
New Cassandra module. Many thanks to
<a href="https://github.com/artur-tamazian">Artur Tamazian</a> for his contribution.
(see <a href="https://github.com/togglz/togglz/pull/128">#128</a>)
%li
Spring module has been splitted into <code>spring-core</code> and <code>spring-web</code> modules
(see <a href="https://github.com/togglz/togglz/issue/55">#55</a>). Please refer to the
<a href="/updating-notes.html">updating notes</a> if you are updaing from an earlier version
of Togglz.
%li
The JUnit <code>TogglzRule</code> now supports feature variations.
(see <a href="https://github.com/togglz/togglz/pull/131">#131</a>)
%li
The Togglz Console now supports CSRF tokens created by Spring Security
(see <a href="https://github.com/togglz/togglz/issue/115">#115</a>)
%li
New <code>CompositeStateRepository</code> to read feature state from multiple
wrapped state repositories.
%li
Performance improvements for EnumBasedFeatureProvider
(see <a href="https://github.com/togglz/togglz/issue/121">#121</a>)
%a(name='2.1.0.Final')
%h3
Togglz 2.1.0.Final
%ul
%li
New Google AppEngine module. Many thanks to
<a href="https://github.com/fabito">Fábio Franco Uechi</a> for his work on this.
%li
New Guice module. Thanks to
<a href="https://github.com/fabito">Fábio Franco Uechi</a> for this contribution.
%li
New MongoDB module providing a MongoDB state repository.
%li
Added OSGi manifests to all Togglz modules
(see <a href="https://github.com/togglz/togglz/issues/93">#93</a>)
%li
New activation strategy based on SpringSecurity user authorities.
(see <a href="https://github.com/togglz/togglz/issues/67">#67</a>)
%li
New <code>ServerNameActivationStrategy</code> for activating features only on certain
cluster nodes (see <a href="https://github.com/togglz/togglz/issues/88">#88</a>)
%li
Fixed bug in <code>FeatureProxyFactoryBean</code> that caused issues if proxy was created too early
(see <a href="https://github.com/togglz/togglz/issues/76">#76</a>)
%li
Various improvements and bugfixes for <code>CachingStateRepository</code>
%li
Performance improvements in <code>FileBasedStateRepository</code>
(see <a href="https://github.com/togglz/togglz/issues/64">#64</a>)
%li
Various improvements for the JSP taglib
(see <a href="https://github.com/togglz/togglz/issues/68">#68</a>,
<a href="https://github.com/togglz/togglz/issues/94">#94</a> and
<a href="https://github.com/togglz/togglz/issues/96">#96</a>)
%li
<code>JDBCStateRepository</code> now supports container managed transactions
(see <a href="https://github.com/togglz/togglz/issues/77">#77</a>)
%li
Added a builder to simplify the creation and configuration of
<code>JDBCStateRepository</code>
%li
Fixed Togglz Admin Console to work correctly with JSESSIONID in URL
(see <a href="https://github.com/togglz/togglz/issues/83">#83</a>)
%li
Various improvements in the test support modules
%li
And much much more...
%a(name='2.0.1.Final')
%h3
Togglz 2.0.1.Final
%ul
%li
Avoid NPE when <code>FeatureManagerFactoryBean.getObjectType()</code> is called before initialization
(see <a href="https://github.com/togglz/togglz/issues/47">#47</a>)
%li
Fixed <code>CachingStateRepository</code> to work correctly with <code>NamedFeature</code>
(see <a href="https://github.com/togglz/togglz/issues/56">#56</a>)
%li
Added <code>noCommit</code> flag to <code>JDBCStateRepository</code> to support managed connections.
(see <a href="https://github.com/togglz/togglz/issues/77">#77</a>)
%li
Allow to specify cache TTL in other time units than millisecond
(see <a href="https://github.com/togglz/togglz/issues/48">#48</a>)
%li
Added system property <code>org.togglz.DISABLE_JNDI_LOOKUPS</code> to work around issue when
running on GAE
%li
Fixed NPE in <code>ServerIpActivationStrategy</code> that occurred if running on GAE
%li
Allow users to configure the <code>minCheckInterval</code> of <code>FileBasedStateRepository</code>
(see <a href="https://github.com/togglz/togglz/issues/64">#64</a>)
%li
<code>StaticFeatureManagerProvider</code> should use a volatile field to store the <code>FeatureManager</code>
(see <a href="https://github.com/togglz/togglz/issues/59">#59</a>)
%li
Make sure <code>FeatureProxyFactoryBean.getObject()</code> isn't called before initialization
(see <a href="https://github.com/togglz/togglz/issues/76">#76</a>)
%li
And some more minor fixes...
%a(name='2.0.0.Final')
%h3
Togglz 2.0.0.Final
%ul
%li
Fixed performance issue in <code>FileBasedStateRepository</code>
(see <a href="https://github.com/togglz/togglz/issues/43">#43</a>)
%li
Fixed compatibility issue with Microsoft SQL Server
(see <a href="https://github.com/togglz/togglz/issues/41">#41</a>)
%a(name='2.0.0.RC1')
%h3
Togglz 2.0.0.RC1
%ul
%li
Togglz now allows you to manage the lifecycle of the <code>FeatureManager</code> using a supported DI container
like CDI or Spring. To do so, make sure your container manages an instance of
<code>FeatureManager</code> (for example by writing a CDI producer method)
and then set <code>org.togglz.FEATURE_MANAGER_PROVIDED</code>
in <code>web.xml</code> to <code>true</code> to tell Togglz to skip the automatic bootstrapping process
for a <code>FeatureManager</code> managed by Togglz.
%li
Added the factory bean <code>FeatureManagerFactory</code> that simplifies the creation of a
<code>FeatureManager</code> managed by Spring. See the javadocs for
<a href="http://localhost:4242/apidocs/2.0.0.RC1/org/togglz/spring/manager/FeatureManagerFactory.html">FeatureManagerFactory</a>
for details.
%li
Added a new extension point that allows users to define custom feature metadata attributes. If you are
using Java enums for declaring your features, you can now define your own annotations to specify metadata
for your features. Togglz already provides two annotations <code>@Owner</code> and
<code>@InfoLink</code> that your can place on your features. If you want to define your own attribute,
just create an annotation and place <code>@FeatureAttribute</code> on it. Have a look the source of
<a href="https://github.com/togglz/togglz/blob/master/core/src/main/java/org/togglz/core/annotation/Owner.java">@Owner</a>
for an example.
%li
The <code>EnumBasedFeatureProvider</code> now supports multiple enums. This means that you can now
split your feature toggles across multiple Java enums.
%li
If you are running Togglz in an servlet environment, the <code>TogglzFilter</code> now tries to autodetect whether
it should bootstrap a feature manager itself or if you already created one using a supported
container like CDI or Spring. This means that you typically don't have to set
<code>FEATURE_MANAGER_PROVIDED</code> manually.
%a(name='2.0.0.Beta2')
%h3
Togglz 2.0.0.Beta2
%ul
%li
The <code>Feature</code> interface doesn't force the user to implement <code>isActive()</code> anymore.
<u>Please note that this change requires you to remove the <code>@Override</code> annotation from your implementation of
the method.</u>
%li
Fixed a bug that caused <code>JDBCStateRepository</code> too work in the wrong database schema
(see <a href="https://github.com/togglz/togglz/issues/38">#38</a>).
%li
The new Togglz JSP integration module provides a JSP taglib that simplifies checking feature states
in JSP pages. Thanks to <a href="https://github.com/maurotalevi">Mauro Talevi</a> for his help on this.
%li
Added <code>SingleUserProvider</code> to simplify configuration of environments where only one (virtual) user exists.
%li
Feature definitions can now be configured using property files instead of a Java enum. This can be especially
useful in distributed environments where components doesn't share any code.
Thanks to <a href="https://github.com/maurotalevi">Mauro Talevi</a> for implementing this feature.
%li
Added new <code>NamedFeature</code> to replace the deprecated <code>UntypedFeature</code>
%li
The Togglz Admin Console is now distributable and therefore works in clustered environments
(see <a href="https://github.com/togglz/togglz/issues/32">#32</a>).
%a(name='2.0.0.Beta1')
%h3
Togglz 2.0.0.Beta1
%ul
%li
The core classes of Togglz don't assume that features are declared using Java enums any more. This allows users
to use different approaches to define which features are available. Users could for example use a database to manage
the features and their metadata.
%li
The new <code>StaticFeatureManagerProvider</code> simplifies the configuration of Togglz in standalone applications.
%li
Two new activation strategies have been added to Togglz. The <i>Client IP</i> strategy allows to enable features only
for a specific number of client IP addresses. This strategy is useful if features should be active for users
accessing a site from a specific location. The <i>Server IP</i> strategy behaves similar. But instead of the client IP, it uses
the server's IP address. This strategy can be used for canary testing if you want to activate a feature only
on a specific server of you cluster.
%li
Typically users configure Togglz by implementing the <code>TogglzConfig</code> interface. As an alternative to this,
you can now implement <code>TogglzBootstrap</code> instead. Doing this allows you to configure more aspects of Togglz as you can
directly interact with the <code>FeatureManagerBuilder</code> instead of just configuring some of it's properties.
%li
The new SPI <code>FeatureManagerListener</code> has been added which allows you to get notified when Togglz starts up
and shuts down. This SPI has been added for other Togglz modules but may also be used directly by the user.
%li
The <code>@WithFeature</code> annotation of the JUnit integration module now allows to activate multiple feature
at once and may even be used if you want to explicitly disable certain features in a test.
%a(name='2.0.0.Alpha1')
%h3
Togglz 2.0.0.Alpha1
%ul
%li
The most noteworthy change in this version is the new extensible feature activation mechanism, that allows
to implement custom strategies for activating features based on arbitrary conditions. As you know, Togglz already
allowed to restrict features to a given list of users. Togglz 2.0.0.Alpha1 now also supports to activate features
for a given percentage of users (gradual rollouts) or at a specific point in time (timed rollouts).
There is also an generic strategy based on Java's
<a href="http://docs.oracle.com/javase/7/docs/api/javax/script/ScriptEngine.html">ScriptEngine</a>,
that allows you to write strategies using script languages (like JavaScript) and update them at runtime.
%li
As Togglz now allows to implement custom strategies for activating features, the data model of the persisted
feature state had to change. Togglz will automatically migrate the data persisted by previous versions
(like the properties file or the database table) to the new format. However this has one drawback.
Older versions of Togglz won't be able to read the new data format any more. So going back to an older version
of Togglz will be difficult. <u>So please take special care and backup your state repository data</u>.
%li
If you are using a custom implementation of the <code>StateRepository</code> interface, you will have to
update your implementation to persist the new <code>FeatureState</code> data structure. Have a look at the
other state repositories if you have any problems.
%li
Please note, that although this release is called 2.0.0.Alpha1, it is considered to be very stable. The main
reason for calling it Alpha1 instead of CR1 is, that we are looking for community feedback regarding the new APIs.
%a(name='1.1.1')
%h3
Togglz 1.1.1.Final
%ul
%li
Fixed issue in FileBasedStateRepository and InMemoryStateRepository which may lead to data corruption
of the repository data in case of conurrent writes (see <a href="https://github.com/togglz/togglz/issues/21">#21</a>).
Special thanks to <a href="https://github.com/jadlr">Jonas Adler</a> for bringing this up.
%li
Fixed SPI implementation ordering issue for priority of Integer.MIN_VALUE
(see <a href="https://github.com/togglz/togglz/issues/22">#22</a>).
%a(name='1.1.0')
%h3
Togglz 1.1.0.Final
%ul
%li
The new <a href="/apidocs/1.1.0.Final/org/togglz/core/repository/cache/CachingStateRepository.html">CachingStateRepository</a>
allows to add caching capabilities to existing state repositories. See the chapter on
<a href="/documentation/repositories.html#CachingStateRepository">State Repositories</a> for details.
%li
The Spring integration module now contains the
<a href="/apidocs/1.1.0.Final/org/togglz/spring/proxy/FeatureProxyFactoryBean.html">FeatureProxyFactoryBean</a>, which
allows to use different Spring beans depending on a specific feature state. The
<a href="/documentation/usage.html#FeatureProxyFactoryBean">Usage</a> chapter contains concrete examples on how
to configure this factory bean.
%li
It's now possible to define groups of features. These groups will be displayed in different tabs in the
Togglz Admin Console. See the <a href="/documentation/feature-groups.html">Feature Groups</a>
chapter to learn how to setup these groups.
%li
Togglz now contains special support for handling feature toggles in unit tests. As part of this two new integration
modules have been added. The first one provides general support for unit testing and the second one offers
advanced support for JUnit. See the new <a href="/documentation/testing.html">Testing Support</a> chapter
for details.
%h3
Togglz 1.0.0.Final
%ul
%li
First official version. No changes since the last release. :)