LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoYykgMjAxNiBDRUEgTElTVC4KICoKICoKICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwogKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKICoKICogQ29udHJpYnV0b3JzOgogKiAgICAgTWF1cmljaW8gQWxm6XJleihtYXVyaWNpby5hbGZlcmV6QGNlYS5mcikgQ0VBIExJU1QuIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMucmVxdWlyZW1lbnRzLnN5c21sLmFzc2lzdGFudC5oYW5kbGVyczsKCmltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkV4ZWN1dGlvbkV2ZW50OwppbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247CmltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJlcXVpcmVtZW50cy5zeXNtbC5hc3Npc3RhbnQuY29tbWFuZHMuUGFweXJ1c1JlcVN5c01MUmVxdWlyZW1lbnRDcmVhdGVDb21tYW5kOwppbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yZXF1aXJlbWVudHMuY29tbW9uLlBhcHlydXNBYnN0cmFjdEhhbmRsZXI7CmltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5FbGVtZW50OwovKioKICogRXhlY3V0ZXMgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IFN5c01MIHJlcXVpcmVtZW50IGJhc2VkIG9uIHRoZSBQYXB5cnVzIFJlcQogKiBwcmVmZXJlbmNlcyBwYWdlLgogKgogKi8KcHVibGljIGNsYXNzIFBhcHlydXNSZXFTeXNNTFJlcXVpcmVtZW50SGFuZGxlciBleHRlbmRzIFBhcHlydXNBYnN0cmFjdEhhbmRsZXIgewoJCXB1YmxpYyBPYmplY3QgZXhlY3V0ZShFeGVjdXRpb25FdmVudCBldmVudCkgdGhyb3dzIEV4ZWN1dGlvbkV4Y2VwdGlvbiB7CgkJCXN1cGVyLmV4ZWN1dGUoZXZlbnQpOwoJCQlFbGVtZW50IHNlbGVjdGVkRWxlbWVudCA9IGdldFNlbGVjdGlvbigpOwoJCQlpZiAoc2VsZWN0ZWRFbGVtZW50ICE9IG51bGwpIHsKCQkJCVBhcHlydXNSZXFTeXNNTFJlcXVpcmVtZW50Q3JlYXRlQ29tbWFuZCBwYXB5cnVzUmVxU3lzTUxSZXF1aXJlbWVudENyZWF0ZUNvbW1hbmQgPSBuZXcgUGFweXJ1c1JlcVN5c01MUmVxdWlyZW1lbnRDcmVhdGVDb21tYW5kKAoJCQkJCQl0cmFuc2FjdGlvbmFsRWRpdGluZ0RvbWFpbiwgc2VsZWN0ZWRFbGVtZW50KTsKCQkJCXRyYW5zYWN0aW9uYWxFZGl0aW5nRG9tYWluLmdldENvbW1hbmRTdGFjaygpLmV4ZWN1dGUocGFweXJ1c1JlcVN5c01MUmVxdWlyZW1lbnRDcmVhdGVDb21tYW5kKTsKCQkJfQoJCQlyZXR1cm4gbnVsbDsKCQl9CgoJLyoqCgkgKiAKCSAqIEBzZWUgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5BYnN0cmFjdEhhbmRsZXIjaXNFbmFibGVkKCkKCSAqIAoJICogQHJldHVybiB0cnVlIGlmIHRoZSBoYW5kbGVyIGlzIHBvc3NpYmxlCgkgKi8KCUBPdmVycmlkZQoJcHVibGljIGJvb2xlYW4gaXNFbmFibGVkKCkgewoJCUVsZW1lbnQgc2VsZWN0ZWRFbGVtZW50ID0gZ2V0U2VsZWN0aW9uKCk7CgkJaWYgKHNlbGVjdGVkRWxlbWVudCAhPSBudWxsKSB7CgkJCXJldHVybiB0cnVlOwoJCX0gZWxzZSB7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9Cn0K