<T extends CacheOperation> T merge(Element element, ReaderContext readerCtx, T op) { String cache = element.getAttribute("cache"); // sanity check String[] localCaches = caches; if (StringUtils.hasText(cache)) { localCaches = StringUtils.commaDelimitedListToStringArray(cache.trim()); } else { if (caches == null) { readerCtx.error("No cache specified specified for " + element.getNodeName(), element); } } op.setCacheNames(localCaches); op.setKey(getAttributeValue(element, "key", this.key)); op.setCondition(getAttributeValue(element, "condition", this.condition)); return op; }
String merge(Element element, ReaderContext readerCtx) { String m = element.getAttribute(METHOD_ATTRIBUTE); if (StringUtils.hasText(m)) { return m.trim(); } if (StringUtils.hasText(method)) { return method; } readerCtx.error("No method specified for " + element.getNodeName(), element); return null; }
<T extends CacheOperation> T merge(Element element, ReaderContext readerCtx, T op) { String cache = element.getAttribute("cache"); // sanity check String[] localCaches = caches; if (StringUtils.hasText(cache)) { localCaches = StringUtils.commaDelimitedListToStringArray(cache.trim()); } else { if (caches == null) { readerCtx.error("No cache specified specified for " + element.getNodeName(), element); } } op.setCacheNames(localCaches); op.setKey(getAttributeValue(element, "key", this.key)); op.setKeyGenerator(getAttributeValue(element, "key-generator", this.keyGenerator)); op.setCacheManager(getAttributeValue(element, "cache-manager", this.cacheManager)); op.setCondition(getAttributeValue(element, "condition", this.condition)); if (StringUtils.hasText(op.getKey()) && StringUtils.hasText(op.getKeyGenerator())) { throw new IllegalStateException("Invalid cache advice configuration on '" + element.toString() + "'. Both 'key' and 'keyGenerator' attributes have been set. " + "These attributes are mutually exclusive: either set the SpEL expression used to" + "compute the key at runtime or set the name of the KeyGenerator bean to use."); } return op; }
String merge(Element element, ReaderContext readerCtx) { String method = element.getAttribute(METHOD_ATTRIBUTE); if (StringUtils.hasText(method)) { return method.trim(); } if (StringUtils.hasText(this.method)) { return this.method; } readerCtx.error("No method specified for " + element.getNodeName(), element); return null; }
<T extends CacheOperation.Builder> T merge(Element element, ReaderContext readerCtx, T builder) { String cache = element.getAttribute("cache"); // sanity check String[] localCaches = this.caches; if (StringUtils.hasText(cache)) { localCaches = StringUtils.commaDelimitedListToStringArray(cache.trim()); } else { if (this.caches == null) { readerCtx.error("No cache specified for " + element.getNodeName(), element); } } builder.setCacheNames(localCaches); builder.setKey(getAttributeValue(element, "key", this.key)); builder.setKeyGenerator(getAttributeValue(element, "key-generator", this.keyGenerator)); builder.setCacheManager(getAttributeValue(element, "cache-manager", this.cacheManager)); builder.setCondition(getAttributeValue(element, "condition", this.condition)); if (StringUtils.hasText(builder.getKey()) && StringUtils.hasText(builder.getKeyGenerator())) { throw new IllegalStateException("Invalid cache advice configuration on '" + element.toString() + "'. Both 'key' and 'keyGenerator' attributes have been set. " + "These attributes are mutually exclusive: either set the SpEL expression used to" + "compute the key at runtime or set the name of the KeyGenerator bean to use."); } return builder; }
private void handleError(Exception e, Element source, ParserContext parser) { ReaderContext reader = parser.getReaderContext(); reader.error(e.getMessage(), reader.extractSource(source), e.getCause()); }