public JobResult process()

in src/main/java/org/apache/sling/clam/job/internal/JcrPropertyScanJobConsumer.java [117:151]


    public JobResult process(final Job job) {
        logger.debug("processing property scan job: {}", job);
        try (ResourceResolver resourceResolver = resourceResolverFactory.getServiceResourceResolver(null)) {
            final String path = job.getProperty(ClamUtil.PROPERTY_PATH, String.class);
            final String userId = job.getProperty(ClamUtil.USER_ID, String.class);
            final Session session = resourceResolver.adaptTo(Session.class);
            assert session != null;
            final Property property = session.getProperty(path);
            final int propertyType = property.getType();
            if (property.isMultiple()) { // multiple property values
                final int index = job.getProperty(ClamUtil.VALUE_INDEX, Integer.class);
                final Value[] values = property.getValues();
                final Value value = values[index];
                try (InputStream inputStream = getInputStream(value)) {
                    if (logger.isDebugEnabled()) {
                        logger.debug("scanning property of type {} at {} [{}]", PropertyType.nameFromValue(propertyType), path, index);
                    }
                    final ScanResult scanResult = clamService.scan(inputStream);
                    invokeScanResultHandlers(scanResult, path, index, propertyType, userId);
                }
            } else { // single property value
                try (InputStream inputStream = getInputStream(property.getValue())) {
                    if (logger.isDebugEnabled()) {
                        logger.debug("scanning property of type {} at {}", PropertyType.nameFromValue(propertyType), path);
                    }
                    final ScanResult scanResult = clamService.scan(inputStream);
                    invokeScanResultHandlers(scanResult, path, null, propertyType, userId);
                }
            }
            return JobResult.OK;
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            return JobResult.FAILED;
        }
    }