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