/** {@inheritDoc} */ @Override public void writeToParcel(Parcel dest, int flags) { boolean[] validDataList = new boolean[MemberData.values().length]; int validDataPos = dest.dataPosition(); dest.writeBooleanArray(validDataList); // Placeholder for real array. if (mPluginId != null) { validDataList[MemberData.PLUGIN_ID.ordinal()] = true; dest.writeString(mPluginId); } if (mNetwork != null) { validDataList[MemberData.NETWORK.ordinal()] = true; dest.writeString(mNetwork); } if (mNetworkUrl != null) { validDataList[MemberData.NETWORK_URL.ordinal()] = true; dest.writeString(mNetworkUrl.toString()); } if (mIconUrl != null) { validDataList[MemberData.ICON_URL.ordinal()] = true; dest.writeString(mIconUrl.toString()); } if (mAuthType != null) { validDataList[MemberData.AUTH_TYPE.ordinal()] = true; dest.writeString(mAuthType); } if (mIconMime != null) { validDataList[MemberData.ICON_MIME.ordinal()] = true; dest.writeString(mIconMime); } if (mOrder != -1) { validDataList[MemberData.ORDER.ordinal()] = true; dest.writeInt(mOrder); } if (mName != null) { validDataList[MemberData.NAME.ordinal()] = true; dest.writeString(mName); } if (mCapabilities != null) { dest.writeInt(mCapabilities.size()); for (IdentityCapability cap : mCapabilities) { cap.writeToParcel(dest, 0); } } else { dest.writeInt(0); } int currentPos = dest.dataPosition(); dest.setDataPosition(validDataPos); dest.writeBooleanArray(validDataList); // Real array. dest.setDataPosition(currentPos); }
/** * Read Identity item from Parcel. * * @param in Parcel containing Identity information. */ private void readFromParcel(Parcel in) { mPluginId = null; mNetwork = null; mNetworkUrl = null; mIconUrl = null; mAuthType = null; mIconMime = null; mOrder = -1; mName = null; mCapabilities = null; boolean[] validDataList = new boolean[MemberData.values().length]; in.readBooleanArray(validDataList); if (validDataList[MemberData.PLUGIN_ID.ordinal()]) { mPluginId = in.readString(); } if (validDataList[MemberData.NETWORK.ordinal()]) { mNetwork = in.readString(); } if (validDataList[MemberData.NETWORK_URL.ordinal()]) { try { mNetworkUrl = new URL(in.readString()); } catch (MalformedURLException e) { LogUtils.logW( "Identity.readFromParcel() " + "MalformedURLException on MemberData.NETWORK_URL"); } } if (validDataList[MemberData.ICON_URL.ordinal()]) { try { mIconUrl = new URL(in.readString()); } catch (MalformedURLException e) { LogUtils.logW( "Identity.readFromParcel() " + "MalformedURLException on MemberData.ICON_URL"); } } if (validDataList[MemberData.AUTH_TYPE.ordinal()]) { mAuthType = in.readString(); } if (validDataList[MemberData.ICON_MIME.ordinal()]) { mIconMime = in.readString(); } if (validDataList[MemberData.ORDER.ordinal()]) { mOrder = in.readInt(); } if (validDataList[MemberData.NAME.ordinal()]) { mName = in.readString(); } int noOfCapabilities = in.readInt(); if (noOfCapabilities > 0) { mCapabilities = new ArrayList<IdentityCapability>(noOfCapabilities); for (int i = 0; i < noOfCapabilities; i++) { IdentityCapability cap = IdentityCapability.CREATOR.createFromParcel(in); mCapabilities.add(cap); } } }