Signed-off-by: Andrew DeMaria <lostonamountain@gmail.com>master
parent
bdcfc78b85
commit
fa1a700ebd
@ -0,0 +1,105 @@ |
||||
package org.airsonic.player.spring; |
||||
|
||||
import org.airsonic.player.dao.DaoHelper; |
||||
import org.airsonic.player.dao.GenericDaoHelper; |
||||
import org.airsonic.player.dao.LegacyHsqlDaoHelper; |
||||
import org.airsonic.player.service.SettingsService; |
||||
import org.airsonic.player.util.Util; |
||||
import org.apache.commons.dbcp2.BasicDataSource; |
||||
import org.springframework.beans.factory.annotation.Value; |
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; |
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.context.annotation.Profile; |
||||
import org.springframework.jdbc.datasource.DataSourceTransactionManager; |
||||
import org.springframework.jdbc.datasource.DriverManagerDataSource; |
||||
import org.springframework.jdbc.datasource.lookup.JndiDataSourceLookup; |
||||
import org.springframework.transaction.annotation.EnableTransactionManagement; |
||||
|
||||
import javax.sql.DataSource; |
||||
|
||||
import java.io.File; |
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
|
||||
@Configuration |
||||
@EnableTransactionManagement |
||||
public class DatabaseConfiguration { |
||||
|
||||
@Bean |
||||
public DataSourceTransactionManager transactionManager(DataSource dataSource) { |
||||
return new DataSourceTransactionManager(dataSource); |
||||
} |
||||
|
||||
@Bean |
||||
@Profile("legacy") |
||||
public DaoHelper legacyDaoHelper(DataSource dataSource) { |
||||
return new LegacyHsqlDaoHelper(dataSource); |
||||
} |
||||
|
||||
@Bean |
||||
@ConditionalOnMissingBean |
||||
public DaoHelper daoHelper(DataSource dataSource) { |
||||
return new GenericDaoHelper(dataSource); |
||||
} |
||||
|
||||
@Bean |
||||
@Profile("legacy") |
||||
public DataSource legacyDataSource() { |
||||
DriverManagerDataSource dataSource = new DriverManagerDataSource(); |
||||
dataSource.setDriverClassName("org.hsqldb.jdbcDriver"); |
||||
dataSource.setUrl(SettingsService.getDefaultJDBCUrl()); |
||||
dataSource.setUsername("sa"); |
||||
dataSource.setPassword(""); |
||||
return dataSource; |
||||
} |
||||
|
||||
@Bean |
||||
@Profile("embed") |
||||
public DataSource embedDataSource(@Value("${DatabaseConfigEmbedDriver}") String driver, |
||||
@Value("${DatabaseConfigEmbedUrl}") String url, |
||||
@Value("${DatabaseConfigEmbedUsername}") String username, |
||||
@Value("${DatabaseConfigEmbedPassword}") String password) { |
||||
BasicDataSource basicDataSource = new BasicDataSource(); |
||||
basicDataSource.setDriverClassName(driver); |
||||
basicDataSource.setUrl(url); |
||||
basicDataSource.setUsername(username); |
||||
basicDataSource.setPassword(password); |
||||
return basicDataSource; |
||||
} |
||||
|
||||
@Bean |
||||
@Profile("jndi") |
||||
public DataSource jndiDataSource(@Value("${DatabaseConfigJNDIName}") String jndiName) { |
||||
JndiDataSourceLookup jndiLookup = new JndiDataSourceLookup(); |
||||
return jndiLookup.getDataSource(jndiName); |
||||
} |
||||
|
||||
@Bean |
||||
public File rollbackFile() { |
||||
return new File(SettingsService.getAirsonicHome(), "rollback.sql"); |
||||
} |
||||
|
||||
@Bean |
||||
public String userTableQuote(@Value("${DatabaseUsertableQuote:}") String value) { |
||||
return value; |
||||
} |
||||
|
||||
@Bean |
||||
public SpringLiquibase liquibase(DataSource dataSource, |
||||
@Value("${DatabaseMysqlMaxlength:512}") |
||||
String mysqlVarcharLimit, |
||||
String userTableQuote) { |
||||
SpringLiquibase springLiquibase = new SpringLiquibase(); |
||||
springLiquibase.setDataSource(dataSource); |
||||
springLiquibase.setChangeLog("classpath:liquibase/db-changelog.xml"); |
||||
springLiquibase.setRollbackFile(rollbackFile()); |
||||
Map<String, String> parameters = new HashMap<>(); |
||||
parameters.put("defaultMusicFolder", Util.getDefaultMusicFolder()); |
||||
parameters.put("mysqlVarcharLimit", mysqlVarcharLimit); |
||||
parameters.put("userTableQuote", userTableQuote); |
||||
springLiquibase.setChangeLogParameters(parameters); |
||||
return springLiquibase; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,33 @@ |
||||
package org.airsonic.player.spring; |
||||
|
||||
import net.sf.ehcache.Ehcache; |
||||
import net.sf.ehcache.constructs.web.ShutdownListener; |
||||
import org.airsonic.player.cache.CacheFactory; |
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
|
||||
import javax.servlet.ServletContextListener; |
||||
|
||||
@Configuration |
||||
public class EhcacheConfiguration { |
||||
|
||||
@Bean |
||||
public ServletContextListener ehCacheShutdownListener() { |
||||
return new ShutdownListener(); |
||||
} |
||||
|
||||
@Bean |
||||
public Ehcache userCache(CacheFactory cacheFactory) { |
||||
return cacheFactory.getCache("userCache"); |
||||
} |
||||
|
||||
@Bean |
||||
public Ehcache mediaFileMemoryCache(CacheFactory cacheFactory) { |
||||
return cacheFactory.getCache("mediaFileMemoryCache"); |
||||
} |
||||
|
||||
@Bean |
||||
public CacheFactory cacheFactory() { |
||||
return new CacheFactory(); |
||||
} |
||||
} |
@ -0,0 +1,34 @@ |
||||
package org.airsonic.player.spring; |
||||
|
||||
import org.airsonic.player.controller.PodcastController; |
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.web.servlet.ViewResolver; |
||||
import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping; |
||||
import org.springframework.web.servlet.view.InternalResourceViewResolver; |
||||
import org.springframework.web.servlet.view.JstlView; |
||||
|
||||
import java.util.Properties; |
||||
|
||||
@Configuration |
||||
public class ServletConfiguration { |
||||
|
||||
@Bean |
||||
public SimpleUrlHandlerMapping podcastUrlMapping(PodcastController podcastController) { |
||||
SimpleUrlHandlerMapping handlerMapping = new SimpleUrlHandlerMapping(); |
||||
handlerMapping.setAlwaysUseFullPath(true); |
||||
Properties properties = new Properties(); |
||||
properties.put("/podcast/**", podcastController); |
||||
handlerMapping.setMappings(properties); |
||||
return handlerMapping; |
||||
} |
||||
|
||||
@Bean |
||||
public ViewResolver viewResolver() { |
||||
InternalResourceViewResolver resolver = new InternalResourceViewResolver(); |
||||
resolver.setViewClass(JstlView.class); |
||||
resolver.setPrefix("/WEB-INF/jsp/"); |
||||
resolver.setSuffix(".jsp"); |
||||
return resolver; |
||||
} |
||||
} |
@ -0,0 +1,26 @@ |
||||
package org.airsonic.player.spring; |
||||
|
||||
import org.airsonic.player.service.SonosService; |
||||
import org.airsonic.player.service.sonos.SonosFaultInterceptor; |
||||
import org.apache.cxf.jaxws.EndpointImpl; |
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.context.annotation.ImportResource; |
||||
|
||||
import javax.xml.ws.Endpoint; |
||||
|
||||
import java.util.Collections; |
||||
|
||||
@Configuration |
||||
@ImportResource({"classpath:META-INF/cxf/cxf.xml", "classpath:META-INF/cxf/cxf-servlet.xml"}) |
||||
public class SonosConfiguration { |
||||
|
||||
@Bean |
||||
public Endpoint sonosEndpoint(SonosService sonosService, SonosFaultInterceptor sonosFaultInterceptor) { |
||||
EndpointImpl endpoint = new EndpointImpl(sonosService); |
||||
endpoint.publish("/Sonos"); |
||||
endpoint.setOutFaultInterceptors(Collections.singletonList(sonosFaultInterceptor)); |
||||
return endpoint; |
||||
} |
||||
|
||||
} |
@ -1,17 +0,0 @@ |
||||
<?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="cacheFactory" class="org.airsonic.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,14 +0,0 @@ |
||||
<?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" |
||||
profile="embed"> |
||||
<bean id="dataSource" |
||||
class="org.apache.commons.dbcp2.BasicDataSource"> |
||||
|
||||
<property name="driverClassName" value="${DatabaseConfigEmbedDriver}" /> |
||||
<property name="url" value="${DatabaseConfigEmbedUrl}" /> |
||||
<property name="username" value="${DatabaseConfigEmbedUsername}" /> |
||||
<property name="password" value="${DatabaseConfigEmbedPassword}" /> |
||||
</bean> |
||||
</beans> |
@ -1,12 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<beans xmlns="http://www.springframework.org/schema/beans" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xmlns:jee="http://www.springframework.org/schema/jee" |
||||
xsi:schemaLocation=" |
||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd |
||||
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd" |
||||
profile="jndi"> |
||||
<jee:jndi-lookup id="dataSource" |
||||
jndi-name="${DatabaseConfigJNDIName}" |
||||
expected-type="javax.sql.DataSource" /> |
||||
</beans> |
@ -1,22 +0,0 @@ |
||||
<?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" |
||||
profile="legacy"> |
||||
|
||||
<bean id="dataSource" |
||||
class="org.springframework.jdbc.datasource.DriverManagerDataSource"> |
||||
<property name="driverClassName" value="org.hsqldb.jdbcDriver" /> |
||||
<property name="url" |
||||
value="#{T(org.airsonic.player.service.SettingsService).defaultJDBCUrl}" /> |
||||
<property name="username" value="sa" /> |
||||
<property name="password" value="" /> |
||||
</bean> |
||||
|
||||
<!-- Overwrite the GenericDaoHelper bean defined in applicationContext-db.xml --> |
||||
<!-- This bean is specific to the legacy embedded HSQLDB database --> |
||||
<bean id="daoHelper" class="org.airsonic.player.dao.LegacyHsqlDaoHelper"> |
||||
<constructor-arg name="dataSource" ref="dataSource" /> |
||||
</bean> |
||||
|
||||
</beans> |
@ -1,41 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<beans xmlns="http://www.springframework.org/schema/beans" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" |
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> |
||||
|
||||
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> |
||||
<constructor-arg ref="dataSource"/> |
||||
</bean> |
||||
|
||||
<bean id="daoHelper" class="org.airsonic.player.dao.GenericDaoHelper"> |
||||
<constructor-arg name="dataSource" ref="dataSource" /> |
||||
</bean> |
||||
|
||||
<import resource="applicationContext-db-jndi.xml" /> |
||||
<import resource="applicationContext-db-embed.xml" /> |
||||
<import resource="applicationContext-db-legacy.xml" /> |
||||
|
||||
<tx:annotation-driven/> |
||||
|
||||
<bean id="rollbackFile" class="java.io.File"> |
||||
<constructor-arg type="java.io.File" index="0" value="#{T(org.airsonic.player.service.SettingsService).airsonicHome}" /> |
||||
<constructor-arg type="java.lang.String" index="1" value="rollback.sql" /> |
||||
</bean> |
||||
|
||||
<bean id="userTableQuote" class="java.lang.String"> |
||||
<constructor-arg value="${DatabaseUsertableQuote:}" /> |
||||
</bean> |
||||
|
||||
<bean id="liquibase" class="org.airsonic.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.airsonic.player.util.Util).getDefaultMusicFolder()}" /> |
||||
<entry key="mysqlVarcharLimit" value="${DatabaseMysqlMaxlength:512}" /> |
||||
<entry key="userTableQuote" value-ref="userTableQuote" /> |
||||
</map> |
||||
</property> |
||||
</bean> |
||||
</beans> |
@ -1,34 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
||||
<beans xmlns="http://www.springframework.org/schema/beans" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xmlns:context="http://www.springframework.org/schema/context" |
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> |
||||
|
||||
<context:property-placeholder /> |
||||
|
||||
<import resource="applicationContext-db.xml" /> |
||||
|
||||
<!-- DAO's --> |
||||
|
||||
<context:component-scan base-package="org.airsonic.player.dao, |
||||
org.airsonic.player.service, |
||||
org.airsonic.player.monitor, |
||||
org.airsonic.player.ajax, |
||||
org.airsonic.player.i18n." /> |
||||
|
||||
<!-- Services --> |
||||
|
||||
<bean id="metaDataParserFactory" class="org.airsonic.player.service.metadata.MetaDataParserFactory"> |
||||
<property name="parsers"> |
||||
<list> |
||||
<ref bean="jaudiotaggerParser" /> |
||||
<ref bean="ffmpegParser" /> |
||||
<ref bean="defaultMetaDataParser" /> |
||||
</list> |
||||
</property> |
||||
</bean> |
||||
|
||||
<!-- AJAX services --> |
||||
|
||||
</beans> |
@ -1,30 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<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"> |
||||
|
||||
<import resource="classpath:META-INF/cxf/cxf.xml"/> |
||||
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/> |
||||
|
||||
<jaxws:endpoint id="sonosEndpoint" implementor="#sonosService" address="/Sonos"> |
||||
<jaxws:outFaultInterceptors> |
||||
<bean class="org.airsonic.player.service.sonos.SonosFaultInterceptor"/> |
||||
</jaxws:outFaultInterceptors> |
||||
</jaxws:endpoint> |
||||
|
||||
<bean id="sonosHelper" class="org.airsonic.player.service.sonos.SonosHelper"> |
||||
<property name="mediaFileService" ref="mediaFileService"/> |
||||
<property name="settingsService" ref="settingsService"/> |
||||
<property name="playlistService" ref="playlistService"/> |
||||
<property name="playerService" ref="playerService"/> |
||||
<property name="transcodingService" ref="transcodingService"/> |
||||
<property name="musicIndexService" ref="musicIndexService"/> |
||||
<property name="searchService" ref="searchServiceImpl"/> |
||||
<property name="ratingService" ref="ratingService"/> |
||||
<property name="lastFmService" ref="lastFmService"/> |
||||
<property name="podcastService" ref="podcastService"/> |
||||
<property name="mediaFileDao" ref="mediaFileDao"/> |
||||
</bean> |
||||
|
||||
</beans> |
@ -1,52 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
||||
<beans xmlns="http://www.springframework.org/schema/beans" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xmlns:context="http://www.springframework.org/schema/context" |
||||
xmlns:mvc="http://www.springframework.org/schema/mvc" |
||||
xsi:schemaLocation=" |
||||
http://www.springframework.org/schema/beans |
||||
http://www.springframework.org/schema/beans/spring-beans.xsd |
||||
http://www.springframework.org/schema/context |
||||
http://www.springframework.org/schema/context/spring-context.xsd |
||||
http://www.springframework.org/schema/mvc |
||||
http://www.springframework.org/schema/mvc/spring-mvc.xsd"> |
||||
|
||||
<mvc:annotation-driven /> |
||||
<context:component-scan base-package="org.airsonic.player.controller, |
||||
org.airsonic.player.validator, |
||||
org.airsonic.player.security"/> |
||||
|
||||
|
||||
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> |
||||
<property name="alwaysUseFullPath" value="true"/> |
||||
<property name="mappings"> |
||||
<props> |
||||
<prop key="/podcast/**">podcastController</prop> |
||||
</props> |
||||
</property> |
||||
</bean> |
||||
|
||||
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> |
||||
<property name="basename" value="org.airsonic.player.i18n.ResourceBundle"/> |
||||
</bean> |
||||
|
||||
<bean id="themeSource" class="org.airsonic.player.theme.CustomThemeSource"> |
||||
<property name="basenamePrefix" value="org.airsonic.player.theme."/> |
||||
<property name="settingsService" ref="settingsService"/> |
||||
</bean> |
||||
|
||||
<bean id="themeResolver" class="org.airsonic.player.theme.CustomThemeResolver"> |
||||
<property name="securityService" ref="securityService"/> |
||||
<property name="settingsService" ref="settingsService"/> |
||||
</bean> |
||||
|
||||
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> |
||||
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> |
||||
<property name="prefix" value="/WEB-INF/jsp/"/> |
||||
<property name="suffix" value=".jsp"/> |
||||
</bean> |
||||
|
||||
<bean class="org.airsonic.player.spring.LoggingExceptionResolver" /> |
||||
|
||||
</beans> |
@ -0,0 +1,75 @@ |
||||
package org.airsonic.player.service.metadata; |
||||
|
||||
import org.airsonic.player.service.SettingsService; |
||||
import org.airsonic.player.util.HomeRule; |
||||
import org.junit.*; |
||||
import org.junit.rules.TemporaryFolder; |
||||
import org.junit.runner.Description; |
||||
import org.junit.runners.model.Statement; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.boot.test.context.SpringBootTest; |
||||
import org.springframework.test.annotation.DirtiesContext; |
||||
import org.springframework.test.context.junit4.rules.SpringClassRule; |
||||
import org.springframework.test.context.junit4.rules.SpringMethodRule; |
||||
|
||||
import java.io.File; |
||||
import java.io.IOException; |
||||
|
||||
import static org.hamcrest.CoreMatchers.instanceOf; |
||||
import static org.junit.Assert.assertThat; |
||||
|
||||
@SpringBootTest |
||||
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) |
||||
public class MetaDataFactoryTestCase { |
||||
|
||||
@ClassRule |
||||
public static final SpringClassRule classRule = new SpringClassRule() { |
||||
HomeRule homeRule = new HomeRule(); |
||||
|
||||
@Override |
||||
public Statement apply(Statement base, Description description) { |
||||
Statement spring = super.apply(base, description); |
||||
return homeRule.apply(spring, description); |
||||
} |
||||
}; |
||||
|
||||
@ClassRule |
||||
public static TemporaryFolder temporaryFolder = new TemporaryFolder(); |
||||
|
||||
private static File someMp3; |
||||
private static File someFlv; |
||||
private static File someJunk; |
||||
|
||||
@BeforeClass |
||||
public static void createTestFiles() throws IOException { |
||||
someMp3 = temporaryFolder.newFile("some.mp3"); |
||||
someFlv = temporaryFolder.newFile("some.flv"); |
||||
someJunk = temporaryFolder.newFile("some.junk"); |
||||
} |
||||
|
||||
@Rule |
||||
public final SpringMethodRule springMethodRule = new SpringMethodRule(); |
||||
|
||||
@Autowired |
||||
MetaDataParserFactory metaDataParserFactory; |
||||
|
||||
@Autowired |
||||
SettingsService settingsService; |
||||
|
||||
@Test |
||||
public void testorder() { |
||||
MetaDataParser parser; |
||||
|
||||
settingsService.setVideoFileTypes("mp3 flv"); |
||||
|
||||
parser = metaDataParserFactory.getParser(someMp3); |
||||
assertThat(parser, instanceOf(JaudiotaggerParser.class)); |
||||
|
||||
parser = metaDataParserFactory.getParser(someFlv); |
||||
assertThat(parser, instanceOf(FFmpegParser.class)); |
||||
|
||||
parser = metaDataParserFactory.getParser(someJunk); |
||||
assertThat(parser, instanceOf(DefaultMetaDataParser.class)); |
||||
} |
||||
|
||||
} |
@ -1,11 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<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.airsonic.player.service.sonos.SonosHelper" /> |
||||
</bean> |
||||
|
||||
</beans> |
@ -1,15 +0,0 @@ |
||||
<?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="#{T(org.airsonic.player.service.SettingsService).defaultJDBCUrl}" /> |
||||
<property name="username" value="sa" /> |
||||
<property name="password" value="" /> |
||||
</bean> |
||||
</beans> |
Loading…
Reference in new issue