/** * Get media request path to media library * @param mediaRequest Media request * @param mediaHandlerConfig Media handler config (can be null, but should not be null) * @return Path or null if not present */ protected final @Nullable String getMediaRef(@NotNull MediaRequest mediaRequest, @Nullable MediaHandlerConfig mediaHandlerConfig) { if (StringUtils.isNotEmpty(mediaRequest.getMediaRef())) { return mediaRequest.getMediaRef(); } else if (mediaRequest.getResource() != null) { String refProperty = getMediaRefProperty(mediaRequest, mediaHandlerConfig); return mediaRequest.getResource().getValueMap().get(refProperty, String.class); } else { return null; } }
/** * Checks whether a media request can be handled by this media source * @param mediaRequest Media request * @return true if this media source can handle the given media request */ @SuppressWarnings("null") public boolean accepts(@NotNull MediaRequest mediaRequest) { // if an explicit media request is set check this first if (StringUtils.isNotEmpty(mediaRequest.getMediaRef())) { return accepts(mediaRequest.getMediaRef()); } // otherwise check resource which contains media request properties ValueMap props = mediaRequest.getResourceProperties(); // check for matching media source ID in link resource String mediaSourceId = props.get(MediaNameConstants.PN_MEDIA_SOURCE, String.class); if (StringUtils.isNotEmpty(mediaSourceId)) { return StringUtils.equals(mediaSourceId, getId()); } // if not link type is set at all check if link ref attribute contains a valid link else { String refProperty = StringUtils.defaultString(mediaRequest.getRefProperty(), getPrimaryMediaRefProperty()); String mediaRef = props.get(refProperty, String.class); return accepts(mediaRef); } }
MediaBuilderImpl(MediaRequest mediaRequest, MediaHandlerImpl mediaHandler) { if (mediaRequest == null) { throw new IllegalArgumentException("Media request is null."); } this.resource = mediaRequest.getResource(); this.mediaRef = mediaRequest.getMediaRef(); // clone media args to make sure the original object is not modified this.mediaArgs = mediaRequest.getMediaArgs().clone(); this.refProperty = mediaRequest.getRefProperty(); this.cropProperty = mediaRequest.getCropProperty(); this.mediaHandler = mediaHandler; }