001/* 002 * Licensed to DuraSpace under one or more contributor license agreements. 003 * See the NOTICE file distributed with this work for additional information 004 * regarding copyright ownership. 005 * 006 * DuraSpace licenses this file to you under the Apache License, 007 * Version 2.0 (the "License"); you may not use this file except in 008 * compliance with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.fcrepo.kernel.impl.services; 019 020import org.fcrepo.kernel.api.exception.UnsupportedAlgorithmException; 021import org.fcrepo.kernel.api.models.Binary; 022import org.fcrepo.kernel.api.services.FixityService; 023import org.fcrepo.kernel.api.utils.ContentDigest.DIGEST_ALGORITHM; 024import org.fcrepo.persistence.common.MultiDigestInputStreamWrapper; 025import org.springframework.stereotype.Component; 026 027import java.net.URI; 028import java.util.Collection; 029import java.util.stream.Collectors; 030 031/** 032 * Implementation of {@link org.fcrepo.kernel.api.services.FixityService} 033 * 034 * @author dbernstein 035 */ 036@Component 037public class FixityServiceImpl extends AbstractService implements FixityService { 038 @Override 039 public Collection<URI> getFixity(final Binary binary, final Collection<String> algorithms) 040 throws UnsupportedAlgorithmException { 041 final var digestAlgs = algorithms.stream() 042 .map(DIGEST_ALGORITHM::fromAlgorithm) 043 .collect(Collectors.toList()); 044 045 final MultiDigestInputStreamWrapper digestWrapper = new MultiDigestInputStreamWrapper( 046 binary.getContent(), null, digestAlgs); 047 048 return digestWrapper.getDigests(); 049 } 050 051 @Override 052 public Collection<URI> checkFixity(final Binary binary, final Collection<String> algorithms) 053 throws UnsupportedAlgorithmException { 054 return null; 055 } 056}