Qpid
  1. Qpid
  2. QPID-3971

PropertiesFileInitialContextFactory cannot open file URL

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 0.14
    • Fix Version/s: 0.17
    • Component/s: Java Client
    • Labels:
      None
    • Environment:

      MAC OS 10.7, java version "1.6.0_31"

      Description

      Hi all,

      I have to configure JNDI by a properties file. For example:

      String INITIAL_CONTEXT_FACTORY = "org.apache.qpid.jndi.PropertiesFileInitialContextFactory";

      System.setProperty(Context.INITIAL_CONTEXT_FACTORY, INITIAL_CONTEXT_FACTORY);

      System.setProperty(Context.PROVIDER_URL, "path/to/file");

      Context context = new InitialContext();

      Everything works fine until the "Context.PROVIDER_URL" contains a "real" URL instead of a file path. In our example the "Context.PROVIDER_URL" is set by a third party library. But using an URL here causes an FileNotFoundException in [3].

      java.io.FileNotFoundException: file:/Users/.../qpid-jndi.conf (No such file or directory)

      at java.io.FileInputStream.open(Native Method)

      at java.io.FileInputStream.<init>(FileInputStream.java:120)

      at java.io.FileInputStream.<init>(FileInputStream.java:79)

      Looking at PropertiesFileInitialContextFactory (cf. [2] line 85) it's clear what happens. It tries to open the URL using a FileInputStream. At least on my Mac that doesn't work. My question is whether Qpid should be modified to accept File-URLs since Context.PROVIDER_URL is specified as an URL in [1] and apparently some libraries take it seriously...

      Many thanks,

      Tobias

      [1] http://docs.oracle.com/javase/6/docs/api/javax/naming/Context.html#PROVIDER_URL
      [2] http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jndi/PropertiesFileInitialContextFactory.java?view=markup

        Activity

        Hide
        Weston M. Price added a comment -

        In looking at this I would agree, this seems to be something we should support.

        Show
        Weston M. Price added a comment - In looking at this I would agree, this seems to be something we should support.
        Hide
        Weston M. Price added a comment -

        Fixed on trunk with new unit tests showing functionality.

        Show
        Weston M. Price added a comment - Fixed on trunk with new unit tests showing functionality.
        Hide
        Weston M. Price added a comment -

        This is not a functionality re-open but a test issue. I need to find a better way to test with an absolute:

        file://path-to-file

        The original checkin worked fine in my local environment, but the build machine has paths with invalid characters that broke the test suite.

        Will rework to come up with a better testing strategy.

        Show
        Weston M. Price added a comment - This is not a functionality re-open but a test issue. I need to find a better way to test with an absolute: file://path-to-file The original checkin worked fine in my local environment, but the build machine has paths with invalid characters that broke the test suite. Will rework to come up with a better testing strategy.
        Hide
        Robbie Gemmell added a comment -

        The commit in r1337829 (http://svn.apache.org/viewvc?rev=1337829&view=rev) to address the above update was tagged for QPID-3994 instead of this JIRA, and also failed on the CI machine due to a missing path seperator when creating the temp file.

        I have made a commit to hopefully resolve that failure whilst adding some other improvements.

        Show
        Robbie Gemmell added a comment - The commit in r1337829 ( http://svn.apache.org/viewvc?rev=1337829&view=rev ) to address the above update was tagged for QPID-3994 instead of this JIRA, and also failed on the CI machine due to a missing path seperator when creating the temp file. I have made a commit to hopefully resolve that failure whilst adding some other improvements.
        Hide
        Weston M. Price added a comment -

        Thanks for the improvements Robbie. Sort of frustrating when the test suite runs fine locally. I don't know the CI environment well enough I suppose.

        Show
        Weston M. Price added a comment - Thanks for the improvements Robbie. Sort of frustrating when the test suite runs fine locally. I don't know the CI environment well enough I suppose.
        Hide
        Weston M. Price added a comment -

        Fixed with patch and improvements from Robbie.

        Show
        Weston M. Price added a comment - Fixed with patch and improvements from Robbie.
        Hide
        Robbie Gemmell added a comment -

        I only noticed it fail originally because of the CI emails, but I was working on something else at the time and it failed for me locally as well when I tested that (java.io.FileNotFoundException: /tmphello.properties (Permission denied)) so I just made the changes to stop my other commit prompting a second set of failure emails.

        Show
        Robbie Gemmell added a comment - I only noticed it fail originally because of the CI emails, but I was working on something else at the time and it failed for me locally as well when I tested that (java.io.FileNotFoundException: /tmphello.properties (Permission denied)) so I just made the changes to stop my other commit prompting a second set of failure emails.
        Hide
        Weston M. Price added a comment -

        Probably a difference in the way different operating systems handle the tmp file. Admittedly I should have run the test on Linux VM.

        Show
        Weston M. Price added a comment - Probably a difference in the way different operating systems handle the tmp file. Admittedly I should have run the test on Linux VM.

          People

          • Assignee:
            Weston M. Price
            Reporter:
            Tobias Unger
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development