package com.l7tech.policy.assertion.ext.message;

import com.l7tech.policy.assertion.ext.message.format.CustomMessageFormat;
import com.l7tech.policy.assertion.ext.message.knob.CustomMessageKnob;
import com.l7tech.policy.assertion.ext.message.knob.NoSuchKnobException;
import java.io.InputStream;
import java.util.Collection;

public interface CustomMessage {
   CustomContentType getContentType();

   void setContentType(CustomContentType var1) throws IllegalArgumentException;

   InputStream getInputStream() throws CustomMessageAccessException;

   void setInputStream(InputStream var1) throws CustomMessageAccessException;

   <T> T extract(CustomMessageFormat<T> var1) throws CustomMessageAccessException;

   <T> void overwrite(CustomMessageFormat<T> var1, T var2) throws CustomMessageAccessException;

   <K extends CustomMessageKnob> K getKnob(Class<K> var1) throws NoSuchKnobException;

   Collection<CustomMessageKnob> getAttachedKnobs();
}
