I'm specifying my compass.engine.connection = "mmap://C:/my_index" in an attempt to use MMapDirectory.
Compass's DefaultLuceneSearchEngineStore.configure() uses the connection protocol to determine which FS store to instantiate. However, FSDirectoryStore.configure() only strips protocols of "file://" when it should also strip "mmap://" or whatever else when determining the indexPath. Because it does not strip the protocol for mmap, it then attempts to open a File( "mmap://C:/my_index" ) which fails with the exception below.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'compass' defined in class path resource [org.photogoodness.client.core_spring.xml]: Invocation of init method failed; nested exception is org.compass.core.engine.SearchEngineException: Failed to open directory for path [indexversionsearchentry]; nested exception is java.io.IOException: The filename, directory name, or volume label syntax is incorrect
Caused by: org.compass.core.engine.SearchEngineException: Failed to open directory for path [indexversionsearchentry]; nested exception is java.io.IOException: The filename, directory name, or volume label syntax is incorrect
java.io.IOException: The filename, directory name, or volume label syntax is incorrect
at java.io.WinNTFileSystem.canonicalize0(Native Method)
at java.io.Win32FileSystem.canonicalize(Win32FileSystem.java:396)
at java.io.File.getCanonicalPath(File.java:559)
at org.apache.lucene.store.FSDirectory.getDirectory(FSDirectory.java:168)
at org.apache.lucene.store.FSDirectory.getDirectory(FSDirectory.java:139)
at org.compass.core.lucene.engine.store.FSDirectoryStore.open(FSDirectoryStore.java:70)
at org.compass.core.lucene.engine.store.DefaultLuceneSearchEngineStore.openDirectory(DefaultLuceneSearchEngineStore.java:282)
at org.compass.core.lucene.engine.store.DefaultLuceneSearchEngineStore.indexExists(DefaultLuceneSearchEngineStore.java:377)
at org.compass.core.lucene.engine.store.DefaultLuceneSearchEngineStore.verifyIndex(DefaultLuceneSearchEngineStore.java:444)
at org.compass.core.lucene.engine.store.DefaultLuceneSearchEngineStore.verifyIndex(DefaultLuceneSearchEngineStore.java:440)
at org.compass.core.lucene.engine.store.DefaultLuceneSearchEngineStore.verifyIndex(DefaultLuceneSearchEngineStore.java:432)
at org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager$4.doInTransaction(DefaultLuceneSearchEngineIndexManager.java:136)
at org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager$4.doInTransaction(DefaultLuceneSearchEngineIndexManager.java:134)
at org.compass.core.impl.DefaultCompass$CompassTransactionContext.execute(DefaultCompass.java:310)
at org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager.verifyIndex(DefaultLuceneSearchEngineIndexManager.java:133)
at org.compass.core.impl.DefaultCompass.<init>(DefaultCompass.java:145)
at org.compass.core.impl.DefaultCompass.<init>(DefaultCompass.java:107)
at org.compass.core.impl.DefaultCompass.<init>(DefaultCompass.java:100)
at org.compass.core.config.CompassConfiguration.buildCompass(CompassConfiguration.java:232)
at org.compass.spring.LocalCompassBean.newCompass(LocalCompassBean.java:336)
at org.compass.spring.LocalCompassBean.afterPropertiesSet(LocalCompassBean.java:326)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1198)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1167)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:427)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:285)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:122)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.ja