Return-Path: Delivered-To: apmail-incubator-river-commits-archive@minotaur.apache.org Received: (qmail 67402 invoked from network); 25 Aug 2009 11:45:57 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 25 Aug 2009 11:45:57 -0000 Received: (qmail 16138 invoked by uid 500); 25 Aug 2009 11:46:22 -0000 Delivered-To: apmail-incubator-river-commits-archive@incubator.apache.org Received: (qmail 16040 invoked by uid 500); 25 Aug 2009 11:46:21 -0000 Mailing-List: contact river-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: river-dev@incubator.apache.org Delivered-To: mailing list river-commits@incubator.apache.org Received: (qmail 15728 invoked by uid 99); 25 Aug 2009 11:46:21 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 25 Aug 2009 11:46:21 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 25 Aug 2009 11:46:19 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 4C6F4234C04C for ; Tue, 25 Aug 2009 04:45:59 -0700 (PDT) Message-ID: <415169823.1251200759305.JavaMail.jira@brutus> Date: Tue, 25 Aug 2009 04:45:59 -0700 (PDT) From: "Peter Firmstone (JIRA)" To: river-commits@incubator.apache.org Subject: [jira] Updated: (RIVER-316) RFC Library, Application & Class Versioning, Dynamically Mobile Codebases and Classloading enhancements In-Reply-To: <1697501933.1247707994801.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/RIVER-316?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Peter Firmstone updated RIVER-316: ---------------------------------- Attachment: VersionedDynamicClassesRev8.tgz Some interface refactoring, more needed of course. I've pilfered the Dynamic Proxy from Harmony's java.lang.reflect package along with the test cases, the tests are passing, ready for modification. Harmony's Proxy will be modified to support the new Delegate for Evolving Objects, such that the Delegate can be generated dynamically as well as control the synchronization policies (ClassUpgradePolicy) during the Package upgrade process. I'm now wondering how to inject the Exporter interface into the Proxy as well, for Remote Proxy's & Stub's >From there I'll look at concurrency support in Classworlds and how to implement the codebase service and dependency analysis. Cheers, Peter. > RFC Library, Application & Class Versioning, Dynamically Mobile Codebases and Classloading enhancements > ------------------------------------------------------------------------------------------------------- > > Key: RIVER-316 > URL: https://issues.apache.org/jira/browse/RIVER-316 > Project: River > Issue Type: New Feature > Components: net_jini_loader > Environment: All > Reporter: Peter Firmstone > Attachments: classworlds-1.0-src.zip, Java Classloader issues relating to Jini smli_tr-2006-149.pdf, VersionedDynamicClassesRev6.tgz, VersionedDynamicClassesRev7.tgz, VersionedDynamicClassesRev8.tgz > > > Request for Comments: > Proposal to add support for Dynamic Mobile Codebases and Application fine grained class versioning as well as Coarse grained Library versioning , to enable River User devolopers, to provide distinction between classes with the same fully qualified class name when code differences created by refactoring packages or library updates break backward compatibility between classes contained within that library or package. ClassWorlds can be used to segregate ClassRealms for application packages and different library versions. > A dependency tree array object (contains dependency references between classes, fully qualified class names are stored as String objects) returned by the new ClassDepend tool (replacement of classdep functionality) may be suitable (with some modification) for recording class versioning, for later navigation of the codebase for class version verification, perhaps this could be stored in serialized form with the codebase. > The ASM library might be used to modify existing, externally sourced library class file bytecodes to add a LIBRARYVERSIONID static final field, with an accessor method, for library code used in codebases, to mark the class files with the library release version. > serialVersionUID (when it exists), along with the CLASSVERSION static field, might be used to determine the dependency and backward compatibility of classes in a codebase, this information could be stored in the dependency tree along with the CLASSVERSION, fully qualified class name and class file checksum. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.