commit
						ffcbed5611
					
				| @ -0,0 +1,40 @@ | |||||||
|  | package org.libresonic.player.dao; | ||||||
|  | 
 | ||||||
|  | import org.junit.ClassRule; | ||||||
|  | import org.junit.Rule; | ||||||
|  | import org.junit.runner.Description; | ||||||
|  | import org.junit.runners.model.Statement; | ||||||
|  | import org.libresonic.player.util.LibresonicHomeRule; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.jdbc.core.JdbcTemplate; | ||||||
|  | import org.springframework.test.context.ContextConfiguration; | ||||||
|  | import org.springframework.test.context.junit4.rules.SpringClassRule; | ||||||
|  | import org.springframework.test.context.junit4.rules.SpringMethodRule; | ||||||
|  | 
 | ||||||
|  | @ContextConfiguration(locations = { | ||||||
|  |         "/applicationContext-service.xml", | ||||||
|  |         "/applicationContext-cache.xml", | ||||||
|  |         "/applicationContext-testdb.xml", | ||||||
|  |         "/applicationContext-mockSonos.xml"}) | ||||||
|  | public class DaoTestCaseBean2 { | ||||||
|  |     @ClassRule | ||||||
|  |     public static final SpringClassRule classRule = new SpringClassRule() { | ||||||
|  |         LibresonicHomeRule libresonicRule = new LibresonicHomeRule(); | ||||||
|  |         @Override | ||||||
|  |         public Statement apply(Statement base, Description description) { | ||||||
|  |             Statement spring = super.apply(base, description); | ||||||
|  |             return libresonicRule.apply(spring, description); | ||||||
|  |         } | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     @Rule | ||||||
|  |     public final SpringMethodRule springMethodRule = new SpringMethodRule(); | ||||||
|  | 
 | ||||||
|  |     @Autowired | ||||||
|  |     GenericDaoHelper genericDaoHelper; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     JdbcTemplate getJdbcTemplate() { | ||||||
|  |         return genericDaoHelper.getJdbcTemplate(); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,54 @@ | |||||||
|  | package org.libresonic.player.service; | ||||||
|  | 
 | ||||||
|  | import org.apache.commons.io.FileUtils; | ||||||
|  | import org.junit.ClassRule; | ||||||
|  | import org.junit.Rule; | ||||||
|  | import org.junit.Test; | ||||||
|  | import org.junit.runner.Description; | ||||||
|  | import org.junit.runners.model.Statement; | ||||||
|  | import org.libresonic.player.TestCaseUtils; | ||||||
|  | import org.libresonic.player.util.LibresonicHomeRule; | ||||||
|  | import org.springframework.test.context.ContextConfiguration; | ||||||
|  | import org.springframework.test.context.junit4.rules.SpringClassRule; | ||||||
|  | import org.springframework.test.context.junit4.rules.SpringMethodRule; | ||||||
|  | 
 | ||||||
|  | import java.io.File; | ||||||
|  | 
 | ||||||
|  | @ContextConfiguration(locations = { | ||||||
|  |         "/applicationContext-service.xml", | ||||||
|  |         "/applicationContext-cache.xml", | ||||||
|  |         "/applicationContext-testdb.xml", | ||||||
|  |         "/applicationContext-mockSonos.xml"}) | ||||||
|  | public class LegacyDatabaseStartupTestCase { | ||||||
|  | 
 | ||||||
|  |     @ClassRule | ||||||
|  |     public static final SpringClassRule classRule = new SpringClassRule() { | ||||||
|  |         LibresonicHomeRule libresonicRule = new LibresonicHomeRule() { | ||||||
|  |             @Override | ||||||
|  |             protected void before() throws Throwable { | ||||||
|  |                 super.before(); | ||||||
|  |                 String homeParent = TestCaseUtils.libresonicHomePathForTest(); | ||||||
|  |                 System.setProperty("libresonic.home", TestCaseUtils.libresonicHomePathForTest()); | ||||||
|  |                 TestCaseUtils.cleanLibresonicHomeForTest(); | ||||||
|  |                 File dbDirectory = new File(homeParent, "/db"); | ||||||
|  |                 FileUtils.forceMkdir(dbDirectory); | ||||||
|  |                 org.libresonic.player.util.FileUtils.copyResourcesRecursively(getClass().getResource("/db/pre-liquibase/db"), new File(homeParent)); | ||||||
|  |             } | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         @Override | ||||||
|  |         public Statement apply(Statement base, Description description) { | ||||||
|  |             Statement spring = super.apply(base, description); | ||||||
|  |             return libresonicRule.apply(spring, description); | ||||||
|  |         } | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     @Rule | ||||||
|  |     public final SpringMethodRule springMethodRule = new SpringMethodRule(); | ||||||
|  | 
 | ||||||
|  |     @Test | ||||||
|  |     public void testStartup() throws Exception { | ||||||
|  |         System.out.println("Successful startup"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
| @ -1,32 +0,0 @@ | |||||||
| package org.libresonic.player.service; |  | ||||||
| 
 |  | ||||||
| import junit.framework.TestCase; |  | ||||||
| import org.apache.commons.io.FileUtils; |  | ||||||
| import org.libresonic.player.TestCaseUtils; |  | ||||||
| import org.springframework.context.ApplicationContext; |  | ||||||
| 
 |  | ||||||
| import java.io.File; |  | ||||||
| 
 |  | ||||||
| public class StartupTestCase extends TestCase { |  | ||||||
| 
 |  | ||||||
|     private static String baseResources = "/org/libresonic/player/service/mediaScannerServiceTestCase/"; |  | ||||||
| 
 |  | ||||||
|     @Override |  | ||||||
|     protected void setUp() throws Exception { |  | ||||||
|         super.setUp(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public void testStartup() throws Exception { |  | ||||||
|         String homeParent = TestCaseUtils.libresonicHomePathForTest(); |  | ||||||
|         System.setProperty("libresonic.home", TestCaseUtils.libresonicHomePathForTest()); |  | ||||||
|         TestCaseUtils.cleanLibresonicHomeForTest(); |  | ||||||
|         File dbDirectory = new File(homeParent, "/db"); |  | ||||||
|         FileUtils.forceMkdir(dbDirectory); |  | ||||||
|         org.libresonic.player.util.FileUtils.copyResourcesRecursively(getClass().getResource("/db/pre-liquibase/db"), new File(homeParent)); |  | ||||||
| 
 |  | ||||||
|         // load spring context
 |  | ||||||
|         ApplicationContext context = TestCaseUtils.loadSpringApplicationContext(baseResources); |  | ||||||
| 
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| @ -0,0 +1,14 @@ | |||||||
|  | package org.libresonic.player.util; | ||||||
|  | 
 | ||||||
|  | import org.junit.rules.ExternalResource; | ||||||
|  | import org.libresonic.player.TestCaseUtils; | ||||||
|  | 
 | ||||||
|  | public class LibresonicHomeRule extends ExternalResource { | ||||||
|  |     @Override | ||||||
|  |     protected void before() throws Throwable { | ||||||
|  |         super.before(); | ||||||
|  |         System.setProperty("libresonic.home", TestCaseUtils.libresonicHomePathForTest()); | ||||||
|  | 
 | ||||||
|  |         TestCaseUtils.cleanLibresonicHomeForTest(); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,11 @@ | |||||||
|  | <?xml version="1.0" encoding="ISO-8859-1"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xmlns:jaxws="http://cxf.apache.org/jaxws" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> | ||||||
|  | 
 | ||||||
|  |     <bean id="sonosHelper" class="org.mockito.Mockito" factory-method="mock"> | ||||||
|  |         <constructor-arg value="org.libresonic.player.service.sonos.SonosHelper" /> | ||||||
|  |     </bean> | ||||||
|  | 
 | ||||||
|  | </beans> | ||||||
| @ -0,0 +1,14 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <beans xmlns="http://www.springframework.org/schema/beans" | ||||||
|  |        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> | ||||||
|  | 
 | ||||||
|  |     <bean id="dataSource" | ||||||
|  |           class="org.springframework.jdbc.datasource.DriverManagerDataSource"> | ||||||
|  | 
 | ||||||
|  |         <property name="driverClassName" value="org.hsqldb.jdbcDriver" /> | ||||||
|  |         <property name="url" value="jdbc:hsqldb:file:#{systemProperties['libresonic.home']}/db/libresonic" /> | ||||||
|  |         <property name="username" value="sa" /> | ||||||
|  |         <property name="password" value="" /> | ||||||
|  |     </bean> | ||||||
|  | </beans> | ||||||
| @ -1,17 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="ISO-8859-1"?> |  | ||||||
| 
 |  | ||||||
| <beans xmlns="http://www.springframework.org/schema/beans" |  | ||||||
|        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |  | ||||||
|        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> |  | ||||||
| 
 |  | ||||||
|     <bean id="cacheFactory" class="org.libresonic.player.cache.CacheFactory"/> |  | ||||||
| 
 |  | ||||||
|     <bean id="userCache" factory-bean="cacheFactory" factory-method="getCache"> |  | ||||||
|         <constructor-arg value="userCache"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="mediaFileMemoryCache" factory-bean="cacheFactory" factory-method="getCache"> |  | ||||||
|         <constructor-arg value="mediaFileMemoryCache"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
| </beans> |  | ||||||
| @ -1,217 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="ISO-8859-1"?> |  | ||||||
| <beans xmlns="http://www.springframework.org/schema/beans" |  | ||||||
|        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |  | ||||||
|        xsi:schemaLocation=" |  | ||||||
|        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <!-- DAO's --> |  | ||||||
| 
 |  | ||||||
|     <bean id="playerDao" class="org.libresonic.player.dao.PlayerDao"> |  | ||||||
|         <property name="daoHelper" ref="daoHelper"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="mediaFileDao" class="org.libresonic.player.dao.MediaFileDao"> |  | ||||||
|         <property name="daoHelper" ref="daoHelper"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="artistDao" class="org.libresonic.player.dao.ArtistDao"> |  | ||||||
|         <property name="daoHelper" ref="daoHelper"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="albumDao" class="org.libresonic.player.dao.AlbumDao"> |  | ||||||
|         <property name="daoHelper" ref="daoHelper"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="playlistDao" class="org.libresonic.player.dao.PlaylistDao"> |  | ||||||
|         <property name="daoHelper" ref="daoHelper"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="playQueueDao" class="org.libresonic.player.dao.PlayQueueDao"> |  | ||||||
|         <property name="daoHelper" ref="daoHelper"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="internetRadioDao" class="org.libresonic.player.dao.InternetRadioDao"> |  | ||||||
|         <property name="daoHelper" ref="daoHelper"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="musicFileInfoDao" class="org.libresonic.player.dao.RatingDao"> |  | ||||||
|         <property name="daoHelper" ref="daoHelper"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="musicFolderDao" class="org.libresonic.player.dao.MusicFolderDaoMock"> |  | ||||||
|         <property name="daoHelper" ref="daoHelper"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="userDao" class="org.libresonic.player.dao.UserDao"> |  | ||||||
|         <property name="daoHelper" ref="daoHelper"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="transcodingDao" class="org.libresonic.player.dao.TranscodingDao"> |  | ||||||
|         <property name="daoHelper" ref="daoHelper"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="podcastDao" class="org.libresonic.player.dao.PodcastDao"> |  | ||||||
|         <property name="daoHelper" ref="daoHelper"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="avatarDao" class="org.libresonic.player.dao.AvatarDao"> |  | ||||||
|         <property name="daoHelper" ref="daoHelper"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="shareDao" class="org.libresonic.player.dao.ShareDao"> |  | ||||||
|         <property name="daoHelper" ref="daoHelper"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="bookmarkDao" class="org.libresonic.player.dao.BookmarkDao"> |  | ||||||
|         <property name="daoHelper" ref="daoHelper"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="daoHelper" class="org.libresonic.player.dao.GenericDaoHelper"> |  | ||||||
|         <constructor-arg name="dataSource" ref="dataSource" /> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="rollbackFile" class="java.io.File"> |  | ||||||
|         <constructor-arg type="java.io.File" index="0" value="#{T(org.libresonic.player.service.SettingsService).libresonicHome}" /> |  | ||||||
|         <constructor-arg type="java.lang.String" index="1" value="rollback.sql" /> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="dataSource" |  | ||||||
|           class="org.springframework.jdbc.datasource.DriverManagerDataSource"> |  | ||||||
| 
 |  | ||||||
|         <property name="driverClassName" value="org.hsqldb.jdbcDriver" /> |  | ||||||
|         <property name="url" value="jdbc:hsqldb:file:#{systemProperties['libresonic.home']}/db/libresonic" /> |  | ||||||
|         <property name="username" value="sa" /> |  | ||||||
|         <property name="password" value="" /> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="liquibase" class="org.libresonic.player.spring.SpringLiquibase"> |  | ||||||
|         <property name="dataSource" ref="dataSource" /> |  | ||||||
|         <property name="changeLog" value="classpath:liquibase/db-changelog.xml" /> |  | ||||||
|         <property name="rollbackFile" ref="rollbackFile" /> |  | ||||||
|         <property name="changeLogParameters"> |  | ||||||
|             <map> |  | ||||||
|                 <entry key="defaultMusicFolder" value="#{T(org.libresonic.player.util.Util).getDefaultMusicFolder()}" /> |  | ||||||
|                 <entry key="varcharLimit" value="${database.varchar.maxlength:512}" /> |  | ||||||
|                 <entry key="userTableQuote" value="" /> |  | ||||||
|             </map> |  | ||||||
|         </property> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <!-- Services --> |  | ||||||
| 
 |  | ||||||
|     <bean id="mediaFileService" class="org.libresonic.player.service.MediaFileService"> |  | ||||||
|         <property name="securityService" ref="securityService"/> |  | ||||||
|         <property name="settingsService" ref="settingsService"/> |  | ||||||
|         <property name="mediaFileMemoryCache" ref="mediaFileMemoryCache"/> |  | ||||||
|         <property name="mediaFileDao" ref="mediaFileDao"/> |  | ||||||
|         <property name="albumDao" ref="albumDao"/> |  | ||||||
|         <property name="metaDataParserFactory" ref="metaDataParserFactory"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="securityService" class="org.libresonic.player.service.SecurityService"> |  | ||||||
|         <property name="settingsService" ref="settingsService"/> |  | ||||||
|         <property name="userDao" ref="userDao"/> |  | ||||||
|         <property name="userCache" ref="userCache"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="configurationService" class="org.libresonic.player.service.ApacheCommonsConfigurationService" /> |  | ||||||
| 
 |  | ||||||
|     <bean id="settingsService" class="org.libresonic.player.service.SettingsService" init-method="init"> |  | ||||||
|         <property name="internetRadioDao" ref="internetRadioDao"/> |  | ||||||
|         <property name="musicFolderDao" ref="musicFolderDao"/> |  | ||||||
|         <property name="userDao" ref="userDao"/> |  | ||||||
|         <property name="avatarDao" ref="avatarDao"/> |  | ||||||
|         <property name="versionService" ref="versionService"/> |  | ||||||
|         <property name="configurationService" ref="configurationService" /> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="mediaScannerService" class="org.libresonic.player.service.MediaScannerService" init-method="initNoSchedule" depends-on="metaDataParserFactory"> |  | ||||||
|         <property name="settingsService" ref="settingsService"/> |  | ||||||
|         <property name="mediaFileService" ref="mediaFileService"/> |  | ||||||
|         <property name="mediaFileDao" ref="mediaFileDao"/> |  | ||||||
|         <property name="playlistService" ref="playlistService"/> |  | ||||||
|         <property name="artistDao" ref="artistDao"/> |  | ||||||
|         <property name="albumDao" ref="albumDao"/> |  | ||||||
|         <property name="searchService" ref="searchService"/> |  | ||||||
|         <!-- <property name="queueSender" ref="queueSender"/> --> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <bean id="searchService" class="org.libresonic.player.service.SearchService"> |  | ||||||
|         <property name="mediaFileService" ref="mediaFileService"/> |  | ||||||
|         <property name="artistDao" ref="artistDao"/> |  | ||||||
|         <property name="albumDao" ref="albumDao"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="networkService" class="org.libresonic.player.service.NetworkService" init-method="init"> |  | ||||||
|         <property name="settingsService" ref="settingsService"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="playerService" class="org.libresonic.player.service.PlayerService" init-method="init"> |  | ||||||
|         <property name="playerDao" ref="playerDao"/> |  | ||||||
|         <property name="statusService" ref="statusService"/> |  | ||||||
|         <property name="securityService" ref="securityService"/> |  | ||||||
|         <property name="transcodingService" ref="transcodingService"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="playlistService" class="org.libresonic.player.service.PlaylistService"> |  | ||||||
|         <property name="mediaFileService" ref="mediaFileService"/> |  | ||||||
|         <property name="securityService" ref="securityService"/> |  | ||||||
|         <property name="settingsService" ref="settingsService"/> |  | ||||||
|         <property name="mediaFileDao" ref="mediaFileDao"/> |  | ||||||
|         <property name="playlistDao" ref="playlistDao"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="versionService" class="org.libresonic.player.service.VersionService" init-method="init"/> |  | ||||||
| 
 |  | ||||||
|     <bean id="statusService" class="org.libresonic.player.service.StatusService"> |  | ||||||
|         <property name="mediaFileService" ref="mediaFileService"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="ratingService" class="org.libresonic.player.service.RatingService"> |  | ||||||
|         <property name="ratingDao" ref="musicFileInfoDao"/> |  | ||||||
|         <property name="mediaFileService" ref="mediaFileService"/> |  | ||||||
|         <property name="securityService" ref="securityService"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="musicIndexService" class="org.libresonic.player.service.MusicIndexService"> |  | ||||||
|         <property name="settingsService" ref="settingsService"/> |  | ||||||
|         <property name="mediaFileService" ref="mediaFileService"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
|     <bean id="transcodingService" class="org.libresonic.player.service.TranscodingService"> |  | ||||||
|         <property name="transcodingDao" ref="transcodingDao"/> |  | ||||||
|         <property name="settingsService" ref="settingsService"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <bean id="podcastService" class="org.libresonic.player.service.PodcastService" init-method="init"> |  | ||||||
|         <property name="podcastDao" ref="podcastDao"/> |  | ||||||
|         <property name="settingsService" ref="settingsService"/> |  | ||||||
|         <property name="securityService" ref="securityService"/> |  | ||||||
|         <property name="mediaFileService" ref="mediaFileService"/> |  | ||||||
|         <property name="metaDataParserFactory" ref="metaDataParserFactory"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <bean id="metaDataParserFactory" class="org.libresonic.player.service.metadata.MetaDataParserFactory"> |  | ||||||
|         <property name="parsers"> |  | ||||||
|             <list> |  | ||||||
|                 <bean class="org.libresonic.player.service.metadata.JaudiotaggerParser"/> |  | ||||||
|                 <bean class="org.libresonic.player.service.metadata.FFmpegParser"> |  | ||||||
|                     <property name="transcodingService" ref="transcodingService"/> |  | ||||||
|                 </bean> |  | ||||||
|                 <bean class="org.libresonic.player.service.metadata.DefaultMetaDataParser"/> |  | ||||||
|             </list> |  | ||||||
|         </property> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <bean id="localeResolver" class="org.libresonic.player.i18n.LibresonicLocaleResolver"> |  | ||||||
|         <property name="securityService" ref="securityService"/> |  | ||||||
|         <property name="settingsService" ref="settingsService"/> |  | ||||||
|     </bean> |  | ||||||
| 
 |  | ||||||
| </beans> |  | ||||||
					Loading…
					
					
				
		Reference in new issue