protected Object getFilter() throws WikiStreamException { if (this.filter == null) { this.filter = this.filterManager.createCompositeFilter(this.contentListener, this); } return this.filter; }
private void checkCompatible(FilterElementDescriptor element, FilterElementParameterDescriptor<?>[] parameters) throws IncompatibleFilterException { for (FilterElementParameterDescriptor<?> parameter : parameters) { FilterElementParameterDescriptor<?> elementParameter = element.getParameter(parameter.getName()); if (elementParameter != null && !elementParameter.getType().equals(parameter.getType())) { throw new IncompatibleFilterException("Parameter [" + parameter + "] is not compatible with parameter [" + elementParameter + "] (different types)"); } } }
private void resetDocument() { this.currentSpaceReference = null; this.currentLegacySpace = null; this.currentDocumentReference = null; this.currentLegacyDocument = null; this.currentDocumentLocale = null; this.currentDocumentRevision = null; this.currentDocumentParameters = new FilterEventParameters(); // Defaults this.currentDocumentParameters.put(WikiDocumentFilter.PARAMETER_LOCALE, Locale.ROOT); this.currentDocumentLocaleParameters = new FilterEventParameters(); this.currentDocumentRevisionParameters = new FilterEventParameters(); this.sentBeginWikiDocument = false; this.sentBeginWikiDocumentLocale = false; this.sentBeginWikiDocumentRevision = false; this.localeFromLegacy = true; }
private static void invokeUnkown(Object filter, FilterDescriptor descriptor, Method method, Object[] args) throws FilterException { String id = DefaultFilterDescriptorManager.getElementName(method); if (id != null) { FilterElementDescriptor element = descriptor.getElement(id); if (element != null) { FilterEventParameters metadata = new FilterEventParameters(); for (FilterElementParameterDescriptor<?> parameter : element.getParameters()) { metadata.put( parameter.getName() != null ? parameter.getName() : String.valueOf(parameter.getIndex()), args[parameter.getIndex()]); } UnknownFilter unknownFilter = (UnknownFilter) filter; if (method.getName().startsWith(DefaultFilterDescriptorManager.PREFIX_BEGIN)) { unknownFilter.beginUnknwon(id, metadata); } else if (method.getName().startsWith(DefaultFilterDescriptorManager.PREFIX_END)) { unknownFilter.endUnknwon(id, metadata); } else if (method.getName().startsWith(DefaultFilterDescriptorManager.PREFIX_ON)) { unknownFilter.onUnknwon(id, metadata); } } } } }
@Override public void endWiki(String name, FilterEventParameters parameters) throws FilterException { try { this.wikiWriter.close(); } catch (IOException e) { throw new FilterException("Failed to close XAR writer", e); } this.wikiWriter = null; }
protected P createPropertiesBean(Map<String, Object> properties) throws FilterException { Class<P> beanClass = getPropertiesBeanClass(); if (beanClass.isInstance(properties)) { return (P) properties; } P parametersBean; try { parametersBean = beanClass.newInstance(); this.beanManager.populate(parametersBean, properties); } catch (Exception e) { throw new FilterException(String.format("Failed to read parameters [%s]", properties), e); } return parametersBean; }
@Override public void setFilter(Object filter) { this.filter = filter; this.proxyFilter = this.filterDescriptorManager.createFilterProxy(filter, this.filerInterfaces.toArray(ArrayUtils.EMPTY_CLASS_ARRAY)); }
protected abstract void write(E entity, Object filter, F internalFilter, Map<String, Object> properties) throws FilterException; }
public void closeEntry() throws FilterException { try { this.zipStream.closeArchiveEntry(); } catch (IOException e) { throw new FilterException("Failed to close zip archive entry", e); } }
/** * Call passed end event if possible. * * @param filter the filter * @param descriptor the descriptor of the filter * @param id the id of the event * @param parameters the parameters of the event * @return true if the event has been sent, false otherwise * @throws FilterException when the passed filter exposes the event but failed anyway */ public static boolean sendEndEvent(Object filter, FilterDescriptor descriptor, String id, FilterEventParameters parameters) throws FilterException { FilterElementDescriptor elementDescriptor = descriptor.getElement(id); if (elementDescriptor != null && elementDescriptor.getEndMethod() != null) { sendEvent(elementDescriptor.getEndMethod(), elementDescriptor, filter, parameters); } else if (filter instanceof UnknownFilter) { ((UnknownFilter) filter).endUnknwon(id, parameters); } else { return false; } return true; }
/** * Call passed begin event if possible. * * @param filter the filter * @param descriptor the descriptor of the filter * @param id the id of the event * @param parameters the parameters of the event * @return true if the event has been sent, false otherwise * @throws FilterException when the passed filter exposes the event but failed anyway */ public static boolean sendBeginEvent(Object filter, FilterDescriptor descriptor, String id, FilterEventParameters parameters) throws FilterException { FilterElementDescriptor elementDescriptor = descriptor.getElement(id); if (elementDescriptor != null && elementDescriptor.getBeginMethod() != null) { sendEvent(elementDescriptor.getBeginMethod(), elementDescriptor, filter, parameters); } else if (filter instanceof UnknownFilter) { ((UnknownFilter) filter).beginUnknwon(id, parameters); } else { return false; } return true; }
/** * Call passed on event if possible. * * @param filter the filter * @param descriptor the descriptor of the filter * @param id the id of the event * @param parameters the parameters of the event * @return true if the event has been sent, false otherwise * @throws FilterException when the passed filter exposes the event but failed anyway */ public static boolean sendOnEvent(Object filter, FilterDescriptor descriptor, String id, FilterEventParameters parameters) throws FilterException { FilterElementDescriptor elementDescriptor = descriptor.getElement(id); if (elementDescriptor != null && elementDescriptor.getOnMethod() != null) { sendEvent(elementDescriptor.getOnMethod(), elementDescriptor, filter, parameters); } else if (filter instanceof UnknownFilter) { ((UnknownFilter) filter).onUnknwon(id, parameters); } else { return false; } return true; } }
@Override public void beginWikiDocument(String name, FilterEventParameters parameters) throws WikiStreamException { this.currentEntityReference = new EntityReference(name, EntityType.DOCUMENT, this.currentEntityReference); this.currentDefaultLocale = (Locale) parameters.get(WikiDocumentFilter.PARAMETER_LOCALE); }
/** * @param name the name of the element * @param parameters the parameters */ public FilterElementDescriptor(String name, FilterElementParameterDescriptor<?>[] parameters) { this.name = name; this.parameters = parameters; for (FilterElementParameterDescriptor<?> parameter : parameters) { if (parameter.getName() != null) { this.parametersIndex.put(parameter.getName(), parameter.getIndex()); } } }
private boolean canSendBeginWikiDocumentLocale(boolean force) { return this.sentBeginWikiDocument && !this.sentBeginWikiDocumentLocale && (force || (this.currentDocumentLocale != null && this.currentDocumentLocaleParameters.size() == XARDocumentModel.DOCUMENTLOCALE_PARAMETERS.size())); }
@Override public void setFilter(Object filter) { this.filter = filter; this.proxyFilter = this.filterDescriptorManager.createFilterProxy(filter, this.filerInterfaces.toArray(ArrayUtils.EMPTY_CLASS_ARRAY)); }
@Override protected Object createFilter() throws WikiStreamException { return this.filterManager.createCompositeFilter(this.documentListener.getFilter(), this); }
private boolean canSendBeginWikiDocumentRevision(boolean force) { return this.sentBeginWikiDocumentLocale && !this.sentBeginWikiDocumentRevision && (force || (this.currentDocumentRevision != null && this.currentDocumentRevisionParameters .size() == XARDocumentModel.DOCUMENTREVISION_PARAMETERS.size())); }
protected abstract void write(E entity, Object filter, F internalFilter, Map<String, Object> properties) throws WikiStreamException; }