Return-Path: X-Original-To: apmail-apex-dev-archive@minotaur.apache.org Delivered-To: apmail-apex-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id A9216182E7 for ; Fri, 22 Jan 2016 13:01:08 +0000 (UTC) Received: (qmail 27133 invoked by uid 500); 22 Jan 2016 13:01:08 -0000 Delivered-To: apmail-apex-dev-archive@apex.apache.org Received: (qmail 27069 invoked by uid 500); 22 Jan 2016 13:01:08 -0000 Mailing-List: contact dev-help@apex.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@apex.incubator.apache.org Delivered-To: mailing list dev@apex.incubator.apache.org Received: (qmail 27052 invoked by uid 99); 22 Jan 2016 13:01:08 -0000 Received: from Unknown (HELO spamd4-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Jan 2016 13:01:08 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd4-us-west.apache.org (ASF Mail Server at spamd4-us-west.apache.org) with ESMTP id C00FFC0606 for ; Fri, 22 Jan 2016 13:01:07 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd4-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 3 X-Spam-Level: *** X-Spam-Status: No, score=3 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=3, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd4-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=datatorrent-com.20150623.gappssmtp.com Received: from mx1-us-east.apache.org ([10.40.0.8]) by localhost (spamd4-us-west.apache.org [10.40.0.11]) (amavisd-new, port 10024) with ESMTP id 36Fa6qil6IYN for ; Fri, 22 Jan 2016 13:00:58 +0000 (UTC) Received: from mail-ig0-f182.google.com (mail-ig0-f182.google.com [209.85.213.182]) by mx1-us-east.apache.org (ASF Mail Server at mx1-us-east.apache.org) with ESMTPS id B56DC439BE for ; Fri, 22 Jan 2016 13:00:57 +0000 (UTC) Received: by mail-ig0-f182.google.com with SMTP id mw1so53984199igb.1 for ; Fri, 22 Jan 2016 05:00:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datatorrent-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=uHiBzg+mATIyfnmvPa7kzweVD3LiDtCksb/IDdriADY=; b=vobSmojAaYbYtA2m61zdWAC9jY1cogB/BE61PsOWlJbk86XRn82MqZpQ1EUxKM10kv FMEkO9MmiVkA7tMcfib11uEwuhodwgnko9fcDCaXl/gKxEqBQIZlH982KD2hOO7GBD+1 eSm3/EIPtpKJKfIPOtLr1RP8hpfyU2TxSPDGqkSlAO7B/p+ufYmQheGZsWQwV9DCducV 7IO1xFtYa8+rUoQmTW4tSmyrkHqy7qVN8rMgpp9YC3MDcz0maTwpsvuS01mW/RCDw+Uq XXs3Iehi3s8oTFj7/YWTh+3cxL9S9+cJu9qb36B1n9LNgAu7oYB1JqcOjuzyEx71TfUW HIqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=uHiBzg+mATIyfnmvPa7kzweVD3LiDtCksb/IDdriADY=; b=Lcvb5zqnN+z/4THzBjaBj7J/FsnhxFB72liMXdC7w9JP1dCZJyChpd0RQtFWhF+BWj HAvf0Lx0e22oZrWa2dVkIpqflqIzJWnHo4u8gQVZfARf/6RTLRz+KGqkW+3gUNx3x1Z0 LQeEcWudecjq3SguaOD4oeBemst7xG92MBbqphTk+O52RBMbsCSRoogRO8ft9hMkLh9u 8FYS3t3AvZEbkFYKapT6vZFaa4v7ensZX+R7poXmfD2KfNDUaf1gI3i3c4djq1zu2Iua bWl+YYVczkR4NjnaKTdPPPLiIIRdXD6ZY1+FnG8dtTz4UBAEGAeBh8LzMbom7vivfsfF M/vA== X-Gm-Message-State: AG10YOT7NkX4TyDCeii35ls6Cq/htv893Z1gzVZ5etBv8U36QRGjRjg9Tl7hKnZtUg7atrlGSsg4l72Z7dhKnBwk MIME-Version: 1.0 X-Received: by 10.50.79.230 with SMTP id m6mr3403876igx.95.1453467655167; Fri, 22 Jan 2016 05:00:55 -0800 (PST) Received: by 10.107.44.66 with HTTP; Fri, 22 Jan 2016 05:00:55 -0800 (PST) Received: by 10.107.44.66 with HTTP; Fri, 22 Jan 2016 05:00:55 -0800 (PST) In-Reply-To: References: Date: Fri, 22 Jan 2016 18:30:55 +0530 Message-ID: Subject: Re: Ability to generate POJO class on the fly From: Chinmay Kolhatkar To: dev@apex.incubator.apache.org Content-Type: multipart/alternative; boundary=089e01229aaa4784910529ebcf8f --089e01229aaa4784910529ebcf8f Content-Type: text/plain; charset=UTF-8 Hi Priyanka, Can you give an example? Thanks, Chinmay. ~ Chinmay On 22 Jan 2016 18:14, "Priyanka Gugale" wrote: > We do need configuration in some form like json, but I was thinking we can > have default wherever possible. This is an option and not replacement to > json config. > > -Priyanka > > On Fri, Jan 22, 2016 at 4:34 PM, Chinmay Kolhatkar < > chinmay@datatorrent.com> > wrote: > > > @priyanka > > > > Advantage with JSON schema is that one can represent nested POJO > definition > > in that. If you're referring to FieldInfo, I'm not sure if that is > possible > > there. > > > > Even if we chose not to have nested POJO now, I think JSON schema input > to > > this utility gives more chance to expand easily later. > > > > > > > > On Fri, Jan 22, 2016 at 3:30 PM, Chinmay Kolhatkar < > > chinmay@datatorrent.com> > > wrote: > > > > > Sure. We can make this utility to provide byte[] for compiled class. > > > Though the utility will give a OutputStream object.. One can get byte[] > > > out of that. > > > > > > On Fri, Jan 22, 2016 at 2:56 PM, Timothy Farkas > > > wrote: > > > > > >> Suggestion: +1 for automatic generation of schema. The user should be > > able > > >> to override the a manually specified schema though. > > >> > > >> Question: If the mechanism used to generate the class can produce a > > byte[] > > >> array, then you can send the byte[] array for the class to downstream > > >> operators and load the class from the byte[] array in each operator. > An > > >> example of how to do this is here: > > >> > > >> > > >> > > > http://stackoverflow.com/questions/1781091/java-how-to-load-class-stored-as-byte-into-the-jvm > > >> > > >> Thanks, > > >> Tim > > >> > > >> On Fri, Jan 22, 2016 at 12:59 AM, Priyanka Gugale < > > >> priyanka@datatorrent.com> > > >> wrote: > > >> > > >> > Hi, > > >> > > > >> > Suggestion: > > >> > This came up with one of the discussion with Pramod, will it be a > good > > >> > idea, for database input operators to generate pojo based on the > > >> selected > > >> > column field names and types? No need to accept json input from > user. > > >> > > > >> > Question: > > >> > How can we share this POJO among multiple operators when application > > is > > >> > already launched and class is generated on the fly? > > >> > > > >> > -Priyanka > > >> > > > >> > On Thu, Jan 21, 2016 at 11:16 PM, Chinmay Kolhatkar < > > >> > chinmay@datatorrent.com > > >> > > wrote: > > >> > > > >> > > Hi All, > > >> > > > > >> > > We're planning to add a utility in malhar-library for generating a > > >> POJO > > >> > > class on the fly from given JSON schema. > > >> > > > > >> > > Use case is where the application is provided with schema and that > > >> needs > > >> > to > > >> > > be used in one or more operators either as a tuple over the stream > > OR > > >> for > > >> > > processing. > > >> > > > > >> > > General Design: > > >> > > 1. Utility will be provided with fqcn of the class and schema > > >> definition > > >> > > provided as json. > > >> > > 2. The schema definition will look like following: > > >> > > { > > >> > > "fqcn":"", > > >> > > "fields": [ > > >> > > { > > >> > > "name":"field1", > > >> > > "type":"long" > > >> > > }, > > >> > > { > > >> > > "name":"field2", > > >> > > "type": "string" > > >> > > } > > >> > > ] > > >> > > } > > >> > > 3. Supported types identified in "type" JSON field are: > > >> > > boolean, char, byte, short, int, float, long, double > > >> > > 4. The output of this utility will be a generated .class file in > the > > >> form > > >> > > of FSDataOutputStream. > > >> > > 5. Xbean asm5 library will be used for this. > > >> > > 6. Following methods will be added to the generated class: > > >> > > a. Getter/Setter methods for given fields. > > >> > > b. simple toString - Generate string equivalent for all the > > fields > > >> > > c. hashCode method - calculate the overall hashCode using > > >> individual > > >> > > field hashcodes, similar to how String.hashCode generates hashCode > > of > > >> > > string using chars in it. > > >> > > d. equals method - Similar to how String.equals method has > done > > it > > >> > > using individual char. > > >> > > > > >> > > > > >> > > Questions I have about the functionality: > > >> > > 1. Should the utility also support nested pojo definition via > schema > > >> > json? > > >> > > In such case the field definition can look like following: > > >> > > { "name":"nestedField", "type":"", > > >> > > "fields":[....] } > > >> > > The nested class will be provided > > >> > > > > >> > > 2. Should the utility also support giving out the JarOutputStream > > >> which > > >> > > will have a generated jar? > > >> > > > > >> > > Please let me know your thoughts. > > >> > > > > >> > > Thanks, > > >> > > Chinmay. > > >> > > > > >> > > > >> > > > > > > > > > --089e01229aaa4784910529ebcf8f--