private DataMap create(DataItem dataItem) { if ((dataItem.getData() == null) && (dataItem.getAssets().size() > 0)) throw new IllegalArgumentException("Cannot create DataMapItem from an empty DataItem."); if (dataItem.getData() == null) return new DataMap(); try { byte[] data = dataItem.getData(); DataMap dataMap = DataMap.fromByteArray(data); if (dataItem.getAssets() != null) { Iterator<String> iterator = dataItem.getAssets().keySet().iterator(); while (iterator.hasNext()) { String key = (String) iterator.next(); DataItemAsset dataItemAsset = (DataItemAsset) dataItem.getAssets().get(key); String[] pathArray = key.split("_@_"); Log.e("spencer", "key = " + key + " pathArray = " + Arrays.toString(pathArray)); DataMap localDataMap2 = dataMap; for (int i = 0; i < pathArray.length - 1; i++) { String str2 = pathArray[(i + 1)]; String[] indexArray = str2.split("_#_"); if (indexArray.length == 1) { localDataMap2 = localDataMap2.getDataMap(pathArray[i]); } else { int j = Integer.parseInt(indexArray[0]); localDataMap2 = (DataMap) localDataMap2.getDataMapArrayList(pathArray[i]).get(j); pathArray[(i + 1)] = indexArray[1]; } } Log.e( "spencer", "putAsset -> " + pathArray[(pathArray.length - 1)] + " " + dataItemAsset.getId()); localDataMap2.putAsset( pathArray[(pathArray.length - 1)], Asset.createFromRef(dataItemAsset.getId())); } } return dataMap; } catch (Exception e) { Log.e("DataMapItem", "parse a DataItem failed.", e); throw new IllegalStateException("parse a DataItem failed.", e); } }