-
Bug
-
Resolution: Done
-
Blocker
-
4.0.0.Alpha1, 4.0.0.Alpha2
-
None
-
None
In Modeshape 3.x, you could load the repository configuration from a JAR-protocol URL (e.g. a classpath resource provided by Spring),
(JcrRepository) jcrRepositoryFactory.getRepository(singletonMap(URL, new java.net.URL("jar:file:/Users/cabeer/.m2/repository/org/fcrepo/fcrepo-configs/4.0.0-alpha-6-SNAPSHOT-MS40/fcrepo-configs-4.0.0-alpha-6-SNAPSHOT-MS40.jar!/config/minimal-default/repository.json")));
In 4.0, this same code causes a FileNotFoundException:
Caused by: javax.jcr.RepositoryException: java.io.FileNotFoundException: jar:file:/Users/cabeer/.m2/repository/org/fcrepo/fcrepo-configs/4.0.0-alpha-6-SNAPSHOT-MS40/fcrepo-configs-4.0.0-alpha-6-SNAPSHOT-MS40.jar!/config/minimal-default/repository.json
at org.modeshape.jcr.JcrRepositoriesContainer$FileRepositoryLookup.loadRepositoryConfigurationFrom(JcrRepositoriesContainer.java:258) ~[modeshape-jcr-4.0.0.Alpha2.jar:4.0.0.Alpha2]
at org.modeshape.jcr.JcrRepositoriesContainer$FileRepositoryLookup.repository(JcrRepositoriesContainer.java:200) ~[modeshape-jcr-4.0.0.Alpha2.jar:4.0.0.Alpha2]
at org.modeshape.jcr.JcrRepositoriesContainer.getRepository(JcrRepositoriesContainer.java:87) ~[modeshape-jcr-4.0.0.Alpha2.jar:4.0.0.Alpha2]
at org.modeshape.jcr.JcrRepositoryFactory.getRepository(JcrRepositoryFactory.java:123) ~[modeshape-jcr-4.0.0.Alpha2.jar:4.0.0.Alpha2]
It looks like this regression was introduced by https://github.com/ModeShape/modeshape/commit/e8c2b5280b33408f233f2823c1740ebc6959e6ac#diff-bcb982f4f76f09117e82a5551fab5931L204.
Before this change, the RepositoryConfiguration.read(URL) method (https://github.com/ModeShape/modeshape/blob/master/modeshape-jcr/src/main/java/org/modeshape/jcr/RepositoryConfiguration.java#L761) was called and correctly resolved the jar:file URL. After the change, RepositoryConfiguration.read( String ) is invoked instead and cannot resolve the URL.