Merge remote-tracking branch 'origin/pr/1434'
This commit is contained in:
@@ -97,8 +97,8 @@ public class LyricsService {
|
|||||||
Namespace ns = root.getNamespace();
|
Namespace ns = root.getNamespace();
|
||||||
|
|
||||||
String lyric = StringUtils.trimToNull(root.getChildText("Lyric", ns));
|
String lyric = StringUtils.trimToNull(root.getChildText("Lyric", ns));
|
||||||
String song = root.getChildText("LyricSong", ns);
|
String song = root.getChildText("LyricSong", ns);
|
||||||
String artist = root.getChildText("LyricArtist", ns);
|
String artist = root.getChildText("LyricArtist", ns);
|
||||||
|
|
||||||
return new LyricsInfo(lyric, artist, song);
|
return new LyricsInfo(lyric, artist, song);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -244,7 +244,9 @@ public class PlayQueueService {
|
|||||||
HttpServletRequest request = WebContextFactory.get().getHttpServletRequest();
|
HttpServletRequest request = WebContextFactory.get().getHttpServletRequest();
|
||||||
|
|
||||||
InternetRadio radio = internetRadioDao.getInternetRadioById(id);
|
InternetRadio radio = internetRadioDao.getInternetRadioById(id);
|
||||||
if (!radio.isEnabled()) { throw new Exception("Radio is not enabled"); }
|
if (!radio.isEnabled()) {
|
||||||
|
throw new Exception("Radio is not enabled");
|
||||||
|
}
|
||||||
|
|
||||||
Player player = resolvePlayer();
|
Player player = resolvePlayer();
|
||||||
return doPlayInternetRadio(request, player, radio).setStartPlayerAt(0);
|
return doPlayInternetRadio(request, player, radio).setStartPlayerAt(0);
|
||||||
|
|||||||
+1
-1
@@ -56,7 +56,7 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/avatarUpload")
|
@RequestMapping("/avatarUpload")
|
||||||
public class AvatarUploadController {
|
public class AvatarUploadController {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(AvatarUploadController.class);
|
private static final Logger LOG = LoggerFactory.getLogger(AvatarUploadController.class);
|
||||||
private static final int MAX_AVATAR_SIZE = 64;
|
private static final int MAX_AVATAR_SIZE = 64;
|
||||||
|
|||||||
+1
-1
@@ -42,7 +42,7 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/changeCoverArt")
|
@RequestMapping("/changeCoverArt")
|
||||||
public class ChangeCoverArtController {
|
public class ChangeCoverArtController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MediaFileService mediaFileService;
|
private MediaFileService mediaFileService;
|
||||||
|
|||||||
@@ -300,7 +300,7 @@ public class CoverArtController implements LastModified {
|
|||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
is = new FileInputStream(file);
|
is = new FileInputStream(file);
|
||||||
mimeType = StringUtil.getMimeType(FilenameUtils.getExtension(file.getName()));
|
mimeType = StringUtil.getMimeType(FilenameUtils.getExtension(file.getName()));
|
||||||
}
|
}
|
||||||
return Pair.of(is, mimeType);
|
return Pair.of(is, mimeType);
|
||||||
@@ -385,13 +385,11 @@ public class CoverArtController implements LastModified {
|
|||||||
in = getImageInputStream(coverArt);
|
in = getImageInputStream(coverArt);
|
||||||
if (in == null) {
|
if (in == null) {
|
||||||
reason = "getImageInputStream";
|
reason = "getImageInputStream";
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
BufferedImage bimg = ImageIO.read(in);
|
BufferedImage bimg = ImageIO.read(in);
|
||||||
if (bimg == null) {
|
if (bimg == null) {
|
||||||
reason = "ImageIO.read";
|
reason = "ImageIO.read";
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return scale(bimg, size, size);
|
return scale(bimg, size, size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/editTags")
|
@RequestMapping("/editTags")
|
||||||
public class EditTagsController {
|
public class EditTagsController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MetaDataParserFactory metaDataParserFactory;
|
private MetaDataParserFactory metaDataParserFactory;
|
||||||
|
|||||||
+1
-1
@@ -40,7 +40,7 @@ import java.util.Locale;
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/generalSettings")
|
@RequestMapping("/generalSettings")
|
||||||
public class GeneralSettingsController {
|
public class GeneralSettingsController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ import static org.springframework.web.bind.ServletRequestUtils.getStringParamete
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/home")
|
@RequestMapping("/home")
|
||||||
public class HomeController {
|
public class HomeController {
|
||||||
|
|
||||||
private static final int LIST_SIZE = 40;
|
private static final int LIST_SIZE = 40;
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ import java.util.*;
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/left")
|
@RequestMapping("/left")
|
||||||
public class LeftController {
|
public class LeftController {
|
||||||
|
|
||||||
// Update this time if you want to force a refresh in clients.
|
// Update this time if you want to force a refresh in clients.
|
||||||
private static final Calendar LAST_COMPATIBILITY_TIME = Calendar.getInstance();
|
private static final Calendar LAST_COMPATIBILITY_TIME = Calendar.getInstance();
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/play.m3u")
|
@RequestMapping("/play.m3u")
|
||||||
public class M3UController {
|
public class M3UController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private PlayerService playerService;
|
private PlayerService playerService;
|
||||||
@@ -89,7 +89,7 @@ public class M3UController {
|
|||||||
}
|
}
|
||||||
out.println("#EXTINF:" + duration + "," + mediaFile.getArtist() + " - " + mediaFile.getTitle());
|
out.println("#EXTINF:" + duration + "," + mediaFile.getArtist() + " - " + mediaFile.getTitle());
|
||||||
|
|
||||||
String urlNoAuth = url + "player=" + player.getId() + "&id=" + mediaFile.getId() + "&suffix=." +
|
String urlNoAuth = url + "player=" + player.getId() + "&id=" + mediaFile.getId() + "&suffix=." +
|
||||||
transcodingService.getSuffix(player, mediaFile, null);
|
transcodingService.getSuffix(player, mediaFile, null);
|
||||||
String urlWithAuth = jwtSecurityService.addJWTToken(urlNoAuth);
|
String urlWithAuth = jwtSecurityService.addJWTToken(urlNoAuth);
|
||||||
out.println(urlWithAuth);
|
out.println(urlWithAuth);
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ import java.util.stream.Collectors;
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/main")
|
@RequestMapping("/main")
|
||||||
public class MainController {
|
public class MainController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SecurityService securityService;
|
private SecurityService securityService;
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/more")
|
@RequestMapping("/more")
|
||||||
public class MoreController {
|
public class MoreController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
|
|||||||
+1
-1
@@ -45,7 +45,7 @@ import java.util.Locale;
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/personalSettings")
|
@RequestMapping("/personalSettings")
|
||||||
public class PersonalSettingsController {
|
public class PersonalSettingsController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
|
|||||||
+1
-1
@@ -49,7 +49,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/playerSettings")
|
@RequestMapping("/playerSettings")
|
||||||
public class PlayerSettingsController {
|
public class PlayerSettingsController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private PlayerService playerService;
|
private PlayerService playerService;
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ import java.util.*;
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/podcast")
|
@RequestMapping("/podcast")
|
||||||
public class PodcastController {
|
public class PodcastController {
|
||||||
|
|
||||||
private static final DateFormat RSS_DATE_FORMAT = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.US);
|
private static final DateFormat RSS_DATE_FORMAT = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.US);
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ import static org.springframework.http.HttpStatus.OK;
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/proxy")
|
@RequestMapping("/proxy")
|
||||||
public class ProxyController {
|
public class ProxyController {
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/right")
|
@RequestMapping("/right")
|
||||||
public class RightController {
|
public class RightController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/settings")
|
@RequestMapping("/settings")
|
||||||
public class SettingsController {
|
public class SettingsController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SecurityService securityService;
|
private SecurityService securityService;
|
||||||
|
|||||||
+3
-7
@@ -44,7 +44,7 @@ import java.util.*;
|
|||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/createShare")
|
@RequestMapping("/createShare")
|
||||||
public class ShareManagementController {
|
public class ShareManagementController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MediaFileService mediaFileService;
|
private MediaFileService mediaFileService;
|
||||||
@@ -109,15 +109,11 @@ public class ShareManagementController {
|
|||||||
for (int index : indexes) {
|
for (int index : indexes) {
|
||||||
result.add(children.get(index));
|
result.add(children.get(index));
|
||||||
}
|
}
|
||||||
}
|
} else if (playerId != null) {
|
||||||
|
|
||||||
else if (playerId != null) {
|
|
||||||
Player player = playerService.getPlayerById(playerId);
|
Player player = playerService.getPlayerById(playerId);
|
||||||
PlayQueue playQueue = player.getPlayQueue();
|
PlayQueue playQueue = player.getPlayQueue();
|
||||||
result = playQueue.getFiles();
|
result = playQueue.getFiles();
|
||||||
}
|
} else if (playlistId != null) {
|
||||||
|
|
||||||
else if (playlistId != null) {
|
|
||||||
result = playlistService.getFilesInPlaylist(playlistId);
|
result = playlistService.getFilesInPlaylist(playlistId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-2
@@ -2244,8 +2244,7 @@ public class SubsonicRESTController {
|
|||||||
|
|
||||||
private AlbumInfo getAlbumInfoInternal(AlbumNotes albumNotes) {
|
private AlbumInfo getAlbumInfoInternal(AlbumNotes albumNotes) {
|
||||||
AlbumInfo result = new AlbumInfo();
|
AlbumInfo result = new AlbumInfo();
|
||||||
if (albumNotes != null)
|
if (albumNotes != null) {
|
||||||
{
|
|
||||||
result.setNotes(albumNotes.getNotes());
|
result.setNotes(albumNotes.getNotes());
|
||||||
result.setMusicBrainzId(albumNotes.getMusicBrainzId());
|
result.setMusicBrainzId(albumNotes.getMusicBrainzId());
|
||||||
result.setLastFmUrl(albumNotes.getLastFmUrl());
|
result.setLastFmUrl(albumNotes.getLastFmUrl());
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ public class AbstractDao {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected String questionMarks(String columns) {
|
protected String questionMarks(String columns) {
|
||||||
int numberOfColumns = StringUtils.countMatches(columns, ",") + 1;
|
int numberOfColumns = StringUtils.countMatches(columns, ",") + 1;
|
||||||
return StringUtils.repeat("?", ", ", numberOfColumns);
|
return StringUtils.repeat("?", ", ", numberOfColumns);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,6 +179,8 @@ public class AbstractDao {
|
|||||||
this.daoHelper = daoHelper;
|
this.daoHelper = daoHelper;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void checkpoint() { daoHelper.checkpoint(); }
|
public void checkpoint() {
|
||||||
|
daoHelper.checkpoint();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,5 +7,7 @@ public class InternetRadioSource {
|
|||||||
this.streamUrl = streamUrl;
|
this.streamUrl = streamUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getStreamUrl() { return streamUrl; }
|
public String getStreamUrl() {
|
||||||
|
return streamUrl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ public class MediaFileComparator implements Comparator<MediaFile> {
|
|||||||
return a.getPath().compareToIgnoreCase(b.getPath());
|
return a.getPath().compareToIgnoreCase(b.getPath());
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T extends Comparable<T>> int nullSafeCompare(T a, T b, boolean nullIsSmaller) {
|
private <T extends Comparable<T>> int nullSafeCompare(T a, T b, boolean nullIsSmaller) {
|
||||||
if (a == null && b == null) {
|
if (a == null && b == null) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -356,14 +356,18 @@ public class PlayQueue {
|
|||||||
*
|
*
|
||||||
* @return Whether the play queue is a shuffle radio mode.
|
* @return Whether the play queue is a shuffle radio mode.
|
||||||
*/
|
*/
|
||||||
public synchronized boolean isShuffleRadioEnabled() { return this.randomSearchCriteria != null; }
|
public synchronized boolean isShuffleRadioEnabled() {
|
||||||
|
return this.randomSearchCriteria != null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns whether the play queue is a internet radio mode.
|
* Returns whether the play queue is a internet radio mode.
|
||||||
*
|
*
|
||||||
* @return Whether the play queue is a internet radio mode.
|
* @return Whether the play queue is a internet radio mode.
|
||||||
*/
|
*/
|
||||||
public synchronized boolean isInternetRadioEnabled() { return this.internetRadio != null; }
|
public synchronized boolean isInternetRadioEnabled() {
|
||||||
|
return this.internetRadio != null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Revert the last operation.
|
* Revert the last operation.
|
||||||
@@ -405,28 +409,36 @@ public class PlayQueue {
|
|||||||
*
|
*
|
||||||
* @param internetRadio An internet radio, or <code>null</code> if this is not an internet radio playlist
|
* @param internetRadio An internet radio, or <code>null</code> if this is not an internet radio playlist
|
||||||
*/
|
*/
|
||||||
public void setInternetRadio(InternetRadio internetRadio) { this.internetRadio = internetRadio; }
|
public void setInternetRadio(InternetRadio internetRadio) {
|
||||||
|
this.internetRadio = internetRadio;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the current internet radio
|
* Gets the current internet radio
|
||||||
*
|
*
|
||||||
* @return The current internet radio, or <code>null</code> if this is not an internet radio playlist
|
* @return The current internet radio, or <code>null</code> if this is not an internet radio playlist
|
||||||
*/
|
*/
|
||||||
public InternetRadio getInternetRadio() { return internetRadio; }
|
public InternetRadio getInternetRadio() {
|
||||||
|
return internetRadio;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the criteria used to generate this random playlist
|
* Returns the criteria used to generate this random playlist
|
||||||
*
|
*
|
||||||
* @return The search criteria, or <code>null</code> if this is not a random playlist.
|
* @return The search criteria, or <code>null</code> if this is not a random playlist.
|
||||||
*/
|
*/
|
||||||
public synchronized RandomSearchCriteria getRandomSearchCriteria() { return randomSearchCriteria; }
|
public synchronized RandomSearchCriteria getRandomSearchCriteria() {
|
||||||
|
return randomSearchCriteria;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the criteria used to generate this random playlist
|
* Sets the criteria used to generate this random playlist
|
||||||
*
|
*
|
||||||
* @param randomSearchCriteria The search criteria, or <code>null</code> if this is not a random playlist.
|
* @param randomSearchCriteria The search criteria, or <code>null</code> if this is not a random playlist.
|
||||||
*/
|
*/
|
||||||
public synchronized void setRandomSearchCriteria(RandomSearchCriteria randomSearchCriteria) { this.randomSearchCriteria = randomSearchCriteria; }
|
public synchronized void setRandomSearchCriteria(RandomSearchCriteria randomSearchCriteria) {
|
||||||
|
this.randomSearchCriteria = randomSearchCriteria;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the total length in bytes.
|
* Returns the total length in bytes.
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ public class MetricsManager {
|
|||||||
|
|
||||||
public Timer timer(Class clazz, String name) {
|
public Timer timer(Class clazz, String name) {
|
||||||
com.codahale.metrics.Timer t = metrics.timer(MetricRegistry.name(clazz,name));
|
com.codahale.metrics.Timer t = metrics.timer(MetricRegistry.name(clazz,name));
|
||||||
com.codahale.metrics.Timer.Context tContext = t.time();
|
com.codahale.metrics.Timer.Context tContext = t.time();
|
||||||
return new Timer(tContext);
|
return new Timer(tContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,7 +143,7 @@ public class MetricsManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() {
|
public void close() {
|
||||||
// Does nothing
|
// Does nothing
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-7
@@ -76,19 +76,15 @@ public class JWTRequestParameterProcessingFilter implements Filter {
|
|||||||
// authentication
|
// authentication
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
} catch (InternalAuthenticationServiceException failed) {
|
||||||
catch (InternalAuthenticationServiceException failed) {
|
|
||||||
LOG.error(
|
LOG.error(
|
||||||
"An internal error occurred while trying to authenticate the user.",
|
"An internal error occurred while trying to authenticate the user.",
|
||||||
failed);
|
failed);
|
||||||
unsuccessfulAuthentication(request, response, failed);
|
unsuccessfulAuthentication(request, response, failed);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
} catch (AuthenticationException e) {
|
||||||
catch (AuthenticationException failed) {
|
unsuccessfulAuthentication(request, response, e);
|
||||||
// Authentication failed
|
|
||||||
unsuccessfulAuthentication(request, response, failed);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -43,14 +43,18 @@ public class InternetRadioService {
|
|||||||
* Generic exception class for playlists.
|
* Generic exception class for playlists.
|
||||||
*/
|
*/
|
||||||
private class PlaylistException extends Exception {
|
private class PlaylistException extends Exception {
|
||||||
public PlaylistException(String message) { super(message); }
|
public PlaylistException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Exception thrown when the remote playlist is too large to be parsed completely.
|
* Exception thrown when the remote playlist is too large to be parsed completely.
|
||||||
*/
|
*/
|
||||||
private class PlaylistTooLarge extends PlaylistException {
|
private class PlaylistTooLarge extends PlaylistException {
|
||||||
public PlaylistTooLarge(String message) { super(message); }
|
public PlaylistTooLarge(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -66,7 +70,9 @@ public class InternetRadioService {
|
|||||||
* Exception thrown when too many redirects occurred when retrieving a remote playlist.
|
* Exception thrown when too many redirects occurred when retrieving a remote playlist.
|
||||||
*/
|
*/
|
||||||
private class PlaylistHasTooManyRedirects extends PlaylistException {
|
private class PlaylistHasTooManyRedirects extends PlaylistException {
|
||||||
public PlaylistHasTooManyRedirects(String message) { super(message); }
|
public PlaylistHasTooManyRedirects(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public InternetRadioService() {
|
public InternetRadioService() {
|
||||||
@@ -233,8 +239,7 @@ public class InternetRadioService {
|
|||||||
} else {
|
} else {
|
||||||
playlist = SpecificPlaylistFactory.getInstance().readFrom(in, contentEncoding);
|
playlist = SpecificPlaylistFactory.getInstance().readFrom(in, contentEncoding);
|
||||||
}
|
}
|
||||||
}
|
} finally {
|
||||||
finally {
|
|
||||||
urlConnection.disconnect();
|
urlConnection.disconnect();
|
||||||
}
|
}
|
||||||
if (playlist == null) {
|
if (playlist == null) {
|
||||||
|
|||||||
@@ -270,8 +270,7 @@ public class MediaScannerService {
|
|||||||
}
|
}
|
||||||
if (file.isAlbum()) {
|
if (file.isAlbum()) {
|
||||||
genres.incrementAlbumCount(genre);
|
genres.incrementAlbumCount(genre);
|
||||||
}
|
} else if (file.isAudio()) {
|
||||||
else if (file.isAudio()) {
|
|
||||||
genres.incrementSongCount(genre);
|
genres.incrementSongCount(genre);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class NetworkService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String baseUrl = uri.toString() + "/";
|
String baseUrl = uri.toString() + "/";
|
||||||
LOG.debug("Calculated base url to " + baseUrl);
|
LOG.debug("Calculated base url to " + baseUrl);
|
||||||
return baseUrl;
|
return baseUrl;
|
||||||
} catch (MalformedURLException | URISyntaxException e) {
|
} catch (MalformedURLException | URISyntaxException e) {
|
||||||
throw new RuntimeException("Could not calculate base url: " + e.getMessage());
|
throw new RuntimeException("Could not calculate base url: " + e.getMessage());
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ public class DocumentFactory {
|
|||||||
doc.add(new StoredField(field, value, TYPE_KEY));
|
doc.add(new StoredField(field, value, TYPE_KEY));
|
||||||
};
|
};
|
||||||
|
|
||||||
private BiConsumer<@NonNull Document, @NonNull String> fieldMediatype = (doc, value) ->
|
private BiConsumer<@NonNull Document, @NonNull String> fieldMediatype = (doc, value) ->
|
||||||
fieldKey.accept(doc, FieldNames.MEDIA_TYPE, value);
|
fieldKey.accept(doc, FieldNames.MEDIA_TYPE, value);
|
||||||
|
|
||||||
private BiConsumer<@NonNull Document, @NonNull String> fieldFolderPath = (doc, value) ->
|
private BiConsumer<@NonNull Document, @NonNull String> fieldFolderPath = (doc, value) ->
|
||||||
|
|||||||
+2
-2
@@ -44,9 +44,9 @@ public class SearchServiceImpl implements SearchService {
|
|||||||
private static final Logger LOG = LoggerFactory.getLogger(SearchServiceImpl.class);
|
private static final Logger LOG = LoggerFactory.getLogger(SearchServiceImpl.class);
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private QueryFactory queryFactory;
|
private QueryFactory queryFactory;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IndexManager indexManager;
|
private IndexManager indexManager;
|
||||||
@Autowired
|
@Autowired
|
||||||
private SearchServiceUtilities util;
|
private SearchServiceUtilities util;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -117,7 +117,7 @@ public class AlbumUpnpProcessor extends UpnpContentProcessor <Album, MediaFile>
|
|||||||
List<Album> albumList = null;
|
List<Album> albumList = null;
|
||||||
if (album.getComment().startsWith(ALL_BY_ARTIST)) {
|
if (album.getComment().startsWith(ALL_BY_ARTIST)) {
|
||||||
ArtistUpnpProcessor ap = getDispatcher().getArtistProcessor();
|
ArtistUpnpProcessor ap = getDispatcher().getArtistProcessor();
|
||||||
albumList = ap.getChildren(ap.getItemById(album.getComment().replaceAll(ALL_BY_ARTIST + "_", "")));
|
albumList = ap.getChildren(ap.getItemById(album.getComment().replaceAll(ALL_BY_ARTIST + "_", "")));
|
||||||
} else if (album.getComment().equalsIgnoreCase(ALL_RECENT)) {
|
} else if (album.getComment().equalsIgnoreCase(ALL_RECENT)) {
|
||||||
albumList = getDispatcher().getRecentAlbumProcessor().getAllItems();
|
albumList = getDispatcher().getRecentAlbumProcessor().getAllItems();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+1
-1
@@ -73,7 +73,7 @@ public class ArtistUpnpProcessor extends UpnpContentProcessor <Artist, Album> {
|
|||||||
return getArtistDao().getArtist(Integer.parseInt(id));
|
return getArtistDao().getArtist(Integer.parseInt(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Album> getChildren(Artist artist) {
|
public List<Album> getChildren(Artist artist) {
|
||||||
List<MusicFolder> allFolders = getDispatcher().getSettingsService().getAllMusicFolders();
|
List<MusicFolder> allFolders = getDispatcher().getSettingsService().getAllMusicFolders();
|
||||||
List<Album> allAlbums = getAlbumProcessor().getAlbumDao().getAlbumsForArtist(artist.getName(), allFolders);
|
List<Album> allAlbums = getAlbumProcessor().getAlbumDao().getAlbumsForArtist(artist.getName(), allFolders);
|
||||||
if (allAlbums.size() > 1) {
|
if (allAlbums.size() > 1) {
|
||||||
|
|||||||
+1
-1
@@ -93,7 +93,7 @@ public class GenreUpnpProcessor extends UpnpContentProcessor <Genre, MediaFile>
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<MediaFile> getChildren(Genre item) {
|
public List<MediaFile> getChildren(Genre item) {
|
||||||
List<MusicFolder> allFolders = getDispatcher().getSettingsService().getAllMusicFolders();
|
List<MusicFolder> allFolders = getDispatcher().getSettingsService().getAllMusicFolders();
|
||||||
return getDispatcher().getMediaFileProcessor().getMediaFileDao().getSongsByGenre(item.getName(), 0, Integer.MAX_VALUE, allFolders);
|
return getDispatcher().getMediaFileProcessor().getMediaFileDao().getSongsByGenre(item.getName(), 0, Integer.MAX_VALUE, allFolders);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -125,7 +125,7 @@ public abstract class UpnpContentProcessor<T extends Object, U extends Object> {
|
|||||||
SortCriterion[] orderBy) {
|
SortCriterion[] orderBy) {
|
||||||
DIDLContent didl = new DIDLContent();
|
DIDLContent didl = new DIDLContent();
|
||||||
|
|
||||||
Class clazz = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
|
Class clazz = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
|
||||||
|
|
||||||
try {
|
try {
|
||||||
List<MusicFolder> allFolders = getDispatchingContentDirectory().getSettingsService().getAllMusicFolders();
|
List<MusicFolder> allFolders = getDispatchingContentDirectory().getSettingsService().getAllMusicFolders();
|
||||||
|
|||||||
+1
-1
@@ -38,7 +38,7 @@ public class RegisterPrecompiledJSPInitializer implements ServletContextInitiali
|
|||||||
|
|
||||||
private static void registerPrecompiledJSPs(ServletContext servletContext) {
|
private static void registerPrecompiledJSPs(ServletContext servletContext) {
|
||||||
WebApp webApp = parseXmlFragment();
|
WebApp webApp = parseXmlFragment();
|
||||||
for (ServletDef def : webApp.getServletDefs()) {
|
for (ServletDef def : webApp.getServletDefs()) {
|
||||||
LOG.trace("Registering precompiled JSP: {} -> {}", def.getName(), def.getSclass());
|
LOG.trace("Registering precompiled JSP: {} -> {}", def.getName(), def.getSclass());
|
||||||
ServletRegistration.Dynamic reg = servletContext.addServlet(def.getName(), def.getSclass());
|
ServletRegistration.Dynamic reg = servletContext.addServlet(def.getName(), def.getSclass());
|
||||||
// Need to set loadOnStartup somewhere between 0 and 128. 0 is highest priority. 99 should be fine
|
// Need to set loadOnStartup somewhere between 0 and 128. 0 is highest priority. 99 should be fine
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import java.util.Properties;
|
|||||||
import java.util.SortedMap;
|
import java.util.SortedMap;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
public class MissingTranslations {
|
public class MissingTranslations {
|
||||||
|
|
||||||
public static void main(String[] args) throws IOException {
|
public static void main(String[] args) throws IOException {
|
||||||
String[] locales = {"da", "de", "es", "pt", "fi", "fr", "is", "it", "ja_JP", "mk", "nl", "no", "pl", "ru", "sl", "sv", "zh_CN", "zh_TW"};
|
String[] locales = {"da", "de", "es", "pt", "fi", "fr", "is", "it", "ja_JP", "mk", "nl", "no", "pl", "ru", "sl", "sv", "zh_CN", "zh_TW"};
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class VersionTestCase extends TestCase {
|
|||||||
/**
|
/**
|
||||||
* Tests that equals(), hashCode(), toString() and compareTo() works.
|
* Tests that equals(), hashCode(), toString() and compareTo() works.
|
||||||
*/
|
*/
|
||||||
public void testVersion() {
|
public void testVersion() {
|
||||||
doTestVersion("0.0", "0.1");
|
doTestVersion("0.0", "0.1");
|
||||||
doTestVersion("1.5", "2.3");
|
doTestVersion("1.5", "2.3");
|
||||||
doTestVersion("2.3", "2.34");
|
doTestVersion("2.3", "2.34");
|
||||||
|
|||||||
+1
-1
@@ -69,7 +69,7 @@ public class QueryFactoryTestCase {
|
|||||||
new MusicFolder(FID2, new File(PATH2), "music2", true, new java.util.Date());
|
new MusicFolder(FID2, new File(PATH2), "music2", true, new java.util.Date());
|
||||||
|
|
||||||
private static final List<MusicFolder> SINGLE_FOLDERS = Arrays.asList(MUSIC_FOLDER1);
|
private static final List<MusicFolder> SINGLE_FOLDERS = Arrays.asList(MUSIC_FOLDER1);
|
||||||
private static final List<MusicFolder> MULTI_FOLDERS = Arrays.asList(MUSIC_FOLDER1, MUSIC_FOLDER2);
|
private static final List<MusicFolder> MULTI_FOLDERS = Arrays.asList(MUSIC_FOLDER1, MUSIC_FOLDER2);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ public class PasswordSettingsValidatorTestCase extends TestCase {
|
|||||||
PasswordSettingsValidator psv = new PasswordSettingsValidator();
|
PasswordSettingsValidator psv = new PasswordSettingsValidator();
|
||||||
Errors errors = new BeanPropertyBindingResult(psc, "psv");
|
Errors errors = new BeanPropertyBindingResult(psc, "psv");
|
||||||
psv.validate(psc, errors);
|
psv.validate(psc, errors);
|
||||||
return errors;
|
return errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testValidateEmptyPassword() {
|
public void testValidateEmptyPassword() {
|
||||||
|
|||||||
@@ -10,6 +10,11 @@
|
|||||||
|
|
||||||
<property name="fileExtensions" value="java, properties, xml"/>
|
<property name="fileExtensions" value="java, properties, xml"/>
|
||||||
|
|
||||||
|
<module name="RegexpSingleline">
|
||||||
|
<property name="format" value="\s+$"/>
|
||||||
|
<property name="message" value="Unnecessary trailing whitespace"/>
|
||||||
|
</module>
|
||||||
|
|
||||||
<module name="FileTabCharacter"/>
|
<module name="FileTabCharacter"/>
|
||||||
|
|
||||||
<!-- This is a temporary workaround until ^M line endings is added to upstream checkstyle -->
|
<!-- This is a temporary workaround until ^M line endings is added to upstream checkstyle -->
|
||||||
@@ -39,6 +44,7 @@
|
|||||||
<module name="EqualsHashCode"/>
|
<module name="EqualsHashCode"/>
|
||||||
<module name="Indentation"/>
|
<module name="Indentation"/>
|
||||||
<module name="InnerAssignment"/>
|
<module name="InnerAssignment"/>
|
||||||
|
<module name="LeftCurly"/>
|
||||||
<module name="MethodParamPad"/>
|
<module name="MethodParamPad"/>
|
||||||
<module name="MultipleVariableDeclarations"/>
|
<module name="MultipleVariableDeclarations"/>
|
||||||
<module name="NoWhitespaceBefore">
|
<module name="NoWhitespaceBefore">
|
||||||
@@ -50,8 +56,10 @@
|
|||||||
<module name="ParenPadCheck"/>
|
<module name="ParenPadCheck"/>
|
||||||
<module name="RedundantImport"/>
|
<module name="RedundantImport"/>
|
||||||
<module name="RequireThis"/>
|
<module name="RequireThis"/>
|
||||||
|
<module name="RightCurly"/>
|
||||||
<module name="SimplifyBooleanExpression"/>
|
<module name="SimplifyBooleanExpression"/>
|
||||||
<module name="SimplifyBooleanReturn"/>
|
<module name="SimplifyBooleanReturn"/>
|
||||||
|
<module name="SingleSpaceSeparator"/>
|
||||||
<module name="StringLiteralEquality"/>
|
<module name="StringLiteralEquality"/>
|
||||||
<module name="SuperClone"/>
|
<module name="SuperClone"/>
|
||||||
<module name="SuperFinalize"/>
|
<module name="SuperFinalize"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user