Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 9DBEB200C04 for ; Tue, 24 Jan 2017 16:00:56 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 9C499160B3D; Tue, 24 Jan 2017 15:00:56 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id C2549160B31 for ; Tue, 24 Jan 2017 16:00:55 +0100 (CET) Received: (qmail 16248 invoked by uid 500); 24 Jan 2017 15:00:54 -0000 Mailing-List: contact dev-help@cayenne.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cayenne.apache.org Delivered-To: mailing list dev@cayenne.apache.org Received: (qmail 16224 invoked by uid 99); 24 Jan 2017 15:00:54 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 24 Jan 2017 15:00:54 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id B02B1C21A1 for ; Tue, 24 Jan 2017 15:00:53 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.82 X-Spam-Level: X-Spam-Status: No, score=-0.82 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd1-us-west.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=objectstyle.org header.b=Ud/84k9O; dkim=pass (1024-bit key) header.d=messagingengine.com header.b=L0e1eIKd Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id mzVe6yrwYpvu for ; Tue, 24 Jan 2017 15:00:52 +0000 (UTC) Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id BFD655F23A for ; Tue, 24 Jan 2017 15:00:51 +0000 (UTC) Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id 284FB20966 for ; Tue, 24 Jan 2017 10:00:51 -0500 (EST) Received: from frontend2 ([10.202.2.161]) by compute3.internal (MEProxy); Tue, 24 Jan 2017 10:00:51 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=objectstyle.org; h=content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc:x-sasl-enc; s=mesmtp; bh=kkmXA+lsc7j+6Y0 4JjmdqBKeqXY=; b=Ud/84k9OASiXuuliWYf3reLhB+F+iNjOjUeDIM4UQtf07f3 phZFepb3ZPM0KeLoJIaIB1jbblsKo+nKKy7+WckPMcUFzskTzjsinOZ43mwPuULJ hRU58g1daHKPg0A0ag4q4pa1i9j/WfrKfahIzBaK27F8TO9Yy1y+OwWQB9xA= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-sender:x-me-sender:x-sasl-enc:x-sasl-enc; s= smtpout; bh=kkmXA+lsc7j+6Y04JjmdqBKeqXY=; b=L0e1eIKdOUn1uuG89ouM 97rNdnSzTb0yBQ8Dz8MpdHV9hfQ8P5gww77OEmbm6jvao/+vAJfabwCq7fMtidoL dts894s2sIBbJ/CWO2hMMsVPHhuS5piCOanyT3WPcrqvqU3S+fNHWZ1IwdkGGUjw m30tMYiIIxivWiYrm3QIAxg= X-ME-Sender: X-Sasl-enc: /UeQNHZXwe5RtyMMfisrZuIw0LTybwLVjDU9GUbDnIrz 1485270050 Received: from [192.168.1.33] (unknown [37.17.49.228]) by mail.messagingengine.com (Postfix) with ESMTPA id A3B1024550 for ; Tue, 24 Jan 2017 10:00:50 -0500 (EST) From: Andrus Adamchik Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 10.2 \(3259\)) Subject: Re: M5 (B1?) Date: Tue, 24 Jan 2017 18:00:49 +0300 References: To: dev@cayenne.apache.org In-Reply-To: Message-Id: <0077AB81-F4FB-4F26-89C7-DDC84D04A9BD@objectstyle.org> X-Mailer: Apple Mail (2.3259) archived-at: Tue, 24 Jan 2017 15:00:56 -0000 > 7. Simplify DataChannelFilter. Split it into separate select and = update filters, remove 'init' method (use injection instead). I think I might postpone this till after 4.0. At a closer look this may = grow into a bigger task than I originally thought: * It turned out that "init" method can be useful as we don't have any = post-startup hooks in Cayenne DI. So it can be used as a kind of startup = listener. Not ideal, but no replacement exists yet. * Once the filter is split, "onSync" and "onQuery" become lambdas, and = managing them via DI suddenly looks dirty. I'd rather we refactor to a = more modern chainable stack, and allow to insert these interceptors = anywhere between the stack stages, and in either global or query scopes. = Which leads us to functional programming, monads and other good things = (experimenting with those in LinkRest now [1]). So certainly more invasive work than 4.0 should bear.=20 Andrus [1] https://github.com/nhl/link-rest/issues/215 > On Dec 11, 2016, at 11:48 AM, Andrus Adamchik = wrote: >=20 > While the M4 vote is still in progress, I went ahead and created a new = version in Jira - 4.0.M5 - to commit the new code. I am actually hoping = that M5 will be renamed to B1 at some point, and we can successfully = fight the scope creep. Talking of which, here is what I'd like to see in = Cayenne before the beta code freeze: >=20 > 1. Cdbimport leftovers: track changes of auto increment status, column = type status, etc. >=20 > 2. Automatic module loading via ServiceLoader mechanism. We have lots = of small modules now (eg. cayenne-java8). I want them to be included in = ServerRuntime automatically with no explicit DI code. >=20 > 3. Split cayenne-lifecycle into task-specific submodules. With #2 = above this only makes sense. >=20 > 4. API queries with GROUP BY / HAVING. This is a big one, and we have = a huge PR waiting a review. I hope we can make this happen. >=20 > 5. Java 8 "preference" for Modeler / cdbimport (making it easy to use = "java.time" classes if you are on Java 8 instead of java.util.Date and = friends) >=20 > 6. A module providing JCacheQueryCache, integrating JCache (JSR 107). = In addition to being a "standard", JCache can work as a proxy for most = industrial check providers like EhCache, so we won't have to maintain = our own providers for each one of them. (I already built = JCacheQueryCache in Bootique. Will need to port it to Cayenne). Perhaps = we also deprecate multiple cache groups support. None of the modern = caches can effectively support more than one cache group per key. = OSCache was the only exception, but OSCache is dead now. >=20 > 7. Simplify DataChannelFilter. Split it into separate select and = update filters, remove 'init' method (use injection instead). >=20 > 8. DI improvements. Learned a lot about good DI patterns when writing = Bootique. Want to apply this knowledge to Cayenne DI. We can easily add = type-safe collection/map bindings API, as well as "contribution" API to = simplify extensions.=20 >=20 > 9. Refresh Swing Modeler design (e.g. do the modern buttons).=20 >=20 > 10. Gradle support. Cayenne works with Gradle just fine, but we can = provide some explicit facilities (or at least documentation on the best = practices).=20 >=20 > 11. Review and deprecate older APIs, such as Query.getName(), = Query.getDataMap(). >=20 > The list is long (and keeps expanding). Though many of these items are = negotiable and can be postponed until 4.1. Also most of the items are = not that big. #4 is probably the biggest and the most invasive of all. I = haven't included specific bug fixes. I assume those will happen at their = "normal" pace. >=20 > Your list may be different, so please send your comments and offer = your favorite items. >=20 > Andrus >=20