@Override public void toResource(Resource resource, ResourceFilter filter) throws RepositoryException { super.toResource(resource, filter); ResourceFilter.FilterSet filterSet = (ResourceFilter.FilterSet) filter; ResourceHandle handle = ResourceHandle.use(resource); ResourceFilter.FilterSet.Rule rule = filterSet.getRule(); handle.setProperty(PROPERTY_RULE, rule.name()); List<ResourceFilter> set = filterSet.getSet(); ResourceHandle entry; for (int i = 0; i < set.size(); i++) { entry = ResourceHandle.use( ResourceUtil.getOrCreateChild( resource, NODE_NAME_ENTRY + "-" + i, ResourceUtil.TYPE_UNSTRUCTURED)); ResourceFilterMapping.toResource(entry, set.get(i)); } }
@Override protected ResourceFilter createInstance( ResourceHandle resource, Class<? extends ResourceFilter> type) throws Exception { ResourceFilter.FilterSet.Rule rule = ResourceFilter.FilterSet.Rule.valueOf(resource.getProperty(PROPERTY_RULE, (String) null)); List<ResourceHandle> filterResources = resource.getChildrenByResourceType(RESOURCE_FILTER_TYPE); List<ResourceFilter> filterList = new ArrayList<>(); for (ResourceHandle filterRes : filterResources) { ResourceFilter filter = ResourceFilterMapping.fromResource(filterRes); filterList.add(filter); } ResourceFilter filter = type.getConstructor(ResourceFilter.FilterSet.Rule.class, List.class) .newInstance(rule, filterList); return filter; }