Removed synchronized from dao layer and replaced with transactions
Also improved tests to be more spring like Signed-off-by: Andrew DeMaria <lostonamountain@gmail.com>
This commit is contained in:
@@ -15,8 +15,6 @@ import java.util.stream.Collectors;
|
||||
|
||||
public class TestCaseUtils {
|
||||
|
||||
private static final String LIBRESONIC_HOME_FOR_TEST = "/tmp/libresonic";
|
||||
|
||||
private static File libresonicHomeDirForTest = null;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
+15
-3
@@ -1,20 +1,30 @@
|
||||
package org.libresonic.player.dao;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.libresonic.player.domain.InternetRadio;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.libresonic.player.domain.InternetRadio;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
/**
|
||||
* Unit test of {@link InternetRadioDao}.
|
||||
*
|
||||
* @author Sindre Mehus
|
||||
*/
|
||||
public class InternetRadioDaoTestCase extends DaoTestCaseBase {
|
||||
public class InternetRadioDaoTestCase extends DaoTestCaseBean2 {
|
||||
|
||||
protected void setUp() throws Exception {
|
||||
@Autowired
|
||||
InternetRadioDao internetRadioDao;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
getJdbcTemplate().execute("delete from internet_radio");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateInternetRadio() {
|
||||
InternetRadio radio = new InternetRadio("name", "streamUrl", "homePageUrl", true, new Date());
|
||||
internetRadioDao.createInternetRadio(radio);
|
||||
@@ -23,6 +33,7 @@ public class InternetRadioDaoTestCase extends DaoTestCaseBase {
|
||||
assertInternetRadioEquals(radio, newRadio);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateInternetRadio() {
|
||||
InternetRadio radio = new InternetRadio("name", "streamUrl", "homePageUrl", true, new Date());
|
||||
internetRadioDao.createInternetRadio(radio);
|
||||
@@ -39,6 +50,7 @@ public class InternetRadioDaoTestCase extends DaoTestCaseBase {
|
||||
assertInternetRadioEquals(radio, newRadio);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteInternetRadio() {
|
||||
assertEquals("Wrong number of radios.", 0, internetRadioDao.getAllInternetRadios().size());
|
||||
|
||||
|
||||
+15
-4
@@ -19,23 +19,32 @@
|
||||
*/
|
||||
package org.libresonic.player.dao;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.libresonic.player.domain.MusicFolder;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Date;
|
||||
|
||||
import org.libresonic.player.domain.MusicFolder;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
/**
|
||||
* Unit test of {@link MusicFolderDao}.
|
||||
*
|
||||
* @author Sindre Mehus
|
||||
*/
|
||||
public class MusicFolderDaoTestCase extends DaoTestCaseBase {
|
||||
public class MusicFolderDaoTestCase extends DaoTestCaseBean2 {
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
@Autowired
|
||||
MusicFolderDao musicFolderDao;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
getJdbcTemplate().execute("delete from music_folder");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateMusicFolder() {
|
||||
MusicFolder musicFolder = new MusicFolder(new File("path"), "name", true, new Date());
|
||||
musicFolderDao.createMusicFolder(musicFolder);
|
||||
@@ -44,6 +53,7 @@ public class MusicFolderDaoTestCase extends DaoTestCaseBase {
|
||||
assertMusicFolderEquals(musicFolder, newMusicFolder);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateMusicFolder() {
|
||||
MusicFolder musicFolder = new MusicFolder(new File("path"), "name", true, new Date());
|
||||
musicFolderDao.createMusicFolder(musicFolder);
|
||||
@@ -59,6 +69,7 @@ public class MusicFolderDaoTestCase extends DaoTestCaseBase {
|
||||
assertMusicFolderEquals(musicFolder, newMusicFolder);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteMusicFolder() {
|
||||
assertEquals("Wrong number of music folders.", 0, musicFolderDao.getAllMusicFolders().size());
|
||||
|
||||
|
||||
+7
-8
@@ -7,31 +7,30 @@ import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public class MusicFolderDaoMock extends MusicFolderDao {
|
||||
public class MusicFolderTestData {
|
||||
|
||||
private static String baseResources = "/MEDIAS/";
|
||||
|
||||
public static String resolveBaseMediaPath() {
|
||||
String baseDir = MusicFolderDaoMock.class.getResource(baseResources).toString().replace("file:","");
|
||||
String baseDir = MusicFolderTestData.class.getResource(baseResources).toString().replace("file:","");
|
||||
return baseDir;
|
||||
}
|
||||
|
||||
public static String resolveMusicFolderPath() {
|
||||
return (MusicFolderDaoMock.resolveBaseMediaPath() + "Music");
|
||||
return (MusicFolderTestData.resolveBaseMediaPath() + "Music");
|
||||
}
|
||||
|
||||
public static String resolveMusic2FolderPath() {
|
||||
return (MusicFolderDaoMock.resolveBaseMediaPath() + "Music2");
|
||||
return (MusicFolderTestData.resolveBaseMediaPath() + "Music2");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MusicFolder> getAllMusicFolders() {
|
||||
public static List<MusicFolder> getTestMusicFolders() {
|
||||
List<MusicFolder> liste = new ArrayList<>();
|
||||
File musicDir = new File(MusicFolderDaoMock.resolveMusicFolderPath());
|
||||
File musicDir = new File(MusicFolderTestData.resolveMusicFolderPath());
|
||||
MusicFolder musicFolder = new MusicFolder(1,musicDir,"Music",true,new Date());
|
||||
liste.add(musicFolder);
|
||||
|
||||
File music2Dir = new File(MusicFolderDaoMock.resolveMusic2FolderPath());
|
||||
File music2Dir = new File(MusicFolderTestData.resolveMusic2FolderPath());
|
||||
MusicFolder musicFolder2 = new MusicFolder(2,music2Dir,"Music2",true,new Date());
|
||||
liste.add(musicFolder2);
|
||||
return liste;
|
||||
@@ -1,25 +1,34 @@
|
||||
package org.libresonic.player.dao;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.libresonic.player.domain.PlayQueue;
|
||||
import org.libresonic.player.domain.Player;
|
||||
import org.libresonic.player.domain.PlayerTechnology;
|
||||
import org.libresonic.player.domain.TranscodeScheme;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.libresonic.player.domain.Player;
|
||||
import org.libresonic.player.domain.PlayerTechnology;
|
||||
import org.libresonic.player.domain.PlayQueue;
|
||||
import org.libresonic.player.domain.TranscodeScheme;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Unit test of {@link PlayerDao}.
|
||||
*
|
||||
* @author Sindre Mehus
|
||||
*/
|
||||
public class PlayerDaoTestCase extends DaoTestCaseBase {
|
||||
public class PlayerDaoTestCase extends DaoTestCaseBean2 {
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
@Autowired
|
||||
PlayerDao playerDao;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
getJdbcTemplate().execute("delete from player");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreatePlayer() {
|
||||
Player player = new Player();
|
||||
player.setName("name");
|
||||
@@ -41,6 +50,7 @@ public class PlayerDaoTestCase extends DaoTestCaseBase {
|
||||
assertPlayerEquals(player, newPlayer2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDefaultValues() {
|
||||
playerDao.createPlayer(new Player());
|
||||
Player player = playerDao.getAllPlayers().get(0);
|
||||
@@ -50,6 +60,7 @@ public class PlayerDaoTestCase extends DaoTestCaseBase {
|
||||
assertNull("Player client ID should be null by default.", player.getClientId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIdentity() {
|
||||
Player player = new Player();
|
||||
|
||||
@@ -76,6 +87,7 @@ public class PlayerDaoTestCase extends DaoTestCaseBase {
|
||||
assertEquals("Wrong number of players.", 3, playerDao.getAllPlayers().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPlaylist() {
|
||||
Player player = new Player();
|
||||
playerDao.createPlayer(player);
|
||||
@@ -87,6 +99,7 @@ public class PlayerDaoTestCase extends DaoTestCaseBase {
|
||||
assertNotSame("Wrong playlist.", playQueue, player.getPlayQueue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetPlayersForUserAndClientId() {
|
||||
Player player = new Player();
|
||||
player.setUsername("sindre");
|
||||
@@ -108,6 +121,7 @@ public class PlayerDaoTestCase extends DaoTestCaseBase {
|
||||
assertPlayerEquals(player, players.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdatePlayer() {
|
||||
Player player = new Player();
|
||||
playerDao.createPlayer(player);
|
||||
@@ -129,6 +143,7 @@ public class PlayerDaoTestCase extends DaoTestCaseBase {
|
||||
assertPlayerEquals(player, newPlayer);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeletePlayer() {
|
||||
assertEquals("Wrong number of players.", 0, playerDao.getAllPlayers().size());
|
||||
|
||||
|
||||
@@ -1,24 +1,33 @@
|
||||
package org.libresonic.player.dao;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.libresonic.player.domain.PodcastChannel;
|
||||
import org.libresonic.player.domain.PodcastEpisode;
|
||||
import org.libresonic.player.domain.PodcastStatus;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.libresonic.player.domain.PodcastChannel;
|
||||
import org.libresonic.player.domain.PodcastEpisode;
|
||||
import org.libresonic.player.domain.PodcastStatus;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Unit test of {@link PodcastDao}.
|
||||
*
|
||||
* @author Sindre Mehus
|
||||
*/
|
||||
public class PodcastDaoTestCase extends DaoTestCaseBase {
|
||||
public class PodcastDaoTestCase extends DaoTestCaseBean2 {
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
@Autowired
|
||||
PodcastDao podcastDao;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
getJdbcTemplate().execute("delete from podcast_channel");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateChannel() {
|
||||
PodcastChannel channel = new PodcastChannel("http://foo");
|
||||
podcastDao.createChannel(channel);
|
||||
@@ -28,6 +37,7 @@ public class PodcastDaoTestCase extends DaoTestCaseBase {
|
||||
assertChannelEquals(channel, newChannel);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testChannelId() {
|
||||
int channelId = podcastDao.createChannel(new PodcastChannel("http://foo"));
|
||||
|
||||
@@ -42,6 +52,7 @@ public class PodcastDaoTestCase extends DaoTestCaseBase {
|
||||
assertEquals("Error in createChannel.", channelId + 5, podcastDao.createChannel(new PodcastChannel("http://foo")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateChannel() {
|
||||
PodcastChannel channel = new PodcastChannel("http://foo");
|
||||
podcastDao.createChannel(channel);
|
||||
@@ -61,6 +72,7 @@ public class PodcastDaoTestCase extends DaoTestCaseBase {
|
||||
assertChannelEquals(channel, newChannel);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteChannel() {
|
||||
assertEquals("Wrong number of channels.", 0, podcastDao.getAllChannels().size());
|
||||
|
||||
@@ -78,6 +90,7 @@ public class PodcastDaoTestCase extends DaoTestCaseBase {
|
||||
assertEquals("Wrong number of channels.", 0, podcastDao.getAllChannels().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateEpisode() {
|
||||
int channelId = createChannel();
|
||||
PodcastEpisode episode = new PodcastEpisode(null, channelId, "http://bar", "path", "title", "description",
|
||||
@@ -89,6 +102,7 @@ public class PodcastDaoTestCase extends DaoTestCaseBase {
|
||||
assertEpisodeEquals(episode, newEpisode);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetEpisode() {
|
||||
assertNull("Error in getEpisode()", podcastDao.getEpisode(23));
|
||||
|
||||
@@ -102,6 +116,7 @@ public class PodcastDaoTestCase extends DaoTestCaseBase {
|
||||
assertEpisodeEquals(episode, newEpisode);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetEpisodes() {
|
||||
int channelId = createChannel();
|
||||
PodcastEpisode a = new PodcastEpisode(null, channelId, "a", null, null, null,
|
||||
@@ -126,6 +141,7 @@ public class PodcastDaoTestCase extends DaoTestCaseBase {
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testUpdateEpisode() {
|
||||
int channelId = createChannel();
|
||||
PodcastEpisode episode = new PodcastEpisode(null, channelId, "http://bar", null, null, null,
|
||||
@@ -150,6 +166,7 @@ public class PodcastDaoTestCase extends DaoTestCaseBase {
|
||||
assertEpisodeEquals(episode, newEpisode);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteEpisode() {
|
||||
int channelId = createChannel();
|
||||
|
||||
@@ -172,6 +189,7 @@ public class PodcastDaoTestCase extends DaoTestCaseBase {
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testCascadingDelete() {
|
||||
int channelId = createChannel();
|
||||
PodcastEpisode episode = new PodcastEpisode(null, channelId, "http://bar", null, null, null,
|
||||
|
||||
+22
-5
@@ -1,22 +1,34 @@
|
||||
package org.libresonic.player.dao;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.libresonic.player.domain.Player;
|
||||
import org.libresonic.player.domain.Transcoding;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.libresonic.player.domain.Player;
|
||||
import org.libresonic.player.domain.Transcoding;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
/**
|
||||
* Unit test of {@link TranscodingDao}.
|
||||
*
|
||||
* @author Sindre Mehus
|
||||
*/
|
||||
public class TranscodingDaoTestCase extends DaoTestCaseBase {
|
||||
public class TranscodingDaoTestCase extends DaoTestCaseBean2 {
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
@Autowired
|
||||
TranscodingDao transcodingDao;
|
||||
|
||||
@Autowired
|
||||
PlayerDao playerDao;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
getJdbcTemplate().execute("delete from transcoding2");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateTranscoding() {
|
||||
Transcoding transcoding = new Transcoding(null, "name", "sourceFormats", "targetFormat", "step1", "step2", "step3", false);
|
||||
transcodingDao.createTranscoding(transcoding);
|
||||
@@ -25,6 +37,7 @@ public class TranscodingDaoTestCase extends DaoTestCaseBase {
|
||||
assertTranscodingEquals(transcoding, newTranscoding);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateTranscoding() {
|
||||
Transcoding transcoding = new Transcoding(null, "name", "sourceFormats", "targetFormat", "step1", "step2", "step3", false);
|
||||
transcodingDao.createTranscoding(transcoding);
|
||||
@@ -43,6 +56,7 @@ public class TranscodingDaoTestCase extends DaoTestCaseBase {
|
||||
assertTranscodingEquals(transcoding, newTranscoding);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteTranscoding() {
|
||||
assertEquals("Wrong number of transcodings.", 0, transcodingDao.getAllTranscodings().size());
|
||||
|
||||
@@ -59,6 +73,7 @@ public class TranscodingDaoTestCase extends DaoTestCaseBase {
|
||||
assertEquals("Wrong number of transcodings.", 0, transcodingDao.getAllTranscodings().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPlayerTranscoding() {
|
||||
Player player = new Player();
|
||||
playerDao.createPlayer(player);
|
||||
@@ -89,6 +104,7 @@ public class TranscodingDaoTestCase extends DaoTestCaseBase {
|
||||
assertEquals("Wrong number of transcodings.", 0, activeTranscodings.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCascadingDeletePlayer() {
|
||||
Player player = new Player();
|
||||
playerDao.createPlayer(player);
|
||||
@@ -105,6 +121,7 @@ public class TranscodingDaoTestCase extends DaoTestCaseBase {
|
||||
assertEquals("Wrong number of transcodings.", 0, activeTranscodings.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCascadingDeleteTranscoding() {
|
||||
Player player = new Player();
|
||||
playerDao.createPlayer(player);
|
||||
|
||||
@@ -1,29 +1,36 @@
|
||||
package org.libresonic.player.dao;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.libresonic.player.domain.AvatarScheme;
|
||||
import org.libresonic.player.domain.TranscodeScheme;
|
||||
import org.libresonic.player.domain.User;
|
||||
import org.libresonic.player.domain.UserSettings;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.dao.DataIntegrityViolationException;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Unit test of {@link UserDao}.
|
||||
*
|
||||
* @author Sindre Mehus
|
||||
*/
|
||||
public class UserDaoTestCase extends DaoTestCaseBase {
|
||||
public class UserDaoTestCase extends DaoTestCaseBean2 {
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
JdbcTemplate template = getJdbcTemplate();
|
||||
template.execute("delete from user_role");
|
||||
template.execute("delete from user");
|
||||
@Autowired
|
||||
UserDao userDao;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
getJdbcTemplate().execute("delete from user_role");
|
||||
getJdbcTemplate().execute("delete from user");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateUser() {
|
||||
User user = new User("sindre", "secret", "sindre@activeobjects.no", false, 1000L, 2000L, 3000L);
|
||||
user.setAdminRole(true);
|
||||
@@ -42,6 +49,28 @@ public class UserDaoTestCase extends DaoTestCaseBase {
|
||||
assertUserEquals(user, newUser);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateUserTransactionalError() {
|
||||
User user = new User ("muff1nman", "secret", "noemail") {
|
||||
@Override
|
||||
public boolean isPlaylistRole() {
|
||||
throw new RuntimeException();
|
||||
}
|
||||
};
|
||||
|
||||
user.setAdminRole(true);
|
||||
int beforeSize = userDao.getAllUsers().size();
|
||||
boolean caughtException = false;
|
||||
try {
|
||||
userDao.createUser(user);
|
||||
} catch (RuntimeException e) {
|
||||
caughtException = true;
|
||||
}
|
||||
assertTrue("It was expected for createUser to throw an exception", caughtException);
|
||||
assertEquals(beforeSize, userDao.getAllUsers().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateUser() {
|
||||
User user = new User("sindre", "secret", null);
|
||||
user.setAdminRole(true);
|
||||
@@ -81,6 +110,7 @@ public class UserDaoTestCase extends DaoTestCaseBase {
|
||||
assertEquals("Wrong bytes uploaded.", 3, newUser.getBytesUploaded());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetUserByName() {
|
||||
User user = new User("sindre", "secret", null);
|
||||
userDao.createUser(user);
|
||||
@@ -96,6 +126,7 @@ public class UserDaoTestCase extends DaoTestCaseBase {
|
||||
assertNull("Error in getUserByName().", userDao.getUserByName(null));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteUser() {
|
||||
assertEquals("Wrong number of users.", 0, userDao.getAllUsers().size());
|
||||
|
||||
@@ -112,6 +143,7 @@ public class UserDaoTestCase extends DaoTestCaseBase {
|
||||
assertEquals("Wrong number of users.", 0, userDao.getAllUsers().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetRolesForUser() {
|
||||
User user = new User("sindre", "secret", null);
|
||||
user.setAdminRole(true);
|
||||
@@ -130,6 +162,7 @@ public class UserDaoTestCase extends DaoTestCaseBase {
|
||||
assertEquals("Wrong role.", "settings", roles[4]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUserSettings() {
|
||||
assertNull("Error in getUserSettings.", userDao.getUserSettings("sindre"));
|
||||
|
||||
|
||||
+54
@@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
+49
-30
@@ -1,17 +1,24 @@
|
||||
package org.libresonic.player.service;
|
||||
|
||||
import com.codahale.metrics.ConsoleReporter;
|
||||
import com.codahale.metrics.JmxReporter;
|
||||
import com.codahale.metrics.MetricRegistry;
|
||||
import com.codahale.metrics.Timer;
|
||||
import junit.framework.Assert;
|
||||
import junit.framework.TestCase;
|
||||
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.dao.*;
|
||||
import org.libresonic.player.domain.Album;
|
||||
import org.libresonic.player.domain.Artist;
|
||||
import org.libresonic.player.domain.MediaFile;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.libresonic.player.util.LibresonicHomeRule;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.rules.SpringClassRule;
|
||||
import org.springframework.test.context.junit4.rules.SpringMethodRule;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -30,47 +37,59 @@ import java.util.concurrent.TimeUnit;
|
||||
* An empty database is created on the fly.
|
||||
*
|
||||
*/
|
||||
public class MediaScannerServiceTestCase extends TestCase {
|
||||
@ContextConfiguration(locations = {
|
||||
"/applicationContext-service.xml",
|
||||
"/applicationContext-cache.xml",
|
||||
"/applicationContext-testdb.xml",
|
||||
"/applicationContext-mockSonos.xml"})
|
||||
public class MediaScannerServiceTestCase {
|
||||
|
||||
private static String baseResources = "/org/libresonic/player/service/mediaScannerServiceTestCase/";
|
||||
@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();
|
||||
|
||||
private final MetricRegistry metrics = new MetricRegistry();
|
||||
|
||||
@Autowired
|
||||
private MediaScannerService mediaScannerService;
|
||||
|
||||
private MediaScannerService mediaScannerService = null;
|
||||
private MediaFileDao mediaFileDao = null;
|
||||
private MusicFolderDao musicFolderDao = null;
|
||||
private DaoHelper daoHelper = null;
|
||||
private MediaFileService mediaFileService = null;
|
||||
private ArtistDao artistDao = null;
|
||||
private AlbumDao albumDao = null;
|
||||
@Autowired
|
||||
private MediaFileDao mediaFileDao;
|
||||
|
||||
@Autowired
|
||||
private MusicFolderDao musicFolderDao;
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
@Autowired
|
||||
private DaoHelper daoHelper;
|
||||
|
||||
System.setProperty("libresonic.home", TestCaseUtils.libresonicHomePathForTest());
|
||||
@Autowired
|
||||
private MediaFileService mediaFileService;
|
||||
|
||||
TestCaseUtils.cleanLibresonicHomeForTest();
|
||||
@Autowired
|
||||
private ArtistDao artistDao;
|
||||
|
||||
// load spring context
|
||||
ApplicationContext context = TestCaseUtils.loadSpringApplicationContext(baseResources);
|
||||
|
||||
mediaScannerService = (MediaScannerService)context.getBean("mediaScannerService");
|
||||
mediaFileDao = (MediaFileDao)context.getBean("mediaFileDao");
|
||||
musicFolderDao = (MusicFolderDao) context.getBean("musicFolderDao");
|
||||
daoHelper = (DaoHelper) context.getBean("daoHelper");
|
||||
mediaFileService = (MediaFileService) context.getBean("mediaFileService");
|
||||
artistDao = (ArtistDao) context.getBean("artistDao");
|
||||
albumDao = (AlbumDao) context.getBean("albumDao");
|
||||
}
|
||||
@Autowired
|
||||
private AlbumDao albumDao;
|
||||
|
||||
@Autowired
|
||||
private SettingsService settingsService;
|
||||
|
||||
/**
|
||||
* Tests the MediaScannerService by scanning the test media library into an empty database.
|
||||
*/
|
||||
@Test
|
||||
public void testScanLibrary() {
|
||||
MusicFolderTestData.getTestMusicFolders().forEach(musicFolderDao::createMusicFolder);
|
||||
settingsService.clearMusicFolderCache();
|
||||
|
||||
Timer globalTimer = metrics.timer(MetricRegistry.name(MediaScannerServiceTestCase.class, "Timer.global"));
|
||||
|
||||
@@ -85,10 +104,10 @@ public class MediaScannerServiceTestCase extends TestCase {
|
||||
|
||||
|
||||
// Music Folder Music must have 3 children
|
||||
List<MediaFile> listeMusicChildren = mediaFileDao.getChildrenOf(MusicFolderDaoMock.resolveMusicFolderPath());
|
||||
List<MediaFile> listeMusicChildren = mediaFileDao.getChildrenOf(MusicFolderTestData.resolveMusicFolderPath());
|
||||
Assert.assertEquals(3,listeMusicChildren.size());
|
||||
// Music Folder Music2 must have 1 children
|
||||
List<MediaFile> listeMusic2Children = mediaFileDao.getChildrenOf(MusicFolderDaoMock.resolveMusic2FolderPath());
|
||||
List<MediaFile> listeMusic2Children = mediaFileDao.getChildrenOf(MusicFolderTestData.resolveMusic2FolderPath());
|
||||
Assert.assertEquals(1,listeMusic2Children.size());
|
||||
|
||||
System.out.println("--- List of all artists ---");
|
||||
|
||||
@@ -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>
|
||||
-17
@@ -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>
|
||||
-217
@@ -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>
|
||||
Reference in New Issue
Block a user