<AWT Dev> [9] Review Request: 8037485 Refactor java.awt.datatransfer to eliminate dependency on AWT
Petr Pchelko
petr.pchelko at oracle.com
Fri Jul 25 08:48:25 UTC 2014
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.levart at 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
>
More information about the awt-dev
mailing list