com.servicerocket.confluence.randombits.filtering.confluence.param.content.AttachmentInterpreter Maven / Gradle / Ivy
package com.servicerocket.confluence.randombits.filtering.confluence.param.content;
import com.atlassian.confluence.content.render.xhtml.ConversionContext;
import com.atlassian.confluence.content.render.xhtml.DefaultConversionContext;
import com.atlassian.confluence.core.ConfluenceEntityObject;
import com.atlassian.confluence.pages.Attachment;
import com.atlassian.confluence.renderer.PageContext;
import com.servicerocket.confluence.randombits.support.confluence.LinkAssistant;
import com.servicerocket.confluence.randombits.support.core.env.EnvironmentAssistant;
import com.servicerocket.confluence.randombits.support.core.param.AbstractParameterInterpreter;
import com.servicerocket.confluence.randombits.support.core.param.InterpretationException;
import com.servicerocket.confluence.randombits.support.core.param.ParameterContext;
/**
* Interprets a string as a wiki-style attachment link.
*/
public class AttachmentInterpreter extends AbstractParameterInterpreter {
private final EnvironmentAssistant environmentAssistant;
private final LinkAssistant linkAssistant;
public AttachmentInterpreter( EnvironmentAssistant environmentAssistant, LinkAssistant linkAssistant ) {
this.environmentAssistant = environmentAssistant;
this.linkAssistant = linkAssistant;
}
@Override
public Attachment interpret( String inputValue, ParameterContext context ) throws InterpretationException {
ConversionContext content = context.get( ConversionContext.class, null );
if ( content == null )
content = environmentAssistant.getValue( ConversionContext.class );
if ( content == null )
content = new DefaultConversionContext( new PageContext() );
ConfluenceEntityObject entity = linkAssistant.getEntityForWikiLink( content, inputValue );
if ( entity instanceof Attachment )
return (Attachment) entity;
return null;
}
}