/* CompatibleRequestConverter.java Copyright (c) 2016 NTT DOCOMO,INC. Released under the MIT license http://opensource.org/licenses/mit-license.php */ package org.deviceconnect.android.manager.compat; import android.content.Intent; import org.deviceconnect.android.compat.MessageConverter; import org.deviceconnect.android.manager.DevicePlugin; import org.deviceconnect.android.manager.DevicePluginManager; import org.deviceconnect.android.manager.util.VersionName; import org.deviceconnect.android.profile.DConnectProfile; import java.util.List; /** * リクエストパスの互換性を担保するクラス. * * @author NTT DOCOMO, INC. */ public class CompatibleRequestConverter implements MessageConverter { private static final VersionName OLD_SDK = VersionName.parse("1.0.0"); private final MessageConverter mNewPathConverter = new NewPathConverter(); private final MessageConverter mOldPathConverter = new OldPathConverter(); private final DevicePluginManager mPluginMgr; public CompatibleRequestConverter(final DevicePluginManager pluginMgr) { if (pluginMgr == null) { throw new NullPointerException("pluginMgr is null"); } mPluginMgr = pluginMgr; } @Override public void convert(final Intent request) { if (request == null) { return; } List<DevicePlugin> plugins = mPluginMgr.getDevicePlugins(DConnectProfile.getServiceID(request)); if (plugins != null && plugins.size() > 0) { DevicePlugin plugin = plugins.get(0); if (OLD_SDK.equals(plugin.getPluginSdkVersionName())) { mOldPathConverter.convert(request); } else { mNewPathConverter.convert(request); } } } }