Hello, Peter. Sorry for misunderstanding. I've updated the review: http://cr.openjdk.java.net/~pchelko/9/8037485/webrev.05/
With best regards. Petr. On 25 июля 2014 г., at 10:41, Peter Levart <[email protected]> wrote: > On 07/24/2014 01:22 PM, Petr Pchelko wrote: >> Thank you for the review. >> I’ve updated the fix:http://cr.openjdk.java.net/~pchelko/9/8037485/webrev.04/ >> >> I’ve fixed all suggestions except one: >>> >Another optimization/simplification is possible. You could merge the >>> >DesktopDatatransferServiceHolder and default implementation into one class: >> No, I could not. The default implementation is a member of desktop module >> while DataFlavorUtil is a part of data transfer module. >> > > Hi Petr, > > Sorry, I haven't been clear/precise enough. I meant to say that you could > merge the DesktopDatatransferServiceHolder class and the "fall-back" empty > implementation into one class (instead of having > DesktopDatatransferServiceHolder a separate class and "fall-back" > implementation being anonymous inner class). You save one class and eliminate > some boilerplate: > > public class DataFlavorUtil { > > public static DesktopDatatransferService getDesktopService() { > return DesktopDatatransferServiceImpl.INSTANCE; > } > > private static final class DesktopDatatransferServiceImpl implements > DesktopDatatransferService { > static final DesktopDatatransferService INSTANCE; > static { > ServiceLoader<DesktopDatatransferService> loader = > ServiceLoader.load(DesktopDatatransferService.class, null); > Iterator<DesktopDatatransferService> iterator = loader.iterator(); > if (iterator.hasNext()) { > INSTANCE = iterator.next(); > } else { > INSTANCE = new DesktopDatatransferServiceImpl(); > } > } > > /** > * System singleton FlavorTable. > * Only used if there is no desktop > * to provide an appropriate FlavorMap. > */ > private volatile FlavorMap flavorMap; > > @Override > public void invokeOnEventThread(Runnable r) { > r.run(); > } > > @Override > public String getDefaultUnicodeEncoding() { > return StandardCharsets.UTF_8.name(); > } > > @Override > public FlavorMap getFlavorMap(Supplier<FlavorMap> > supplier) { > FlavorMap map = flavorMap; > if (map == null) { > synchronized (this) { > map = flavorMap; > if (map == null) { > flavorMap = map = supplier.get(); > } > } > } > return map; > } > > @Override > public boolean isDesktopPresent() { > return false; > } > > @Override > public LinkedHashSet<DataFlavor> > getPlatformMappingsForNative(String nat) { > return new LinkedHashSet<>(); > } > > @Override > public LinkedHashSet<String> > getPlatformMappingsForFlavor(DataFlavor df) { > return new LinkedHashSet<>(); > } > > @Override > public void registerTextFlavorProperties(String nat, > String charset, String eoln, String terminators) { > // Not needed if desktop module is absent > } > } > > > > > ...but it is good as is. > > Regards, Peter >
