Re: Is fireModelChanged mandatory ?

[email protected] Thu, 22 Sep 2005 18:56:48 +0200 (CEST)
Newsgroups gmane.comp.java.enhydra.barracuda.general
Message-ID <[email protected]>
------=_20050922185648_75022
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Christian Cryder a =E9crit :

> Does this help at all?
>
Sure it does ! Thanks a lot for your feedback which helped me sort my
ideas out.
I did try the different paths you pointed out, and came to that conclusions=
 :

1) Repopulation is by nature an hybrid beast. It must rely on forms, which
are generally bound to the request/controller phase of the request, and
components, which are required in the response/view phase of the request.

So mixing layers seems a not so bad solution to me...

2) Anyway, it seems closer to components, since it must handle formatting
concerns, localization, or even rendering options depending on the type of
the data.

So I finally came out with an implementation extending from
AbstractTemplateModel and delagating to a FromMap (your number 1 option).
I would be very grateful to anyone wishing to review that piece of code
(quite simple in fact, I hope I didn't miss some obvious trap :-)

Typical usage would be :

Controller :

public void handleControlEvent(ControlEventContext context) throws ... {
    FormMapTemplateModel fmtm =3D new FormMapTemplateModel("name", new
WellDefinedFormMap());
    try {
          fmtm.map(context.getRequest()).validate(true);
        } catch (ValidationException ve) {
          ErrorManager.handleError(ve);
          ObjectRepository.getLocalRepository().putState("FMTM", fmtm);
          context.getQueue().addEvent(new RenderForm());
          return;
       }
       context.getQueue().addEvent(new RenderSuccess());   // Success

View :

public class RenderFormHandler extends BTemplateViewHandler {
    public Object getTemplateModels() {
       TemplateModel tm =3D
(TemplateModel)ObjectRepository.getLocalRepository().getState("FMTM");
       return tm;
    }

and that's it ! Form is repopulated, errors are flagged and template
component is feeded.

3) I also came accross a need to add a FormType, namely FormType.PASSWORD,
that is nothing but a FormType.STRING, but from which you could infer a
rendering option when repopulating. Does it seems like a resonnable thing
to include in FormType ?

    // Password type definition. Basically a string.
    public static FormType PASSWORD =3D new FormType() {
        public Class getFormClass() {
            return String.class;
        }

        public Object parse(String origVal, Locale locale) throws
ParseException {
            return origVal;
        }

        public Object [] getTypeArray(int size) {
            return new String [size];
        }
    };


4) Then my last proposition would be to add this method to FormUtil :

    public static Map getKeysAndValues(FormMap fm) {
    Map keyValuesMap =3D new HashMap();
        Set keys =3D fm.getStateKeys();
        for (Object key : keys) {
        if (fm.getElement((String)key).allowMultiples()) {
        keyValuesMap.put(key, fm.getVals((String)key));
        } else {
                keyValuesMap.put(key, fm.getVal((String)key));
        }
    }
        return keyValuesMap;
    }

Not really related to repopulation, but I missed this type of thing when
playing with forms... (btw, I guess it should be made Tiger
independant...)

Thanks for your comments.

Franck

------=_20050922185648_75022
Content-Type: application/octet-stream; name="FormMapTemplateModel.java"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="FormMapTemplateModel.java"

LyoNCiAqIEZvcm1NYXBUZW1wbGF0ZU1vZGVsLmphdmENCiAqDQogKiBDcmVh
dGVkIG9uIDE5IHNlcHRlbWJyZSAyMDA1LCAxMjowMQ0KICoNCiAqIExpY2Vu
c2UgTEdQTA0KICovDQoNCnBhY2thZ2Ugb3JnLmJhcnJhY3VkYW12Yy5jb3Jl
LmNvbXA7DQoNCmltcG9ydCBvcmcuYmFycmFjdWRhbXZjLmNvcmUuZm9ybXMu
Rm9ybU1hcDsNCmltcG9ydCBvcmcuYmFycmFjdWRhbXZjLmNvcmUuZm9ybXMu
Rm9ybUVsZW1lbnQ7DQppbXBvcnQgb3JnLmJhcnJhY3VkYW12Yy5jb3JlLmZv
cm1zLkZvcm1WYWxpZGF0b3I7DQppbXBvcnQgb3JnLmJhcnJhY3VkYW12Yy5j
b3JlLmZvcm1zLkZvcm1NYXBwZXI7DQppbXBvcnQgb3JnLmJhcnJhY3VkYW12
Yy5jb3JlLmZvcm1zLlZhbGlkYXRpb25FeGNlcHRpb247DQppbXBvcnQgb3Jn
LmJhcnJhY3VkYW12Yy5jb3JlLmZvcm1zLkZvcm1UeXBlOw0KaW1wb3J0IG9y
Zy5iYXJyYWN1ZGFtdmMuY29yZS5mb3Jtcy5Gb3JtVXRpbDsNCmltcG9ydCBv
cmcuYmFycmFjdWRhbXZjLmNvcmUuY29tcC5CSW5wdXQ7DQppbXBvcnQgb3Jn
LmJhcnJhY3VkYW12Yy5jb3JlLmNvbXAuQkNvbXBvbmVudDsNCmltcG9ydCBv
cmcuYmFycmFjdWRhbXZjLmNvcmUuY29tcC5BYnN0cmFjdFRlbXBsYXRlTW9k
ZWw7DQoNCmltcG9ydCBvcmcuYmFycmFjdWRhbXZjLnBsYW5rdG9uLmRhdGEu
U3RhdGVNYXA7DQoNCmltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOw0KaW1wb3J0
IGphdmEudXRpbC5NYXA7DQppbXBvcnQgamF2YS51dGlsLlNldDsNCg0KaW1w
b3J0IGphdmF4LnNlcnZsZXQuU2VydmxldFJlcXVlc3Q7DQoNCmltcG9ydCBv
cmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCg0KLyoqDQogKiBBIGNsYXNzIG1p
eGluZyB1cCBmb3JtcyBhbmQgY29tcCBsYXllcnMgb2YgQmFycmFjdWRhIHRv
IHByb3ZpZGUgYXV0b21hdGVkDQogKiByZXBvcHVsYXRpb24gb2YgYSBGb3Jt
TWFwLCBhdXRvIGVycm9yIGZsYWdnaW5nIGFuZCBhY3QgYXMgYSBUZW1wbGF0
ZU1vZGVsLg0KICoNCiAqIE1peGluZyBsYXllcnMgaXMgcXVpdGUgYW5hdm9p
ZGFibGUgaWYgeW91IHdhbnQgdG8gcmVwb3B1bGF0ZSwgc2luY2UNCiAqIHJl
cG9wdWxhdGlvbiBjb3JyZXNwb25kcyB0byB0aGUgcmVkZXJpbmcgKHZpZXcp
IHBoYXNlIG9mIHRoZSByZXF1ZXN0LA0KICogd2hpbGUgZm9ybSBtYXBwaW5n
IGlzIHByb2JhYmx5IHVzZWQgaW4gdGhlIHJlcXVlc3QgKGNvbnRyb2xsZXIp
IHBoYXNlLg0KICoNCiAqIEBhdXRob3IgRnJhbmNrIFJvdXRpZXINCiAqLw0K
cHVibGljIGNsYXNzIEZvcm1NYXBUZW1wbGF0ZU1vZGVsIGV4dGVuZHMgQWJz
dHJhY3RUZW1wbGF0ZU1vZGVsIGltcGxlbWVudHMgRm9ybU1hcCB7DQogICAg
DQogICAgcHJpdmF0ZSBMb2dnZXIgbG9nZ2VyID0gTG9nZ2VyLmdldExvZ2dl
cihvcmcuYmFycmFjdWRhbXZjLmNvcmUuY29tcC5Gb3JtTWFwVGVtcGxhdGVN
b2RlbC5jbGFzcyk7DQogICAgcHJpdmF0ZSBGb3JtTWFwIGZvcm1NYXA7DQog
ICAgcHJpdmF0ZSBTdHJpbmcgbW9kZWxOYW1lOw0KICAgIA0KICAgIC8qKg0K
ICAgICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgRm9ybU1hcFRlbXBs
YXRlTW9kZWwNCiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBtb2Rl
bA0KICAgICAqIEBwYXJhbSBmbSB0aGUgRm9ybU1hcCBiYWNraW5nIHRoZSBG
b3JtTWFwIGFzcGVjdCBvZiB0aGlzIGNsYXNzDQogICAgICovDQogICAgcHVi
bGljIEZvcm1NYXBUZW1wbGF0ZU1vZGVsKFN0cmluZyBuYW1lLCBGb3JtTWFw
IGZtKSB7DQogICAgICAgIHRoaXMuZm9ybU1hcCA9IGZtOw0KICAgICAgICB0
aGlzLm1vZGVsTmFtZSA9IG5hbWU7DQogICAgfQ0KICAgIA0KICAgIHB1Ymxp
YyBTdHJpbmcgZ2V0TmFtZSgpew0KICAgICAgICByZXR1cm4gdGhpcy5tb2Rl
bE5hbWU7DQogICAgfQ0KICAgIA0KICAgIHB1YmxpYyBGb3JtTWFwIGdldEZv
cm1NYXAoKSB7DQogICAgICAgIHJldHVybiB0aGlzLmZvcm1NYXA7DQogICAg
fQ0KICAgIA0KICAgIA0KICAgIC8qKg0KICAgICAqIENyZWF0ZXMgYSBuZXcg
QkNvbXBvbmVudCwgcmVwb3B1bGF0ZXMgaXQgZnJvbSB0aGUgRm9ybU1hcA0K
ICAgICAqIGFuZCBmbGFncyB2YWxpZGF0aW9uIGVycm9ycyBpZiBhbnkuDQog
ICAgICogRGVwZW5kcyBvbiBGb3JtVXRpbCBhbmQgRXJyb3JNYW5hZ2VyLCBo
ZW5jZSBvbiB3ZWIgdGllci4gQmV3YXJlIHdoZW4NCiAgICAgKiB1c2luZyBp
biBidXNpbmVzcyB0aWVyLCBpZiBhbnkuDQogICAgICoNCiAgICAgKiBAcGFy
YW0ga2V5IHRoZSBrZXkgbmFtZSBvZiB0aGUgZm9ybSBlbGVtZW50DQogICAg
ICoNCiAgICAgKiBAcmV0dXJuIEEgcmVwb3B1bGF0ZWQsIGVycm9yIGZsYWdn
ZWQgQkNvbXBvbmVudA0KICAgICAqLw0KICAgIHB1YmxpYyBPYmplY3QgZ2V0
SXRlbShTdHJpbmcga2V5KSB7DQogICAgICAgIGlmKGxvZ2dlci5pc0RlYnVn
RW5hYmxlZCgpKSBsb2dnZXIuZGVidWcoImdldEl0ZW0oKSB3aXRoIGtleTog
IiArIGtleSk7DQoNCiAgICAgICAgaWYoZ2V0RWxlbWVudChrZXkpICE9IG51
bGwpIHsNCiAgICAgICAgICAgIEJDb21wb25lbnQgYmMgPSB0aGlzLmdldENv
bXBvbmVudChnZXRFbGVtZW50KGtleSkpOw0KICAgICAgICAgICAgRm9ybVV0
aWwucmVwb3B1bGF0ZSh0aGlzLCBiYyk7DQogICAgICAgICAgICBGb3JtVXRp
bC5mbGFnRXJyb3JzKGJjKTsNCiAgICAgICAgICAgIHJldHVybiBiYzsNCiAg
ICAgICAgfQ0KICAgICAgICBlbHNlIHJldHVybiBzdXBlci5nZXRJdGVtKGtl
eSk7DQogICAgfQ0KICAgIA0KICAgIC8qKg0KICAgICAqIENyZWF0ZSBhIGNv
bXBvbmVudCBvdXQgb2YgYSBmb3JtIGVsZW1lbnQuDQogICAgICogRGVmYXVs
dHMgdG8gYSBCSW5wdXQsIGVpdGhlciBURVhULCBCT09MRUFOIG9yIFBBU1NX
T1JELg0KICAgICAqIElmIHlvdSB3YW50IG1vcmUgY29tcGxleCBjb21wb25l
bnRzLCBmZWVsIGZyZWUgdG8gZXh0ZW5kDQogICAgICogYW5kIG92ZXJyaWRl
IHRoaXMgbWV0aG9kLg0KICAgICAqDQogICAgICogQHBhcmFtIGVsIFRoZSBu
b3QgbnVsbCBGb3JtRWxlbWVudCBmcm9tIHdoaWNoIHRvIGNyZWF0ZSBhIEJD
b21wb25lbnQuDQogICAgICogV2hpY2ggY29tcG9uZW50IHdpbGwgZGVwZW5k
IG9uIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGVsZW1lbnQuDQogICAg
ICoNCiAgICAgKiBAcmV0dXJuIEEgQkNvbXBvbmVudA0KICAgICAqLw0KICAg
IHByb3RlY3RlZCBCQ29tcG9uZW50IGdldENvbXBvbmVudChGb3JtRWxlbWVu
dCBlbCkgew0KICAgICAgICBTdHJpbmcgdHlwZSA9IG51bGw7DQogICAgICAg
IGlmIChlbC5nZXRUeXBlKCkgPT0gRm9ybVR5cGUuQk9PTEVBTikgew0KICAg
ICAgICAgICAgdHlwZSA9IEJJbnB1dC5DSEVDS0JPWDsNCiAgICAgICAgfSBl
bHNlIGlmIChlbC5nZXRUeXBlKCkgPT0gRm9ybVR5cGUuUEFTU1dPUkQpIHsN
CiAgICAgICAgICAgIHR5cGUgPSBCSW5wdXQuUEFTU1dPUkQ7DQogICAgICAg
IH0gZWxzZSB7DQogICAgICAgICAgICB0eXBlID0gQklucHV0LlRFWFQ7DQog
ICAgICAgIH0NCiAgICAgICAgcmV0dXJuIG5ldyBCSW5wdXQodHlwZSwgZWwu
Z2V0S2V5KCksIG51bGwpOw0KICAgIH0NCiAgICANCiAgICAvKiogRnJvbSBo
ZXJlIG9uLCB3ZSBpbXBsZW1lbnQgRm9ybU1hcCB1c2luZyBhIGRlbGVnYXRp
b24gcGF0dGVybg0KICAgICAqIERlbGVnYXRlcyB0byB0aGlzLmZvcm1NYXAg
bWV0aG9kcy4gVGhhbmtzIHRvIENocmlzdGlhbiBDcnlkZXINCiAgICAgKiBm
b3IgaXMgcHJlY2lvdXMgYWR2aWNlcy4NCiAgICAgKg0KICAgICAqIEBzZWUg
b3JnLmJhcnJhY3VkYW12Yy5jb3JlLmZvcm1zLkZvcm1NYXANCiAgICAgKi8g
ICAgDQogICAgcHVibGljIHZvaWQgc2V0TG9jYWxlKExvY2FsZSBsb2NhbGUp
IHsNCiAgICAgICAgdGhpcy5mb3JtTWFwLnNldExvY2FsZShsb2NhbGUpOw0K
ICAgIH0NCiAgICANCiAgICAvKiogQHNlZSBvcmcuYmFycmFjdWRhbXZjLmNv
cmUuZm9ybXMuRm9ybU1hcCAqLw0KICAgIHB1YmxpYyBMb2NhbGUgZ2V0TG9j
YWxlKCkgew0KICAgICAgICByZXR1cm4gdGhpcy5mb3JtTWFwLmdldExvY2Fs
ZSgpOw0KICAgIH0NCiAgICAvKiogQHNlZSBvcmcuYmFycmFjdWRhbXZjLmNv
cmUuZm9ybXMuRm9ybU1hcCAqLw0KICAgIHB1YmxpYyB2b2lkIHNldEZvcm1N
YXBwZXIoRm9ybU1hcHBlciBtYXBwZXIpew0KICAgICAgICB0aGlzLmZvcm1N
YXAuc2V0Rm9ybU1hcHBlcihtYXBwZXIpOw0KICAgIH0NCiAgICAvKiogQHNl
ZSBvcmcuYmFycmFjdWRhbXZjLmNvcmUuZm9ybXMuRm9ybU1hcCAqLw0KICAg
IHB1YmxpYyBGb3JtTWFwcGVyIGdldEZvcm1NYXBwZXIoKXsNCiAgICAgICAg
cmV0dXJuIHRoaXMuZm9ybU1hcC5nZXRGb3JtTWFwcGVyKCk7DQogICAgfQ0K
ICAgIC8qKiBAc2VlIG9yZy5iYXJyYWN1ZGFtdmMuY29yZS5mb3Jtcy5Gb3Jt
TWFwICovDQogICAgcHVibGljIE9iamVjdFtdIGdldFZhbHMoU3RyaW5nIGtl
eSkgew0KICAgICAgICByZXR1cm4gdGhpcy5mb3JtTWFwLmdldFZhbHMoa2V5
KTsNCiAgICB9DQogICAgLyoqIEBzZWUgb3JnLmJhcnJhY3VkYW12Yy5jb3Jl
LmZvcm1zLkZvcm1NYXAgKi8NCiAgICBwdWJsaWMgT2JqZWN0W10gZ2V0VmFs
cyhTdHJpbmcga2V5LCBPYmplY3RbXSBkZmx0KSB7DQogICAgICAgIHJldHVy
biB0aGlzLmZvcm1NYXAuZ2V0VmFscyhrZXksIGRmbHQpOw0KICAgIH0NCiAg
ICAvKiogQHNlZSBvcmcuYmFycmFjdWRhbXZjLmNvcmUuZm9ybXMuRm9ybU1h
cCAqLw0KICAgIHB1YmxpYyBPYmplY3QgZ2V0VmFsKFN0cmluZyBrZXkpew0K
ICAgICAgICByZXR1cm4gdGhpcy5mb3JtTWFwLmdldFZhbChrZXkpOw0KICAg
IH0NCiAgICAvKiogQHNlZSBvcmcuYmFycmFjdWRhbXZjLmNvcmUuZm9ybXMu
Rm9ybU1hcCAqLw0KICAgIHB1YmxpYyB2b2lkIHNldFZhbChTdHJpbmcga2V5
LCBPYmplY3QgdmFsdWUpIHsNCiAgICAgICAgdGhpcy5mb3JtTWFwLnNldFZh
bChrZXksIHZhbHVlKTsNCiAgICB9DQogICAgLyoqIEBzZWUgb3JnLmJhcnJh
Y3VkYW12Yy5jb3JlLmZvcm1zLkZvcm1NYXAgKi8NCiAgICBwdWJsaWMgT2Jq
ZWN0IGdldFZhbChTdHJpbmcga2V5LCBPYmplY3QgZGZsdCl7DQogICAgICAg
IHJldHVybiB0aGlzLmZvcm1NYXAuZ2V0VmFsKGtleSwgZGZsdCk7DQogICAg
fQ0KICAgIC8qKiBAc2VlIG9yZy5iYXJyYWN1ZGFtdmMuY29yZS5mb3Jtcy5G
b3JtTWFwICovDQogICAgcHVibGljIE1hcCBnZXRFbGVtZW50cygpew0KICAg
ICAgICByZXR1cm4gdGhpcy5mb3JtTWFwLmdldEVsZW1lbnRzKCk7DQogICAg
fQ0KICAgIC8qKiBAc2VlIG9yZy5iYXJyYWN1ZGFtdmMuY29yZS5mb3Jtcy5G
b3JtTWFwICovDQogICAgcHVibGljIEZvcm1FbGVtZW50IGdldEVsZW1lbnQo
U3RyaW5nIGtleSl7DQogICAgICAgIHJldHVybiB0aGlzLmZvcm1NYXAuZ2V0
RWxlbWVudChrZXkpOw0KICAgIH0NCiAgICAvKiogQHNlZSBvcmcuYmFycmFj
dWRhbXZjLmNvcmUuZm9ybXMuRm9ybU1hcCAqLw0KICAgIHB1YmxpYyBib29s
ZWFuIGV4aXN0cyhTdHJpbmcga2V5KXsNCiAgICAgICAgcmV0dXJuIHRoaXMu
Zm9ybU1hcC5leGlzdHMoa2V5KTsNCiAgICB9DQogICAgLyoqIEBzZWUgb3Jn
LmJhcnJhY3VkYW12Yy5jb3JlLmZvcm1zLkZvcm1NYXAgKi8NCiAgICBwdWJs
aWMgRm9ybU1hcCB2YWxpZGF0ZUZvcm0oYm9vbGVhbiBkZWZlcikgdGhyb3dz
IFZhbGlkYXRpb25FeGNlcHRpb24gew0KICAgICAgICByZXR1cm4gdGhpcy5m
b3JtTWFwLnZhbGlkYXRlRm9ybShkZWZlcik7DQogICAgfQ0KICAgIC8qKiBA
c2VlIG9yZy5iYXJyYWN1ZGFtdmMuY29yZS5mb3Jtcy5Gb3JtTWFwICovDQog
ICAgcHVibGljIEZvcm1NYXAgdmFsaWRhdGVFbGVtZW50cyhib29sZWFuIGRl
ZmVyKSB0aHJvd3MgVmFsaWRhdGlvbkV4Y2VwdGlvbiB7DQogICAgICAgIHJl
dHVybiB0aGlzLmZvcm1NYXAudmFsaWRhdGVFbGVtZW50cyhkZWZlcik7DQog
ICAgfQ0KICAgIC8qKiBAc2VlIG9yZy5iYXJyYWN1ZGFtdmMuY29yZS5mb3Jt
cy5Gb3JtTWFwICovDQogICAgcHVibGljIEZvcm1NYXAgdmFsaWRhdGUoYm9v
bGVhbiBkZWZlcikgdGhyb3dzIFZhbGlkYXRpb25FeGNlcHRpb24gew0KICAg
ICAgICByZXR1cm4gdGhpcy5mb3JtTWFwLnZhbGlkYXRlKGRlZmVyKTsNCiAg
ICB9DQogICAgLyoqIEBzZWUgb3JnLmJhcnJhY3VkYW12Yy5jb3JlLmZvcm1z
LkZvcm1NYXAgKi8NCiAgICBwdWJsaWMgRm9ybUVsZW1lbnQgbWFwRWxlbWVu
dChTdHJpbmcga2V5LCBPYmplY3Qgb3JpZ1ZhbCkgew0KICAgICAgICByZXR1
cm4gdGhpcy5mb3JtTWFwLm1hcEVsZW1lbnQoa2V5LCBvcmlnVmFsKTsNCiAg
ICB9DQogICAgLyoqIEBzZWUgb3JnLmJhcnJhY3VkYW12Yy5jb3JlLmZvcm1z
LkZvcm1NYXAgKi8NCiAgICBwdWJsaWMgRm9ybU1hcCBtYXAoU3RhdGVNYXAg
bWFwKSB7DQogICAgICAgIHJldHVybiB0aGlzLmZvcm1NYXAubWFwKG1hcCk7
DQogICAgfQ0KICAgIC8qKiBAc2VlIG9yZy5iYXJyYWN1ZGFtdmMuY29yZS5m
b3Jtcy5Gb3JtTWFwICovDQogICAgcHVibGljIEZvcm1NYXAgbWFwKFNlcnZs
ZXRSZXF1ZXN0IHJlcXVlc3QpIHsNCiAgICAgICAgcmV0dXJuIHRoaXMuZm9y
bU1hcC5tYXAocmVxdWVzdCk7DQogICAgfQ0KICAgIC8qKiBAc2VlIG9yZy5i
YXJyYWN1ZGFtdmMuY29yZS5mb3Jtcy5Gb3JtTWFwICovDQogICAgcHVibGlj
IEZvcm1WYWxpZGF0b3IgZGVmaW5lVmFsaWRhdG9yKEZvcm1WYWxpZGF0b3Ig
dmFsaWRhdG9yKSB7DQogICAgICAgIHJldHVybiB0aGlzLmZvcm1NYXAuZGVm
aW5lVmFsaWRhdG9yKHZhbGlkYXRvcik7DQogICAgfQ0KICAgIC8qKiBAc2Vl
IG9yZy5iYXJyYWN1ZGFtdmMuY29yZS5mb3Jtcy5Gb3JtTWFwICovDQogICAg
cHVibGljIEZvcm1FbGVtZW50IGRlZmluZUVsZW1lbnQoU3RyaW5nIGtleSwg
Rm9ybUVsZW1lbnQgZWwpIHsNCiAgICAgICAgcmV0dXJuIHRoaXMuZGVmaW5l
RWxlbWVudChrZXksIGVsKTsNCiAgICB9DQogICAgLyoqIEBzZWUgb3JnLmJh
cnJhY3VkYW12Yy5jb3JlLmZvcm1zLkZvcm1NYXAgKi8NCiAgICBwdWJsaWMg
Rm9ybUVsZW1lbnQgZGVmaW5lRWxlbWVudChGb3JtRWxlbWVudCBlbCkgew0K
ICAgICAgICByZXR1cm4gdGhpcy5kZWZpbmVFbGVtZW50KGVsKTsNCiAgICB9
DQogICAgLyoqIEBzZWUgb3JnLmJhcnJhY3VkYW12Yy5jb3JlLmZvcm1zLkZv
cm1NYXAgKi8NCiAgICBwdWJsaWMgdm9pZCBjbGVhclN0YXRlKCkgew0KICAg
ICAgICB0aGlzLmZvcm1NYXAuY2xlYXJTdGF0ZSgpOw0KICAgIH0NCiAgICAv
KiogQHNlZSBvcmcuYmFycmFjdWRhbXZjLmNvcmUuZm9ybXMuRm9ybU1hcCAq
Lw0KICAgIHB1YmxpYyBNYXAgZ2V0U3RhdGVTdG9yZSgpIHsNCiAgICAgICAg
cmV0dXJuIHRoaXMuZm9ybU1hcC5nZXRTdGF0ZVN0b3JlKCk7DQogICAgfQ0K
ICAgIC8qKiBAc2VlIG9yZy5iYXJyYWN1ZGFtdmMuY29yZS5mb3Jtcy5Gb3Jt
TWFwICovDQogICAgcHVibGljIFNldCBnZXRTdGF0ZUtleXMoKSB7DQogICAg
ICAgIHJldHVybiB0aGlzLmZvcm1NYXAuZ2V0U3RhdGVLZXlzKCk7DQogICAg
fQ0KICAgIC8qKiBAc2VlIG9yZy5iYXJyYWN1ZGFtdmMuY29yZS5mb3Jtcy5G
b3JtTWFwICovDQogICAgcHVibGljIE9iamVjdCByZW1vdmVTdGF0ZShPYmpl
Y3Qga2V5KSB7DQogICAgICAgIHJldHVybiB0aGlzLmZvcm1NYXAucmVtb3Zl
U3RhdGUoa2V5KTsNCiAgICB9DQogICAgLyoqIEBzZWUgb3JnLmJhcnJhY3Vk
YW12Yy5jb3JlLmZvcm1zLkZvcm1NYXAgKi8NCiAgICBwdWJsaWMgT2JqZWN0
IGdldFN0YXRlKE9iamVjdCBrZXkpIHsNCiAgICAgICAgcmV0dXJuIHRoaXMu
Zm9ybU1hcC5nZXRTdGF0ZShrZXkpOw0KICAgIH0NCiAgICAvKiogQHNlZSBv
cmcuYmFycmFjdWRhbXZjLmNvcmUuZm9ybXMuRm9ybU1hcCAqLw0KICAgIHB1
YmxpYyB2b2lkIHB1dFN0YXRlKE9iamVjdCBrZXksIE9iamVjdCB2YWwpIHsN
CiAgICAgICAgdGhpcy5mb3JtTWFwLnB1dFN0YXRlKGtleSwgdmFsKTsNCiAg
ICB9DQp9DQo=

------=_20050922185648_75022
Content-Type: text/plain; name="message-footer.txt"
Content-Disposition: inline; filename="message-footer.txt"
Content-Transfer-Encoding: 8bit



--

Barracuda mailing list

[email protected]

http://www.objectweb.org/wws/lists/projects/barracuda


------=_20050922185648_75022--