1 package org.codehaus.plexus.components.io.functions;
2
3 /*
4 * Copyright 2026 The plexus developers.
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19 import java.io.IOException;
20
21 /**
22 * Optional identity for resources whose contents can share one hard-link payload.
23 * Implementations must return null when transformation or a replacement content
24 * supplier invalidates that relationship. Equal identities must denote the same
25 * content within a stable source, not merely equal bytes from unrelated files.
26 * Consumers must also compare the metadata they intend to write.
27 *
28 * @since 3.7.1
29 */
30 public interface HardLinkIdentitySupplier {
31 /**
32 * Returns a source-scoped identity suitable for equality comparisons.
33 * Identities must only be cached for the duration of one archive operation.
34 *
35 * @return the content identity, or null when preservation cannot be guaranteed
36 * @throws IOException if source attributes cannot be read
37 */
38 Object getHardLinkIdentity() throws IOException;
39 }