public static ResName qualifyResName(@Nonnull String possiblyQualifiedResourceName, ResName defaults) { return qualifyResName(possiblyQualifiedResourceName, defaults.packageName, defaults.type); }
public static ResName getStyleReference(String value, String defPackage, String defType) { if (!isStyleReference(value)) throw new IllegalArgumentException("not a style reference: " + value); return ResName.qualifyResName(value.substring(1), defPackage, defType); }
/** * @return null if the resource could not be qualified. */ public static String qualifyResourceName(@Nonnull String possiblyQualifiedResourceName, String defaultPackageName, String defaultType) { ResName resName = qualifyResName(possiblyQualifiedResourceName, defaultPackageName, defaultType); return resName != null ? resName.getFullyQualifiedName() : null; }
public ResName getStyleReference() { if (!isStyleReference()) throw new RuntimeException("not a style reference: " + this); return ResName.qualifyResName(value.substring(1), contextPackageName, "attr"); }
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"); }
@Override public void onEnd(XMLStreamReader xml, XmlContext xmlContext) throws XMLStreamException { ResName attrResName = ResName.qualifyResName(attrName, xmlContext.getPackageName(), "attr"); attributeResources.add(new AttributeResource(attrResName, buf.toString(), xmlContext.getPackageName())); } });
private StyleData getParent(StyleData style) { String parent = getParentStyleName(style); if (parent == null) return null; if (parent.startsWith("@")) parent = parent.substring(1); ResName styleRef = ResName.qualifyResName(parent, style.getPackageName(), "style"); styleRef = dereferenceResName(styleRef); // TODO: Refactor this to a ResourceLoaderChooser ResourceTable resourceProvider = "android".equals(styleRef.packageName) ? systemResourceTable : appResourceTable; TypedResource typedResource = resourceProvider.getValue(styleRef, config); if (typedResource == null) { StringBuilder builder = new StringBuilder("Could not find any resource") .append(" from reference ").append(styleRef) .append(" from ").append(style) .append(" with ").append(theme); throw new RuntimeException(builder.toString()); } Object data = typedResource.getData(); if (data instanceof StyleData) { return (StyleData) data; } else { StringBuilder builder = new StringBuilder(styleRef.toString()) .append(" does not resolve to a Style.") .append(" got ").append(data).append(" instead. ") .append(" from ").append(style) .append(" with ").append(theme); throw new RuntimeException(builder.toString()); } }
@HiddenApi @Implementation public int getResourceIdentifier(String name, String defType, String defPackage) { Integer resourceId = resourceTable.getResourceId(ResName.qualifyResName(name, defPackage, defType)); return resourceId == null ? 0 : resourceId; }
private ResName resolveResource(TypedResource value, ResTable_config config, ResName resName) { while (value != null && value.isReference()) { String s = value.asString(); if (AttributeResource.isNull(s) || AttributeResource.isEmpty(s)) { value = null; } else { String refStr = s.substring(1).replace("+", ""); resName = ResName.qualifyResName(refStr, resName); value = resourceTable.getValue(resName, config); } } return resName; }
private TypedResource resolveResourceValue(TypedResource value, ResTable_config config, ResName resName) { while (value != null && value.isReference()) { String s = value.asString(); if (AttributeResource.isNull(s) || AttributeResource.isEmpty(s)) { value = null; } else { String refStr = s.substring(1).replace("+", ""); resName = ResName.qualifyResName(refStr, resName); value = resourceTable.getValue(resName, config); } } return value; }
String value = valueMap.get(entry.getKey()).toString(); if (value.startsWith("@")) { ResName resName = ResName.qualifyResName(value.substring(1), packageName, null);
@Test public void shouldQualifyResNameFromString() throws Exception { assertThat(ResName.qualifyResName("some.package:type/name", "default_package", "default_type")) .isEqualTo(new ResName("some.package", "type", "name")); assertThat(ResName.qualifyResName("some.package:name", "default_package", "default_type")) .isEqualTo(new ResName("some.package", "default_type", "name")); assertThat(ResName.qualifyResName("type/name", "default_package", "default_type")) .isEqualTo(new ResName("default_package", "type", "name")); assertThat(ResName.qualifyResName("name", "default_package", "default_type")) .isEqualTo(new ResName("default_package", "default_type", "name")); assertThat(ResName.qualifyResName("type/package:name", "default_package", "default_type")) .isEqualTo(new ResName("package", "type", "name")); }
} else { String attrNameStr = resourceResolver.getResourceName(attrId); attrResName = ResName.qualifyResName(attrNameStr, packageName, "attr"); attrNs = (attrResName.packageName.equals("android")) ? ANDROID_NS : AUTO_NS; attrName = attrResName.name;
RuntimeEnvironment.getAppResourceTable() .getResourceId( ResName.qualifyResName( androidManifest.getThemeRef().replace("@", ""), pkg.packageName, "style")); if (androidManifest.getLabelRef() != null) { String fullyQualifiedName = ResName.qualifyResName(androidManifest.getLabelRef(), androidManifest.getPackageName()); Integer id = fullyQualifiedName == null RuntimeEnvironment.getAppResourceTable() .getResourceId( ResName.qualifyResName(themeRef.replace("@", ""), pkg.packageName, "style")); RuntimeEnvironment.getAppResourceTable() .getResourceId( ResName.qualifyResName( data.getLabel().replace("@", ""), pkg.packageName, "string")); if (activityInfo.labelRes == 0) {
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; }
ResName resName = ResName.qualifyResName(attributeSet.getAttributeName(i), defaultPackageName, "attr"); Integer referenceResId = null; if (AttributeResource.isResourceReference(attributeValue)) {
} else { String attrNameStr = resourceResolver.getResourceName(attrId); attrResName = ResName.qualifyResName(attrNameStr, packageName, "attr"); attrNs = (attrResName.packageName.equals("android")) ? ANDROID_NS : AUTO_NS; attrName = attrResName.name;
@Override public void onEnd(XMLStreamReader xml, XmlContext xmlContext) throws XMLStreamException { ResName attrResName = ResName.qualifyResName(attrName, xmlContext.getPackageName(), "attr"); attributeResources.add(new AttributeResource(attrResName, buf.toString(), xmlContext.getPackageName())); } });
private ResName resolveResource(TypedResource value, ResTable_config config, ResName resName) { while (value != null && value.isReference()) { String s = value.asString(); if (AttributeResource.isNull(s) || AttributeResource.isEmpty(s)) { value = null; } else { String refStr = s.substring(1).replace("+", ""); resName = ResName.qualifyResName(refStr, resName); value = resourceTable.getValue(resName, config); } } return resName; }