libbluray | branch: master | hpi1 <[email protected]> | Tue Apr 5 13:48:01 2016 +0300| [2a65274ce3d5391bc4a1a0939475147001f63a07] | committer: hpi1
javax.tv.service.navigation.*: improve compatibility > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=2a65274ce3d5391bc4a1a0939475147001f63a07 --- .../tv/service/navigation/DeliverySystemType.java | 2 ++ .../javax/tv/service/navigation/LocatorFilter.java | 28 ++++++++++++++++++-- .../tv/service/navigation/PreferenceFilter.java | 3 +++ .../tv/service/navigation/ServiceIteratorImpl.java | 13 ++++----- .../tv/service/navigation/ServiceListImpl.java | 11 ++++++-- .../tv/service/navigation/ServiceTypeFilter.java | 4 ++- .../navigation/SortNotAvailableException.java | 1 + 7 files changed, 51 insertions(+), 11 deletions(-) diff --git a/src/libbluray/bdj/java/javax/tv/service/navigation/DeliverySystemType.java b/src/libbluray/bdj/java/javax/tv/service/navigation/DeliverySystemType.java index 2435741..7825218 100644 --- a/src/libbluray/bdj/java/javax/tv/service/navigation/DeliverySystemType.java +++ b/src/libbluray/bdj/java/javax/tv/service/navigation/DeliverySystemType.java @@ -21,6 +21,8 @@ package javax.tv.service.navigation; public class DeliverySystemType { protected DeliverySystemType(String name) { + if (name == null) + throw new NullPointerException("no name"); this.name = name; } diff --git a/src/libbluray/bdj/java/javax/tv/service/navigation/LocatorFilter.java b/src/libbluray/bdj/java/javax/tv/service/navigation/LocatorFilter.java index 8fb7aa3..5dfbee0 100644 --- a/src/libbluray/bdj/java/javax/tv/service/navigation/LocatorFilter.java +++ b/src/libbluray/bdj/java/javax/tv/service/navigation/LocatorFilter.java @@ -23,8 +23,24 @@ import javax.tv.locator.Locator; import javax.tv.locator.InvalidLocatorException; import javax.tv.service.Service; +import org.bluray.net.BDLocator; +import org.bluray.ti.TitleImpl; + public final class LocatorFilter extends ServiceFilter { public LocatorFilter(Locator[] locators) throws InvalidLocatorException { + if (locators == null) + throw new NullPointerException(); + + for (int i = 0; i < locators.length; i++) { + try { + if (locators[i] == null) + throw new InvalidLocatorException(locators[i]); + new BDLocator(locators[i].toExternalForm()); + } catch (org.davic.net.InvalidLocatorException e) { + throw new InvalidLocatorException(locators[i]); + } + } + this.locators = locators; } @@ -36,9 +52,17 @@ public final class LocatorFilter extends ServiceFilter { if (service == null) throw new NullPointerException(); + if (!(service instanceof TitleImpl)) + return false; + + int num = ((TitleImpl)service).getTitleNum(); for (int i = 0; i < locators.length; i++) { - if (locators[i].equals(service.getLocator())) - return true; + + try { + BDLocator bdl = new BDLocator(locators[i].toExternalForm()); + if (bdl.getTitleNumber() == num) + return true; + } catch (org.davic.net.InvalidLocatorException e) { } } return false; diff --git a/src/libbluray/bdj/java/javax/tv/service/navigation/PreferenceFilter.java b/src/libbluray/bdj/java/javax/tv/service/navigation/PreferenceFilter.java index 4297250..b44a3b8 100644 --- a/src/libbluray/bdj/java/javax/tv/service/navigation/PreferenceFilter.java +++ b/src/libbluray/bdj/java/javax/tv/service/navigation/PreferenceFilter.java @@ -24,6 +24,9 @@ import javax.tv.service.Service; public final class PreferenceFilter extends ServiceFilter { public PreferenceFilter(FavoriteServicesName name) { + System.err.println("No preference"); + if (name == null) + throw new NullPointerException(); throw new IllegalArgumentException(); } diff --git a/src/libbluray/bdj/java/javax/tv/service/navigation/ServiceIteratorImpl.java b/src/libbluray/bdj/java/javax/tv/service/navigation/ServiceIteratorImpl.java index 441cb5b..e66eb2f 100644 --- a/src/libbluray/bdj/java/javax/tv/service/navigation/ServiceIteratorImpl.java +++ b/src/libbluray/bdj/java/javax/tv/service/navigation/ServiceIteratorImpl.java @@ -19,6 +19,7 @@ package javax.tv.service.navigation; import java.util.LinkedList; +import java.util.NoSuchElementException; import javax.tv.service.Service; @@ -36,15 +37,15 @@ public class ServiceIteratorImpl implements ServiceIterator { } public Service nextService() { - if (index < services.size()) - return (Service)services.get(index++); - return null; + if (!hasNext()) + throw new NoSuchElementException("End of list reached"); + return (Service)services.get(index++); } public Service previousService() { - if (index > 0) - return (Service)services.get(--index); - return null; + if (!hasPrevious()) + throw new NoSuchElementException("Start of list reached"); + return (Service)services.get(--index); } public boolean hasNext() { diff --git a/src/libbluray/bdj/java/javax/tv/service/navigation/ServiceListImpl.java b/src/libbluray/bdj/java/javax/tv/service/navigation/ServiceListImpl.java index 9846ca3..0ecb6d5 100644 --- a/src/libbluray/bdj/java/javax/tv/service/navigation/ServiceListImpl.java +++ b/src/libbluray/bdj/java/javax/tv/service/navigation/ServiceListImpl.java @@ -53,27 +53,34 @@ public class ServiceListImpl implements ServiceList { try { bdLocator = new BDLocator(locator.toExternalForm()); } catch (org.davic.net.InvalidLocatorException e) { + System.err.println("invalid locator"); throw new InvalidLocatorException(locator); } } else { bdLocator = (BDLocator)locator; } int title = bdLocator.getTitleNumber(); - if (title < 0) + if (title < 0) { + System.err.println("invalid title in locator"); throw new InvalidLocatorException(locator); + } for (int i = 0; i < size(); i++) { TitleImpl ti = (TitleImpl)services.get(i); if (((TitleImpl)services.get(i)).getTitleNum() == title) return ti; } + System.err.println("findService: " + locator + " not found"); return null; } public ServiceList filterServices(ServiceFilter filter) { + if (filter == null) { + System.err.println("null service filter"); + } LinkedList list = new LinkedList(); for (int i = 0; i < size(); i++) { Service service = getService(i); - if (filter.accept(service)) + if (filter == null || filter.accept(service)) list.add(service); } return new ServiceListImpl(list); diff --git a/src/libbluray/bdj/java/javax/tv/service/navigation/ServiceTypeFilter.java b/src/libbluray/bdj/java/javax/tv/service/navigation/ServiceTypeFilter.java index 2ab7160..1a7ad1b 100644 --- a/src/libbluray/bdj/java/javax/tv/service/navigation/ServiceTypeFilter.java +++ b/src/libbluray/bdj/java/javax/tv/service/navigation/ServiceTypeFilter.java @@ -33,7 +33,9 @@ public final class ServiceTypeFilter extends ServiceFilter { } public boolean accept(Service service) { - return service.getServiceType().equals(type); + if (service == null) + throw new NullPointerException(); + return service.getServiceType() == type; } private ServiceType type; diff --git a/src/libbluray/bdj/java/javax/tv/service/navigation/SortNotAvailableException.java b/src/libbluray/bdj/java/javax/tv/service/navigation/SortNotAvailableException.java index 2d02a5e..8b2a051 100644 --- a/src/libbluray/bdj/java/javax/tv/service/navigation/SortNotAvailableException.java +++ b/src/libbluray/bdj/java/javax/tv/service/navigation/SortNotAvailableException.java @@ -27,6 +27,7 @@ public class SortNotAvailableException extends SIException } public SortNotAvailableException(String reason) { + super(reason); } private static final long serialVersionUID = 5524379730037808067L; _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
