public Metadata applyRule(String name, TagAttribute attribute, MetadataTarget meta) { if (meta.isTargetInstanceOf(UIComponent.class)) { // if component and dynamic, then must set expression if (!attribute.isLiteral()) { Class type = meta.getPropertyType(name); if (type == null) { type = Object.class; } return new ValueExpressionMetadata(name, type, attribute); } else if (meta.getWriteMethod(name) == null) { // this was an attribute literal, but not property warnAttr(attribute, meta.getTargetClass(), name); return new LiteralAttributeMetadata(name, attribute.getValue()); } } return null; }