<?xml version="1.0" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.jacorb.org/bugzilla/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.2"
          urlbase="https://www.jacorb.org/bugzilla/"
          
          maintainer="jacorb@goots.org"
>

    <bug>
          <bug_id>962</bug_id>
          
          <creation_ts>2013-08-08 18:57:47 +0000</creation_ts>
          <short_desc>Converting a repository id to a class name can take a long time</short_desc>
          <delta_ts>2013-09-09 02:42:23 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>JacORB</product>
          <component>Interface Repository</component>
          <version>3.3</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Phil Mesnier">mesnierp</reporter>
          <assigned_to name="Mailinglist to track bugs">jacorb-bugs</assigned_to>
          <cc>jacorb</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>3050</commentid>
    <comment_count>0</comment_count>
      <attachid>425</attachid>
    <who name="Phil Mesnier">mesnierp</who>
    <bug_when>2013-08-08 18:57:47 +0000</bug_when>
    <thetext>Created attachment 425
The fix

There is a very old utility function, RepositoryID.ir2scope() that takes a string of the form &quot;mod1/mod2/mod3/intf/MyExcept&quot; and returns a fully qualified class name string: &quot;mod1.mod2.mod3.intfPackage.MyExcept&quot;

The way it determines that &quot;intf&quot; needs to become &quot;intfPackage&quot; is by using the class loader to first try to load &quot;mod1&quot; then &quot;mod1.mod2&quot; etc. If the class path the loader searches is large, this iteration can take a long time, perhaps seconds. Also, it happens every time the repoID is used, so repeated use, such as from a request interceptor, can incur substantial overhead.

My solution is to first use a map to store successful conversions. I&apos;m using a concurrentHashMap, which may impose synchronization, but that is better than always hitting the class loader. Second, the class loader is still used, but now no more than twice. Once to try the FQ class name resulting from a simple &apos;/&apos;-&gt;&apos;.&apos; conversion, and if that fails, insert &quot;Package&quot; before the last dot and try again. If that still fails, the &quot;Package&quot; is abandoned and the name is returned. This preserves the semantics of the call.

I have not been able to construct an IDL file that will generate a &quot;Package&quot; within a &quot;Package&quot;. If that can be demonstrated, please attach a test and I will modify my code to continue adding &quot;Package&quot; names as necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3066</commentid>
    <comment_count>1</comment_count>
    <who name="Nick Cross">jacorb</who>
    <bug_when>2013-09-09 02:42:23 +0000</bug_when>
    <thetext>Modified patch applied after discussion.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425</attachid>
            <date>2013-08-08 18:57:47 +0000</date>
            <delta_ts>2013-08-08 18:57:47 +0000</delta_ts>
            <desc>The fix</desc>
            <filename>repid.patch</filename>
            <type>text/plain</type>
            <size>4052</size>
            <attacher name="Phil Mesnier">mesnierp</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL3NyYy9vcmcvamFjb3JiL2lyL1JlcG9zaXRvcnlJRC5qYXZhIGIvc3JjL29y
Zy9qYWNvcmIvaXIvUmVwb3NpdG9yeUlELmphdmEKaW5kZXggNTE3OWJmZS4uNGQ5Yjk1ZCAxMDA2
NDQKLS0tIGEvc3JjL29yZy9qYWNvcmIvaXIvUmVwb3NpdG9yeUlELmphdmEKKysrIGIvc3JjL29y
Zy9qYWNvcmIvaXIvUmVwb3NpdG9yeUlELmphdmEKQEAgLTIxLDYgKzIxLDcgQEAgcGFja2FnZSBv
cmcuamFjb3JiLmlyOwogICovCiAKIGltcG9ydCBqYXZhLnV0aWwuU3RyaW5nVG9rZW5pemVyOwor
aW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkNvbmN1cnJlbnRIYXNoTWFwOwogaW1wb3J0IG9y
Zy5vbWcuQ09SQkEuSU5URl9SRVBPUzsKIGltcG9ydCBvcmcub21nLkNPUkJBLnBvcnRhYmxlLkJv
eGVkVmFsdWVIZWxwZXI7CiBpbXBvcnQgb3JnLm9tZy5DT1JCQS5TdHJpbmdWYWx1ZUhlbHBlcjsK
QEAgLTMzLDYgKzM0LDkgQEAgaW1wb3J0IG9yZy5vbWcuQ09SQkEuV1N0cmluZ1ZhbHVlSGVscGVy
OwogICovCiBwdWJsaWMgY2xhc3MgUmVwb3NpdG9yeUlECiB7CisKKyAgcHJpdmF0ZSBzdGF0aWMg
Q29uY3VycmVudEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHNjb3BlQ2FjaGUgPSBudWxsOworCiAg
ICAgLyoqCiAgICAgICogUmV0dXJucyB0aGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIEph
dmEgY2xhc3MgdG8gd2hpY2gKICAgICAgKiB0aGUgZ2l2ZW4gUmVwb3NpdG9yeSBJRCBpcyBtYXBw
ZWQuCkBAIC0xMjksMTIgKzEzMywxMiBAQCBwdWJsaWMgY2xhc3MgUmVwb3NpdG9yeUlECiAgICAg
ICAgICAgICBjaGFyIHRoZUNoYXIgPSAoY2hhcikoSW50ZWdlci5wYXJzZUludChpZC5zdWJzdHJp
bmcoaW5kZXgrMiwgaW5kZXgrNiksIDE2KSk7CiAgICAgICAgICAgICBkZXN0LmFwcGVuZCh0aGVD
aGFyKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKHBvcyA8IGlkLmxlbmd0aCgp
KSAKKworICAgICAgICBpZiAocG9zIDwgaWQubGVuZ3RoKCkpCiAgICAgICAgIHsKICAgICAgICAg
ICAgZGVzdC5hcHBlbmQoaWQuc3Vic3RyaW5nKHBvcykpOwogICAgICAgICB9Ci0gICAgICAgIAor
CiAgICAgICAgIHJldHVybiBkZXN0LnRvU3RyaW5nKCk7CiAgICAgfQogCkBAIC0xNTEsOCArMTU1
LDkgQEAgcHVibGljIGNsYXNzIFJlcG9zaXRvcnlJRAogICAgIH0KIAogICAgIC8qKgotICAgICAq
IEZJWE1FOiBUaGlzIG1ldGhvZCBuZWVkcyBkb2N1bWVudGF0aW9uLgotICAgICAqIFdoYXQgZG9l
cyB0aGlzIGFsZ29yaXRobSBkbywgYW5kIHdoeSBpcyBpdCBuZWNlc3Nhcnk/ICBBUy4KKyAgICAg
KiBDb252ZXJ0IGEgcmVwb0lEIHBhdGggc3RyaW5nIHRvIGEgZnVsbHkgcXVhbGlmaWVkIGNsYXNz
IG5hbWUuCisgICAgICogQ2hlY2sgdG8gc2VlIGlmIHRoZSBmaW5hbCBuYW1lIGluIHRoZSBjbGFz
cyBpcyBhY3R1YWxseSBuZXN0ZWQgd2l0aGluCisgICAgICogYSAiaW50ZlBhY2thZ2UiIHBhY2th
Z2UsIGFuZCBtb2RpZnkgdGhlIEZRIGNsYXNzIG5hbWUgYXBwcm9wcmlhdGVseS4KICAgICAgKi8K
ICAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgaXIyc2NvcGVzIChTdHJpbmcgcHJlZml4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzLApAQCAtMTYyLDUwICsx
NjcsNDYgQEAgcHVibGljIGNsYXNzIFJlcG9zaXRvcnlJRAogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gczsKICAgICAgICAgfQotICAgICAgICBqYXZhLnV0aWwuU3RyaW5nVG9rZW5pemVy
IHN0cnRvayA9Ci0gICAgICAgICAgICBuZXcgamF2YS51dGlsLlN0cmluZ1Rva2VuaXplciggcywg
Ii8iICk7CiAKLSAgICAgICAgaW50IGNvdW50ID0gc3RydG9rLmNvdW50VG9rZW5zKCk7CisgICAg
ICAgIGlmIChzY29wZUNhY2hlID09IG51bGwpCisgICAgICAgICAgeworICAgICAgICAgICAgc2Nv
cGVDYWNoZSA9IG5ldyBDb25jdXJyZW50SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gKCk7CisgICAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAgICAgU3RyaW5nIHNj
b3BlID0gc2NvcGVDYWNoZS5nZXQgKHMpOworICAgICAgICAgICAgaWYgKHNjb3BlICE9IG51bGwp
CisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGU7CisgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICB9CisKICAgICAgICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0
cmluZ0J1ZmZlcigpOwotICAgICAgICBzYi5hcHBlbmQocHJlZml4KTsKKyAgICAgICAgaWYgKHBy
ZWZpeCAhPSBudWxsICYmIHByZWZpeC5sZW5ndGgoKSA+IDApCisgICAgICAgICAgeworICAgICAg
ICAgICAgc2IuYXBwZW5kKHByZWZpeCArICIuIik7CisgICAgICAgICAgfQorICAgICAgICBzYi5h
cHBlbmQgKHMpOworICAgICAgICBpbnQgbGFzdGRvdCA9IC0xOworICAgICAgICBmb3IgKGludCBk
b3Rwb3MgPSBzYi5pbmRleE9mICgiLyIpOyBkb3Rwb3MgPj0gMDsgIGRvdHBvcyA9IHNiLmluZGV4
T2YgKCIvIiwgZG90cG9zKSkKKyAgICAgICAgICB7CisgICAgICAgICAgICBzYi5zZXRDaGFyQXQg
KGRvdHBvcywgJy4nKTsKKyAgICAgICAgICAgIGxhc3Rkb3QgPSBkb3Rwb3M7CisgICAgICAgICAg
fQogCi0gICAgICAgIGZvciggaW50IGkgPSAwOyBzdHJ0b2suaGFzTW9yZVRva2VucygpOyBpKysg
KQotICAgICAgICB7Ci0gICAgICAgICAgICBTdHJpbmcgc2MgPSBzdHJ0b2submV4dFRva2VuKCk7
Ci0gICAgICAgICAgICBDbGFzcyBjID0gbnVsbDsKLSAgICAgICAgICAgIGlmKCBzYi50b1N0cmlu
ZygpLmxlbmd0aCgpID4gMCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYyA9IGxv
YWRDbGFzcyAoc2IudG9TdHJpbmcoKSArICIuIiArIHNjLCBsb2FkZXIpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGMgPSBs
b2FkQ2xhc3MgKHNjLCBsb2FkZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGMg
PT0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiggc2IudG9TdHJpbmco
KS5sZW5ndGgoKSA+IDAgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
c2IuYXBwZW5kKCAiLiIgKyBzYyApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzYi5hcHBlbmQo
IHNjICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmKCBpIDwgY291bnQtMSkKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZCggIi4iICsgc2MgKyAi
UGFja2FnZSIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoICIuIiArIHNjICk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIFN0
cmluZyBzY29wZSA9IHNiLnRvU3RyaW5nICgpOworICAgICAgICBpZiAobG9hZENsYXNzIChzY29w
ZSwgbG9hZGVyKSA9PSBudWxsKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHNiLmluc2VydCAo
bGFzdGRvdCwiUGFja2FnZSIpOworICAgICAgICAgICAgU3RyaW5nIHBrZ3Njb3BlID0gc2IudG9T
dHJpbmcgKCk7CisgICAgICAgICAgICBpZiAobG9hZENsYXNzIChwa2dzY29wZSwgbG9hZGVyKSAh
PSBudWxsKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc2NvcGUgPSBwa2dzY29w
ZTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gc2IudG9T
dHJpbmcoKTsKKyAgICAgICAgc2NvcGVDYWNoZS5wdXQgKHMsIHNjb3BlKTsKKyAgICAgICAgcmV0
dXJuIHNjb3BlOwogICAgIH0KIAogICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHJlcElkIChDbGFz
cyBjKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>