Return-Path: Delivered-To: apmail-jakarta-commons-dev-archive@apache.org Received: (qmail 75191 invoked from network); 15 Jan 2002 19:17:17 -0000 Received: from unknown (HELO nagoya.betaversion.org) (192.18.49.131) by daedalus.apache.org with SMTP; 15 Jan 2002 19:17:17 -0000 Received: (qmail 20951 invoked by uid 97); 15 Jan 2002 19:17:17 -0000 Delivered-To: qmlist-jakarta-archive-commons-dev@jakarta.apache.org Received: (qmail 20916 invoked by uid 97); 15 Jan 2002 19:17:16 -0000 Mailing-List: contact commons-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Jakarta Commons Developers List" Reply-To: "Jakarta Commons Developers List" Delivered-To: mailing list commons-dev@jakarta.apache.org Received: (qmail 20903 invoked from network); 15 Jan 2002 19:17:16 -0000 Message-Id: <5.0.2.1.0.20020115202429.02f12ac8@mail.mediaworks.lt> X-Sender: baliuka@mail.mediaworks.lt X-Mailer: QUALCOMM Windows Eudora Version 5.0.2 Date: Tue, 15 Jan 2002 20:47:12 +0100 To: "Jakarta Commons Developers List" From: Juozas Baliuka Subject: Re: [simplestore] enhancements (was: [simplestore] inital check in) In-Reply-To: References: <5.0.2.1.0.20020115174314.00b45850@mail.mediaworks.lt> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=====================_41274499==_" X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N --=====================_41274499==_ Content-Type: text/plain; charset="us-ascii"; format=flowed Hi, I have a layer for SQL stored procedures and incomplete JDO implementation. I use Object o = Database.execute(name,args); names mapped in properties file: myProc.flushCahe=true myProc={call updateSomeTable(?,?)} if.notSupported.myProc=UPDATE myTABLE set something=? WHERE id=? It is possible to implement some simple stored procedures this way and it is possible to to implement some API for any storage using internal API primitives ( All SQL databeses implemented this way ) BTW I recommend http://aspectj.org for stupid clasess like SynchronizedStore ( It is copy/paste style), java.lang.reflect.Proxy is too slow for me. At 06:26 PM 1/15/2002 +0100, you wrote: >Juozas > > >From: Juozas Baliuka [mailto:baliuka@mwm.lt] > > > >Hi, > >I think simple store is too simple :). > >:) > > >I see some things to do for simple store. > >1. Add meaningful exception classes > >+1 on this! > > >2. Add some helper key class for keys like Class + OID : > > Object key = new OID( myClass, someKey ); > >Hmm, don't get you here. Can you explain that in detail? > > >3.Add simple finders and batch to store interface for optimizations: > > store(Map map); > > Iterator find( String myRegistredProcedure, String property); > >// " SELECT it_is_from_procedure_descriptor FROM Some_Table WHERE > >myProc(property) = 1 " > > Iterator find(Collection idCollection); > >4. Ability to register and call stored procedures on sorage : > > registerProcedure(String alias,ProcedureDescriptor p); > > Object retValueOrValues = call(alias,paramArray); > >5. Tranzaction listeners. > >Point 3,4 and 5 seems to be more a Database Management as a simple >Store. But maybe I habe lost you here. Can give some further information! >But keep in mind I want some thin and fast Cache which is ease to plug. > >TIA > Gerhard > >---------------------------- >I just found the last bug... >---------------------------- > > >-- >To unsubscribe, e-mail: >For additional commands, e-mail: --=====================_41274499==_ Content-Type: application/octet-stream; name="MemoryStore.java" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="MemoryStore.java" LyoKICogTWVtb3J5U3RvcmUuamF2YQogKgogKiBDcmVhdGVkIG9uIEphbnVhcnkgMTUsIDIwMDIs IDEwOjI2IEFNCiAqIExhc3QgbW9kaWZpZWQgIG9uICAkRGF0ZSQgYnkgJEF1dGhvciQKICovCnBh Y2thZ2Ugb3JnLmFwYWNoZS5jb21tb25zLnNpbXBsZXN0b3JlOwoKaW1wb3J0IGphdmEudXRpbC5F bnVtZXJhdGlvbjsKaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci8qKgogKgogKiBAYXV0aG9y ICBKdW96YXMgQmFsaXVrYQogKiBAdmVyc2lvbiAkUmV2aXNpb24kCiAqLwoKcHVibGljICBjbGFz cyBNZW1vcnlTdG9yZSBpbXBsZW1lbnRzIFN0b3JlIC8vLCBqYXZhLnV0aWwuTWFwCiAgewogICAg CiAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIERFQlVHID0gZmFsc2U7CiAgICAKICAgIAogICAg Ly9zaW1wbGUgdGVzdAogICAgCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJn c1tdKXRocm93cyBFeGNlcHRpb257CiAgICAgICAgCiAgICAgICAgREVCVUcgPSB0cnVlOwogICAg ICAgIGZpbmFsIGludCBPQkpFQ1RfU0laRSA9IDB4RkZGRjsKICAgICAgICBmaW5hbCBpbnQgTUFY X1NUUk9OR19SRUYgPSAyMDsKICAgICAgICAgZmluYWwgaW50IElURVJBVElPTlMgID0gTUFYX1NU Uk9OR19SRUYqMjsKICAgICAgICAKICAgICAgICBNZW1vcnlTdG9yZSBtU3RvcmUgPSBuZXcgTWVt b3J5U3RvcmUoCiAgICAgICAgCiAgICAgICAgbmV3IFN0b3JlKCl7CiAgICAgICAgICAgIAogICAg ICAgICAgICBwdWJsaWMgdm9pZCBmcmVlKCl7fQogICAgICAgICAgICAKICAgICAgICAgICAgcHVi bGljIEVudW1lcmF0aW9uIGtleXMoKXsgcmV0dXJuIG51bGw7IH0KICAgICAgICAgICAgCiAgICAg ICAgICAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zS2V5KE9iamVjdCBrZXkpeyByZXR1cm4gZmFs c2U7fQogICAgICAgICAgICAKICAgICAgICAgICAgcHVibGljIHZvaWQgcmVtb3ZlKE9iamVjdCBv Ymope30KICAgICAgICAgICAgCiAgICAgICAgICAgIHB1YmxpYyB2b2lkIHN0b3JlKE9iamVjdCBr ZXksT2JqZWN0IG9iamVjdCl7fQogICAgICAgICAgICAKICAgICAgICAgICAgcHVibGljIHZvaWQg aG9sZChPYmplY3Qga2V5LE9iamVjdCBvYmplY3Qpe30KICAgICAgICAgICAgCiAgICAgICAgICAg IHB1YmxpYyBPYmplY3QgZ2V0KE9iamVjdCBrZXkpewogICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICByZXR1cm4gIG5ldyBpbnRbT0JKRUNUX1NJWkVdOwogICAgICAgICAgICB9CiAgICAg ICAgfQogICAgICAgIAogICAgICAgICwgTUFYX1NUUk9OR19SRUYgKTsKICAgICAgICAKICAgICAg ICAKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIm9wZXJhdGlvbnMgLi4uICIpOwogICAgICAg IAogICAgICAgIE9iamVjdCBvYmogPSAgbVN0b3JlLmdldChuZXcgSW50ZWdlcigtMSkpOy8vc3Ry b25nIHJlZgogICAgICAgCiAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IElURVJBVElPTlMgOyBp KysgKXsKICAgICAgICAgICAgT2JqZWN0IGtleSA9IG5ldyBJbnRlZ2VyKGkpOwogICAgICAgICAg ICBPYmplY3QgbyA9IG1TdG9yZS5nZXQoa2V5KTsvLyBzb2Z0IHJlZiBhZnRlciBpdGVyYXRpb247 CiAgICAgICAgICAgIG1TdG9yZS5nZXQobmV3IEludGVnZXIoMCkpOy8vTUZVIGFuZCBNUlUKICAg ICAgICB9CiAgICAgICAgCiAgICAgICAgU3lzdGVtLmdjKCk7CiAgICAgICAgbVN0b3JlLmdldChu ZXcgSW50ZWdlcigwKSk7Ly9yZW1vdmUgdW51c2VkIG9iamVjdHMsIHByaXZhdGUgaXRlcmF0b3Ig Y2FuJ3QgZG8gaXQuCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxu KCJpdGVyYXRpbmcgY2FjaGUgIik7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJtdXN0IGNv bnRhaW4ga2V5IC0xIik7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJtdXN0IGNvbnRhaW4g MCBpZiBNQVhfU1RST05HX1JFRiA+IDAgLi4uICIpOwogICAgICAgIGlmKCAhICBtU3RvcmUubWFw LmNvbnRhaW5zS2V5KG5ldyBJbnRlZ2VyKC0xKSkgfHwKICAgICAgICAgICAgISggbVN0b3JlLm1h cC5jb250YWluc0tleShuZXcgSW50ZWdlcigwKSkgJiYgTUFYX1NUUk9OR19SRUYgPiAwICkKICAg ICAgICAgICkKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJmYWlsZWQiKTsKICAgICAg ICBTeXN0ZW0ub3V0LnByaW50bG4oImNhY2hlIHNpemUgaXMgIiArIG1TdG9yZS5tYXAuc2l6ZSgp ICsgIiBpdCBkZXBlbmRzIG9uIEdDIHBvc3NpYmxlIE1BWF9TVFJPTkdfUkVGIDwgU0laRSIgKTsK ICAgICAgICAKICAgICAgICBqYXZhLnV0aWwuSXRlcmF0b3IgaSA9IG1TdG9yZS5tYXAua2V5U2V0 KCkuaXRlcmF0b3IoKTsgICAgICAgICAgICAKICAgICAgICB3aGlsZShpLmhhc05leHQoKSkKICAg ICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGkubmV4dCgpKTsKICAgICAgICAKICAgIH0KICAg IAogICAgCiAgICBzdGF0aWMgY2xhc3MgU29mdFJlZiBleHRlbmRzIGphdmEubGFuZy5yZWYuU29m dFJlZmVyZW5jZXsKICAgICAgICBPYmplY3Qga2V5OwogICAgICAgIHByaXZhdGUgIFNvZnRSZWYo T2JqZWN0IGtleSxPYmplY3Qgb2JqZWN0LGphdmEubGFuZy5yZWYuUmVmZXJlbmNlUXVldWUgcXVl dWUpewogICAgICAgICAgICBzdXBlcihvYmplY3QscXVldWUpOwogICAgICAgICAgICB0aGlzLmtl eSA9IGtleTsKICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIAogICAgfQogICAgCiAgICAK ICAgIHByaXZhdGUgU3RvcmUgc3RvcmU7CiAgICBwcml2YXRlIGludCBtYXhTdHJvbmdSZWZDb3Vu dDsKICAgIHByaXZhdGUgT2JqZWN0IFtdIHN0cm9uZ1JlZnM7CiAgICBwcml2YXRlIGludCBjdXJy ZW50ID0gMDsKICAgIHByaXZhdGUgamF2YS51dGlsLk1hcCBtYXAgPSBuZXcgamF2YS51dGlsLkhh c2hNYXAoKTsKICAgIHByaXZhdGUgamF2YS5sYW5nLnJlZi5SZWZlcmVuY2VRdWV1ZSBxdWV1ZSA9 IG5ldyBqYXZhLmxhbmcucmVmLlJlZmVyZW5jZVF1ZXVlKCk7CiAgICAKICAgIAogICAgcHVibGlj IHN0YXRpYyBTdG9yZSBnZXRJbnN0YW5jZShTdG9yZSBzdG9yZSAsIGludCBtYXhTdHJvbmdSZWYp ewogICAgICAgIHJldHVybiBuZXcgU3luY2hyb25pemVkU3RvcmUoIG5ldyAgTWVtb3J5U3RvcmUo c3RvcmUsIG1heFN0cm9uZ1JlZikgKSA7CiAgICB9CiAgICAKICAgIAogICAgLyoqIENyZWF0ZXMg bmV3IE1lbW9yeVN0b3JlICovCiAgICBwcm90ZWN0ZWQgTWVtb3J5U3RvcmUoU3RvcmUgc3RvcmUs IGludCBtYXhTdHJvbmdSZWZDb3VudCApIHsKICAgICAgICBpZihzdG9yZSA9PSBudWxsKQogICAg ICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oKTsKICAgICAgICBpZihtYXhT dHJvbmdSZWZDb3VudCA8IDApCiAgICAgICAgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuSWxsZWdh bEFyZ3VtZW50RXhjZXB0aW9uKCk7CiAgICAgICAgdGhpcy5zdG9yZSA9IHN0b3JlOwogICAgICAg IHRoaXMubWF4U3Ryb25nUmVmQ291bnQgPSBtYXhTdHJvbmdSZWZDb3VudDsKICAgICAgICBpZiht YXhTdHJvbmdSZWZDb3VudCA+IDApCiAgICAgICAgICAgIHN0cm9uZ1JlZnMgPSBuZXcgT2JqZWN0 WyBtYXhTdHJvbmdSZWZDb3VudCBdOwogICAgICAgIAogICAgfQogICAgLy8gcmVtb3ZlIGtleXMK ICAgIHByaXZhdGUgdm9pZCByZW1vdmVTb2Z0UmVmKCl7CiAgICAgICAgCiAgICAgICAgU29mdFJl ZiByZWYgPSAoU29mdFJlZilxdWV1ZS5wb2xsKCk7CiAgICAgICAgCiAgICAgICAgd2hpbGUoIHJl ZiAhPSBudWxsICl7CiAgICAgICAgICAgIG1hcC5yZW1vdmUocmVmLmtleSk7CiAgICAgICAgICAg IGlmKERFQlVHKQogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiS2V5ICIgKyBy ZWYua2V5ICsgIiByZW1vdmVkIGZyb20gcXVldWUsIG1hcCBzaXplIGlzICIgKyBtYXAuc2l6ZSgp ICApOwogICAgICAgICAgICByZWYgPSAoU29mdFJlZilxdWV1ZS5wb2xsKCk7CiAgICAgICAgfQog ICAgICAgIAogICAgICAgIAogICAgfQogICAgCiAgICBwcml2YXRlIHZvaWQgYWRkU3Ryb25nUmVm KE9iamVjdCBvYmplY3QpewogICAgICAgIAogICAgICAgIGlmKCBzdHJvbmdSZWZzICE9IG51bGwg KQogICAgICAgICAgICBzdHJvbmdSZWZzWyAoIGN1cnJlbnQrKyApICUgbWF4U3Ryb25nUmVmQ291 bnQgXSA9IG9iamVjdDsKICAgICAgICAKICAgIH0KICAgIHByaXZhdGUgdm9pZCBpbnRlcm5hbFN0 b3JlT2JqZWN0KE9iamVjdCBrZXksIE9iamVjdCBvYmplY3QpewogICAgICAgIAogICAgICAgIGFk ZFN0cm9uZ1JlZihvYmplY3QpOwogICAgICAgIG1hcC5wdXQoa2V5LG5ldyBTb2Z0UmVmKGtleSxv YmplY3QscXVldWUpKTsKICAgICAgICAKICAgIH0KICAgIAogICAgCiAgICAvKioKICAgICAqIFJl dHVybnMgdGhlIGxpc3Qgb2YgdXNlZCBrZXlzIGFzIGFuIEVudW1lcmF0aW9uIG9mIE9iamVjdHMu CiAgICAgKi8KICAgIHB1YmxpYyBFbnVtZXJhdGlvbiBrZXlzKCkgewogICAgICAgIHJldHVybiBz dG9yZS5rZXlzKCk7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogUmVtb3ZlIHRoZSBvYmplY3Qg YXNzb2NpYXRlZCB0byB0aGUgZ2l2ZW4ga2V5LgogICAgICoKICAgICAqIEBwYXJhbSBrZXkgdGhl IEtleSBPYmplY3QKICAgICAqLwogICAgcHVibGljIHZvaWQgcmVtb3ZlKE9iamVjdCBrZXkpIHsK ICAgICAgICByZW1vdmVTb2Z0UmVmKCk7CiAgICAgICAgbWFwLnJlbW92ZShrZXkpOwogICAgfQog ICAgCiAgICAvKioKICAgICAqIEluZGljYXRlcyBpZiB0aGUgZ2l2ZW4ga2V5IGlzIGFzc29jaWF0 ZWQgdG8gYSBjb250YWluZWQgb2JqZWN0LgogICAgICoKICAgICAqIEBwYXJhbSBrZXkgdGhlIEtl eSBPYmplY3QKICAgICAqLwogICAgcHVibGljIGJvb2xlYW4gY29udGFpbnNLZXkoT2JqZWN0IGtl eSkgewogICAgICAgIHJlbW92ZVNvZnRSZWYoKTsKICAgICAgICBpZihtYXAuY29udGFpbnNLZXko a2V5KSlyZXR1cm4gdHJ1ZTsKICAgICAgICByZXR1cm4gc3RvcmUuY29udGFpbnNLZXkoa2V5KTsK ICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBGcmVlcyBzb21lIG9iamVjdCBvdXQgb2YgdGhlIFN0 b3JlLgogICAgICovCiAgICBwdWJsaWMgdm9pZCBmcmVlKCkgewogICAgICAgIHJlbW92ZVNvZnRS ZWYoKTsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBTdG9yZSB0aGUgZ2l2ZW4gb2JqZWN0IGlu IGEgcGVyc2lzdGVudCBzdGF0ZS4gSXQgaXMgdXAgdG8gdGhlCiAgICAgKiBjYWxsZXIgdG8gZW5z dXJlIHRoYXQgdGhlIGtleSBoYXMgYSBwZXJzaXN0ZW50IHN0YXRlIGFjcm9zcwogICAgICogZGlm ZmVyZW50IEpWTSBleGVjdXRpb25zLgogICAgICoKICAgICAqIEBwYXJhbSBrZXkgdGhlIEtleSBP YmplY3QKICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgVmFsdWUgT2JqZWN0CiAgICAgKi8KICAgIHB1 YmxpYyB2b2lkIHN0b3JlKE9iamVjdCBrZXksIE9iamVjdCBvYmplY3QpIHRocm93cyBJT0V4Y2Vw dGlvbiB7CiAgICAgICAgcmVtb3ZlU29mdFJlZigpOwogICAgICAgIHN0b3JlLnN0b3JlKGtleSxv YmplY3QpOwogICAgICAgIGludGVybmFsU3RvcmVPYmplY3Qoa2V5LG9iamVjdCk7CiAgICAgICAg CiAgICB9CiAgICAKICAgIC8qKgogICAgICogSG9sZHMgdGhlIGdpdmVuIG9iamVjdCBpbiBhIHZv bGF0aWxlIHN0YXRlLiBUaGlzIG1lYW5zCiAgICAgKiB0aGUgb2JqZWN0IHN0b3JlIHdpbGwgZGlz Y2FyZCBoZWxkIG9iamVjdHMgaWYgdGhlCiAgICAgKiB2aXJ0dWFsIG1hY2hpbmUgaXMgcmVzdGFy dGVkIG9yIHNvbWUgZXJyb3IgaGFwcGVucy4KICAgICAqCiAgICAgKiBAcGFyYW0ga2V5IHRoZSBL ZXkgT2JqZWN0CiAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIFZhbHVlIE9iamVjdAogICAgICovCiAg ICBwdWJsaWMgdm9pZCBob2xkKE9iamVjdCBrZXksIE9iamVjdCB2YWx1ZSkgdGhyb3dzIElPRXhj ZXB0aW9uIHsKICAgICAgICBzdG9yZShrZXksdmFsdWUpOwogICAgfQogICAgCiAgICAvKioKICAg ICAqIEdldCB0aGUgb2JqZWN0IGFzc29jaWF0ZWQgdG8gdGhlIGdpdmVuIHVuaXF1ZSBrZXkuCiAg ICAgKgogICAgICogQHBhcmFtIGtleSB0aGUgS2V5IE9iamVjdAogICAgICovCiAgICBwdWJsaWMg T2JqZWN0IGdldChPYmplY3Qga2V5KSB7CiAgICAgICAgcmVtb3ZlU29mdFJlZigpOwogICAgICAg IAogICAgICAgIE9iamVjdCBvYmplY3QgPSBudWxsOwogICAgICAgIAogICAgICAgIGphdmEubGFu Zy5yZWYuUmVmZXJlbmNlIHJlZiA9IChqYXZhLmxhbmcucmVmLlJlZmVyZW5jZSltYXAuZ2V0KGtl eSk7CiAgICAgICAgCiAgICAgICAgaWYocmVmICE9IG51bGwpCiAgICAgICAgICAgIG9iamVjdCA9 IHJlZi5nZXQoKTsKICAgICAgICAKICAgICAgICBpZihvYmplY3QgPT0gbnVsbCkKICAgICAgICAg ICAgb2JqZWN0ID0gc3RvcmUuZ2V0KGtleSk7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgaW50 ZXJuYWxTdG9yZU9iamVjdChrZXksb2JqZWN0KTsKICAgICAgICAKICAgICAgICByZXR1cm4gb2Jq ZWN0OwogICAgICAgIAogICAgfQogICAgCn0K --=====================_41274499==_ Content-Type: application/octet-stream; name="SynchronizedStore.java" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="SynchronizedStore.java" LyoKICogU3luY2hyb25pemVkU3RvcmUuamF2YQogKgogKiBDcmVhdGVkIG9uIEphbnVhcnkgMTUs IDIwMDIsIDEwOjA5IEFNCiAqIExhc3QgbW9kaWZpZWQgIG9uICAkRGF0ZSQgYnkgJEF1dGhvciQK ICovCnBhY2thZ2Ugb3JnLmFwYWNoZS5jb21tb25zLnNpbXBsZXN0b3JlOwoKaW1wb3J0IGphdmEu aW8uSU9FeGNlcHRpb247Ci8qKgogKgogKiBAYXV0aG9yICBKdW96YXMgQmFsaXVrYQogKiBAdmVy c2lvbiAkUmV2aXNpb24kCiAqLwpmaW5hbCBjbGFzcyBTeW5jaHJvbml6ZWRTdG9yZSBpbXBsZW1l bnRzIFN0b3JlIHsKICAgIAogICAgcHJpdmF0ZSBTdG9yZSBzdG9yZTsKICAgIAogICAgCiAgICAv KiogQ3JlYXRlcyBuZXcgU3luY2hyb25pemVkU3RvcmUgKi8KICAgIHB1YmxpYyBTeW5jaHJvbml6 ZWRTdG9yZShTdG9yZSBzdG9yZSkgewogICAgICAgIGlmKHN0b3JlID09IG51bGwpCiAgICAgICAg ICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOwogICAgICAgIHRoaXMuc3RvcmUg PSBzdG9yZTsKICAgIH0KICAgIAogICAgCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGxpc3Qg b2YgdXNlZCBrZXlzIGFzIGFuIEVudW1lcmF0aW9uIG9mIE9iamVjdHMuCiAgICAgKi8KICAgIHB1 YmxpYyBqYXZhLnV0aWwuRW51bWVyYXRpb24ga2V5cygpIHsKICAgICAgICBzeW5jaHJvbml6ZWQo c3RvcmUpeyAvLyBub3QgdmVyeSBtZWFuaW5nZnVsIGhlcmUKICAgICAgICAgICByZXR1cm4gc3Rv cmUua2V5cygpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBSZW1vdmUgdGhl IG9iamVjdCBhc3NvY2lhdGVkIHRvIHRoZSBnaXZlbiBrZXkuCiAgICAgKgogICAgICogQHBhcmFt IGtleSB0aGUgS2V5IE9iamVjdAogICAgICovCiAgICBwdWJsaWMgdm9pZCByZW1vdmUoT2JqZWN0 IGtleSkgewogICAgICAgIHN5bmNocm9uaXplZChzdG9yZSl7CiAgICAgICAgICAgIHN0b3JlLnJl bW92ZShrZXkpOwogICAgICAgIH0gICAgCiAgICB9CiAgICAKICAgIC8qKgogICAgICogSW5kaWNh dGVzIGlmIHRoZSBnaXZlbiBrZXkgaXMgYXNzb2NpYXRlZCB0byBhIGNvbnRhaW5lZCBvYmplY3Qu CiAgICAgKgogICAgICogQHBhcmFtIGtleSB0aGUgS2V5IE9iamVjdAogICAgICovCiAgICBwdWJs aWMgYm9vbGVhbiBjb250YWluc0tleShPYmplY3Qga2V5KSB7CiAgICAgICAgc3luY2hyb25pemVk KHN0b3JlKXsKICAgICAgICAgIHJldHVybiBzdG9yZS5jb250YWluc0tleShrZXkpOwogICAgICAg IH0KICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBGcmVlcyBzb21lIG9iamVjdCBvdXQgb2YgdGhl IFN0b3JlLgogICAgICovCiAgICBwdWJsaWMgdm9pZCBmcmVlKCkgewogICAgICAgIHN5bmNocm9u aXplZChzdG9yZSl7CiAgICAgICAgICAgc3RvcmUuZnJlZSgpOwogICAgICAgIH0KICAgIH0KICAg IAogICAgLyoqCiAgICAgKiBTdG9yZSB0aGUgZ2l2ZW4gb2JqZWN0IGluIGEgcGVyc2lzdGVudCBz dGF0ZS4gSXQgaXMgdXAgdG8gdGhlCiAgICAgKiBjYWxsZXIgdG8gZW5zdXJlIHRoYXQgdGhlIGtl eSBoYXMgYSBwZXJzaXN0ZW50IHN0YXRlIGFjcm9zcwogICAgICogZGlmZmVyZW50IEpWTSBleGVj dXRpb25zLgogICAgICoKICAgICAqIEBwYXJhbSBrZXkgdGhlIEtleSBPYmplY3QKICAgICAqIEBw YXJhbSB2YWx1ZSB0aGUgVmFsdWUgT2JqZWN0CiAgICAgKi8KICAgIHB1YmxpYyB2b2lkIHN0b3Jl KE9iamVjdCBrZXksIE9iamVjdCB2YWx1ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKICAgICAgICBz eW5jaHJvbml6ZWQoc3RvcmUpewogICAgICAgICAgc3RvcmUuc3RvcmUoa2V5LHZhbHVlKTsKICAg ICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogSG9sZHMgdGhlIGdpdmVuIG9iamVjdCBp biBhIHZvbGF0aWxlIHN0YXRlLiBUaGlzIG1lYW5zCiAgICAgKiB0aGUgb2JqZWN0IHN0b3JlIHdp bGwgZGlzY2FyZCBoZWxkIG9iamVjdHMgaWYgdGhlCiAgICAgKiB2aXJ0dWFsIG1hY2hpbmUgaXMg cmVzdGFydGVkIG9yIHNvbWUgZXJyb3IgaGFwcGVucy4KICAgICAqCiAgICAgKiBAcGFyYW0ga2V5 IHRoZSBLZXkgT2JqZWN0CiAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIFZhbHVlIE9iamVjdAogICAg ICovCiAgICBwdWJsaWMgdm9pZCBob2xkKE9iamVjdCBrZXksIE9iamVjdCB2YWx1ZSkgdGhyb3dz IElPRXhjZXB0aW9uIHsKICAgICAgICBzeW5jaHJvbml6ZWQoc3RvcmUpewogICAgICAgICAgc3Rv cmUuaG9sZChrZXksdmFsdWUpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBH ZXQgdGhlIG9iamVjdCBhc3NvY2lhdGVkIHRvIHRoZSBnaXZlbiB1bmlxdWUga2V5LgogICAgICoK ICAgICAqIEBwYXJhbSBrZXkgdGhlIEtleSBPYmplY3QKICAgICAqLwogICAgcHVibGljIE9iamVj dCBnZXQoT2JqZWN0IGtleSkgewogICAgICAgIHN5bmNocm9uaXplZChzdG9yZSl7CiAgICAgICAg ICByZXR1cm4gc3RvcmUuZ2V0KGtleSk7CiAgICAgICAgfQogICAgfQogICAgCn0K --=====================_41274499==_ Content-Type: text/plain; charset="us-ascii"; format=flowed --=====================_41274499==_ Content-Type: text/plain; charset=us-ascii -- To unsubscribe, e-mail: For additional commands, e-mail: --=====================_41274499==_--