Hi, Petr.
The fix looks good.
Please update javadoc for:
/**Returns *an Iterator which traverses a* SortedSet of Strings which are*/
public static Set<String> standardEncodings() {}
On 25.07.2014 13:03, Petr Pchelko wrote:
Hello, Sergey.
Why we have a duplicate version of StandardEncodings in AddFlavorTest and
DataFlavorUtil?
To avoid referencing internal DataFlavorUtil.
With best regards. Petr.
On 25 июля 2014 г., at 12:59, Sergey Bylokhov <sergey.bylok...@oracle.com>
wrote:
Hi, Petr.
Why we have a duplicate version of StandardEncodings in AddFlavorTest and
DataFlavorUtil?
On 25.07.2014 12:48, Petr Pchelko wrote:
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 <peter.lev...@gmail.com> 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
--
Best regards, Sergey.
--
Best regards, Sergey.