public boolean isResourceReference() { return isResourceReference(trimmedValue); }
public static @Nonnull ResName getResourceReference(String value, String defPackage, String defType) { if (!isResourceReference(value)) throw new IllegalArgumentException("not a resource reference: " + value); return ResName.qualifyResName(deref(value).replace("+", ""), defPackage, defType); }
public @Nonnull ResName getResourceReference() { if (!isResourceReference()) throw new RuntimeException("not a resource reference: " + this); return ResName.qualifyResName(deref(trimmedValue).replace("+", ""), contextPackageName, "style"); }
@Nullable public static ResType inferType(String itemString) { ResType itemResType = ResType.inferFromValue(itemString); if (itemResType == ResType.CHAR_SEQUENCE) { if (AttributeResource.isStyleReference(itemString)) { itemResType = ResType.STYLE; } else if (itemString.equals("@null")) { itemResType = ResType.NULL; } else if (AttributeResource.isResourceReference(itemString)) { // This is a reference; no type info needed. itemResType = null; } } return itemResType; }
public String qualify(String value) { if (value == null) return null; if (AttributeResource.isResourceReference(value)) { return "@" + ResName.qualifyResourceName(value.trim().substring(1).replace("+", ""), packageName, "attr"); } else if (AttributeResource.isStyleReference(value)) { return "?" + ResName.qualifyResourceName(value.trim().substring(1), packageName, "attr"); } else { return StringResources.processStringResources(value); } }
private ResName dereferenceAttr(AttributeResource attr) { if (attr.isResourceReference()) { return attr.getResourceReference(); } else if (attr.isStyleReference()) { return attr.getStyleReference(); } throw new RuntimeException("Found a " + attr + " but can't cast it :("); }
@Override public int getStyleAttribute() { String attr = getAttribute(null, "style"); if (attr == null || (!AttributeResource.isResourceReference(attr) && !AttributeResource.isStyleReference(attr))) { return 0; } int style = getResourceId(attr, packageName, "style"); if (style == 0) { // try again with underscores... style = getResourceId(attr.replace('.', '_'), packageName, "style"); } return style; }
private TypedValue parse(Integer attrId, ResName attrResName, String value, String packageName) { AttributeResource attribute = new AttributeResource(attrResName, value, packageName); TypedValue outValue = new TypedValue(); if (attribute.isResourceReference()) { ResName resourceReference = attribute.getResourceReference(); int id = resourceResolver.getIdentifier(resourceReference.name, resourceReference.type, resourceReference.packageName); if (id == 0) { throw new IllegalArgumentException("couldn't resolve " + attribute); } outValue.type = Res_value.TYPE_REFERENCE; outValue.data = id; outValue.resourceId = id; outValue.string = "@" + id; } else { resourceResolver.parseValue(attrId, attrResName, attribute, outValue); } return outValue; } }
type = DataType.NULL; valueInt = TypedValue.DATA_NULL_EMPTY; } else if (AttributeResource.isResourceReference(value)) { ResName resRef = AttributeResource.getResourceReference(value, packageName, null); Integer valueResId = resourceResolver.getIdentifier(resRef.name, resRef.type, resRef.packageName);
if (defStyleAttribute.isResourceReference()) { ResName defStyleResName = defStyleAttribute.getResourceReference(); defStyleFromAttr = resolveStyle(defStyleResName, themeStyleSet); + " in " + themeStyleSet); if (attrValue.isResourceReference()) { styleAttributeResName = attrValue.getResourceReference(); } else if (attrValue.isStyleReference()) {
private int getResourceId(String possiblyQualifiedResourceName, String defaultPackageName, String defaultType) { if (AttributeResource.isNull(possiblyQualifiedResourceName)) return 0; if (AttributeResource.isStyleReference(possiblyQualifiedResourceName)) { ResName styleReference = AttributeResource.getStyleReference(possiblyQualifiedResourceName, defaultPackageName, "attr"); Integer resourceId = resourceTable.getResourceId(styleReference); if (resourceId == null) { throw new Resources.NotFoundException(styleReference.getFullyQualifiedName()); } return resourceId; } if (AttributeResource.isResourceReference(possiblyQualifiedResourceName)) { ResName resourceReference = AttributeResource.getResourceReference(possiblyQualifiedResourceName, defaultPackageName, defaultType); Integer resourceId = resourceTable.getResourceId(resourceReference); if (resourceId == null) { throw new Resources.NotFoundException(resourceReference.getFullyQualifiedName()); } return resourceId; } possiblyQualifiedResourceName = removeLeadingSpecialCharsIfAny(possiblyQualifiedResourceName); ResName resName = ResName.qualifyResName(possiblyQualifiedResourceName, defaultPackageName, defaultType); Integer resourceId = resourceTable.getResourceId(resName); return resourceId == null ? 0 : resourceId; }
private static PermissionGroupInfo createPermissionGroupInfo(Package owner, PermissionGroupItemData itemData) { PermissionGroupInfo permissionGroupInfo = new PermissionGroupInfo(); populatePackageItemInfo(permissionGroupInfo, owner, itemData); permissionGroupInfo.metaData = metaDataToBundle(itemData.getMetaData().getValueMap()); String descriptionRef = itemData.getDescription(); if (descriptionRef != null) { ResName descResName = AttributeResource.getResourceReference(descriptionRef, owner.packageName, "string"); permissionGroupInfo.descriptionRes = RuntimeEnvironment.getAppResourceTable().getResourceId(descResName); } String labelRefOrString = itemData.getLabel(); if (labelRefOrString != null) { if (AttributeResource.isResourceReference(labelRefOrString)) { ResName labelResName = AttributeResource.getResourceReference(labelRefOrString, owner.packageName, "string"); permissionGroupInfo.labelRes = RuntimeEnvironment.getAppResourceTable().getResourceId(labelResName); } else { permissionGroupInfo.nonLocalizedLabel = labelRefOrString; } } return permissionGroupInfo; }
while (attribute.isResourceReference()) { Integer resourceId; ResName resName = attribute.getResourceReference(); } else if (dereferencedRef.getData() instanceof String) { attribute = new AttributeResource(attribute.resName, dereferencedRef.asString(), resName.packageName); if (attribute.isResourceReference()) { continue;
ResName resName = ResName.qualifyResName(attributeSet.getAttributeName(i), defaultPackageName, "attr"); Integer referenceResId = null; if (AttributeResource.isResourceReference(attributeValue)) { referenceResId = attributeSet.getAttributeResourceValue(i, -1);
private static PermissionInfo createPermissionInfo(Package owner, PermissionItemData itemData) { PermissionInfo permissionInfo = new PermissionInfo(); populatePackageItemInfo(permissionInfo, owner, itemData); permissionInfo.group = itemData.getPermissionGroup(); permissionInfo.protectionLevel = decodeProtectionLevel(itemData.getProtectionLevel()); permissionInfo.metaData = metaDataToBundle(itemData.getMetaData().getValueMap()); String descriptionRef = itemData.getDescription(); if (descriptionRef != null) { ResName descResName = AttributeResource.getResourceReference(descriptionRef, owner.packageName, "string"); permissionInfo.descriptionRes = RuntimeEnvironment.getAppResourceTable().getResourceId(descResName); } String labelRefOrString = itemData.getLabel(); if (labelRefOrString != null) { if (AttributeResource.isResourceReference(labelRefOrString)) { ResName labelResName = AttributeResource.getResourceReference(labelRefOrString, owner.packageName, "string"); permissionInfo.labelRes = RuntimeEnvironment.getAppResourceTable().getResourceId(labelResName); } else { permissionInfo.nonLocalizedLabel = labelRefOrString; } } return permissionInfo; }
private TypedValue parse(Integer attrId, ResName attrResName, String value, String packageName) { AttributeResource attribute = new AttributeResource(attrResName, value, packageName); TypedValue outValue = new TypedValue(); if (attribute.isResourceReference()) { ResName resourceReference = attribute.getResourceReference(); int id = resourceResolver.getIdentifier(resourceReference.name, resourceReference.type, resourceReference.packageName); if (id == 0) { throw new IllegalArgumentException("couldn't resolve " + attribute); } outValue.type = Res_value.TYPE_REFERENCE; outValue.data = id; outValue.resourceId = id; outValue.string = "@" + id; } else { resourceResolver.parseValue(attrId, attrResName, attribute, outValue); } return outValue; } }
type = DataType.NULL; valueInt = TypedValue.DATA_NULL_EMPTY; } else if (AttributeResource.isResourceReference(value)) { ResName resRef = AttributeResource.getResourceReference(value, packageName, null); Integer valueResId = resourceResolver.getIdentifier(resRef.name, resRef.type, resRef.packageName);
public String qualify(String value) { if (value == null) return null; if (AttributeResource.isResourceReference(value)) { return "@" + ResName.qualifyResourceName(value.substring(1).replace("+", ""), packageName, "attr"); } else if (AttributeResource.isStyleReference(value)) { return "?" + ResName.qualifyResourceName(value.substring(1), packageName, "attr"); } else { return value; } }
private ResName dereferenceAttr(AttributeResource attr) { if (attr.isResourceReference()) { return attr.getResourceReference(); } else if (attr.isStyleReference()) { return attr.getStyleReference(); } throw new RuntimeException("Found a " + attr + " but can't cast it :("); }
@Override public int getStyleAttribute() { String attr = getAttribute(null, "style"); if (attr == null || (!AttributeResource.isResourceReference(attr) && !AttributeResource.isStyleReference(attr))) { return 0; } return getResourceId(attr, packageName, "style"); }