Return-Path: X-Original-To: apmail-cayenne-user-archive@www.apache.org Delivered-To: apmail-cayenne-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 92E3FDCEC for ; Wed, 29 Aug 2012 13:16:22 +0000 (UTC) Received: (qmail 13668 invoked by uid 500); 29 Aug 2012 13:16:22 -0000 Delivered-To: apmail-cayenne-user-archive@cayenne.apache.org Received: (qmail 13633 invoked by uid 500); 29 Aug 2012 13:16:21 -0000 Mailing-List: contact user-help@cayenne.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@cayenne.apache.org Delivered-To: mailing list user@cayenne.apache.org Received: (qmail 13613 invoked by uid 99); 29 Aug 2012 13:16:21 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 29 Aug 2012 13:16:21 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=FSL_RCVD_USER,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of matero@gmail.com designates 74.125.83.43 as permitted sender) Received: from [74.125.83.43] (HELO mail-ee0-f43.google.com) (74.125.83.43) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 29 Aug 2012 13:16:17 +0000 Received: by eekd4 with SMTP id d4so311750eek.16 for ; Wed, 29 Aug 2012 06:15:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=x3eLk6FpWG3Zxt3XcoOlSpeDSv2Mor4qXGkBGgvhWO4=; b=vZ6OCy1++SXZwFGk6516DPnwdJIlX082/Qp2wOWDKNayfsciBcDP4aHoXEO20YtlUs hUDRZEYnXlc0+29Z9U5t3uR6yQZCCY9QZ+nFP3ZYseao5p6c9XyWgTp5bVUwXWUIa1wl 16dIYXwo9H6peKZfGm5exqvXqXYTaQTRR/xS8HcUvDag/nwS0PvPAo+WKI9G5yTHEPD+ GziUws5Ef7F/C6F8DMSPPWKHmMdlGa6P0yMsm40tKuE1g/xusOPAkAfuCA6Vz0BEkuxC qHgwzQ+wsp10opdL4v8urLiG51Ojh2dv8ccsE1XMwDHbuk9t18/TEhuZ5pgD7zvWypQW jlGA== MIME-Version: 1.0 Received: by 10.14.178.1 with SMTP id e1mr1696808eem.37.1346246155840; Wed, 29 Aug 2012 06:15:55 -0700 (PDT) Received: by 10.14.180.68 with HTTP; Wed, 29 Aug 2012 06:15:55 -0700 (PDT) In-Reply-To: <7F7E2F7D-7216-443D-B29D-BA81A01A70B9@objectstyle.org> References: <503A2F70.60101@gmail.com> <7F7E2F7D-7216-443D-B29D-BA81A01A70B9@objectstyle.org> Date: Wed, 29 Aug 2012 10:15:55 -0300 Message-ID: Subject: Re: Vaadin Integration and MetaData of mappings From: =?UTF-8?Q?Juan_Jos=C3=A9_Gil?= To: user@cayenne.apache.org Content-Type: multipart/alternative; boundary=047d7b624636e62dff04c8675b3c X-Virus-Checked: Checked by ClamAV on apache.org --047d7b624636e62dff04c8675b3c Content-Type: text/plain; charset=UTF-8 Thanks for the reply Andrus! Could you point me to docs/samples about ObjectContext Serialization & multi-tenant approaches you describe? About the"adding-metadata" part, I was thinking in adding constraints in a similar way to active-record in RoR or GORM in grails, but using code generation phases of cayenne. By now i'll use some kind of "typed" KVC delegating to cayenne the properties access and then providing some kind a "class metadata" which can be extended by subclasses... but i'll prefer the "code generation" form, so I can use IDEs capabilities. maybe I'll generate some "java code configuration" which then will be used to generate final classes... it sounds as a mess but it could give really nice possibilities! don't you think? if i get to somewhere with this approach I'll tell you :) > > > > the data objects will reside at the http session, and will be used > directly by the vaadin widgets, does this kind of cayenne data objects > "use" could arrive with attaching/detaching problems? > > Shouldn't be a problem. You can store Cayenne objects in a session. The > simplest way to avoid attach/detach issues is to have a session-scoped > ObjectContext. Then it is serialized/deserialized together with the objects > in case the session is saved to disk, or replicated across the cluster. > > > Also, is there a way to add metadata info in cayenne metamodel? I would > like to add constraints / validations to generated classes, so they can be > used to define searching criterias on indexed attributes (something like > active-records class filters, but only on indexed properties) and generate > model validations on properties so they can be used at UI fields directly, > facilitating the app development. > > You can add extra info using callbacks or lifecycle listeners. Any extra > properties can be defined either manually in generated subclasses, or even > stored in the base CayenneDataObject (with 'readProperty' / 'writeProperty' > methods, and custom property names). > > > Finally, I'm looking for a multitenant implementation to use, and I > believe that the solution pointed at > http://blog.jerodsanto.net/2011/07/building-multi-tenant-rails-apps-with-postgresql-schemas/could be also used with cayenne; is there any constraint I should look for? > > Cayenne is certainly friendly to various multi-tenancy approaches. In 3.1 > API terms, you might assign a separate instance of ServerRuntime to each > tenant, and use that to create ObjectContexts for its users. You may start > all runtimes from the same basic configuration, and "namespace" them using > tenant-unique DB URL. Or you may use a single DataSource, and after a > runtime is loaded, scan through all its DbEntities and assign a tenant > "schema" to them. Feel free to ask about further details. > > Andrus > > > On Aug 26, 2012, at 5:15 PM, Juan J. Gil wrote: > > Hello, I'm thinking to use cayenne in conjunction with vaadin ( > http://vaadin.com). > > > > I'm trying to use some kind of tight integration between both frameworks > (defining cayenne generated classes which are vaadin data models > implementations). > > That way I could define forms directly on data objects, querying & > mutating its state directly from vaadin widgets. > > As vaadin is an stateful web framework, should I have to expect for some > kind of problem with data objects between requests? I mean, the data > objects will reside at the http session, and will be used directly by the > vaadin widgets, does this kind of cayenne data objects "use" could arrive > with attaching/detaching problems? > > > > Also, is there a way to add metadata info in cayenne metamodel? I would > like to add constraints / validations to generated classes, so they can be > used to define searching criterias on indexed attributes (something like > active-records class filters, but only on indexed properties) and generate > model validations on properties so they can be used at UI fields directly, > facilitating the app development. > > > > Finally, I'm looking for a multitenant implementation to use, and I > believe that the solution pointed at > http://blog.jerodsanto.net/2011/07/building-multi-tenant-rails-apps-with-postgresql-schemas/could be also used with cayenne; is there any constraint I should look for? > > > > Best regards > > Juanjo > > > > ps: pardon my really poor English! :P > > > > > > --047d7b624636e62dff04c8675b3c--