1 /*
2 * #%L
3 * Native ARchive plugin for Maven
4 * %%
5 * Copyright (C) 2002 - 2014 NAR Maven Plugin developers.
6 * %%
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * #L%
19 */
20 package com.github.maven_nar.cpptasks;
21
22 import java.util.Vector;
23
24 /**
25 * @author Curt Arnold
26 */
27 public final class DependencyInfo {
28 /**
29 * Last modified time of this file or anything that it depends on.
30 *
31 * Not persisted since almost any change could invalidate it. Initialized
32 * to long.MIN_VALUE on construction.
33 */
34 // FREEHEP
35 // private long compositeLastModified;
36 private final/* final */String includePathIdentifier;
37 private final/* final */String[] includes;
38 private final/* final */String source;
39 private final/* final */long sourceLastModified;
40 private final/* final */String[] sysIncludes;
41 // FREEHEP
42 private Object tag = null;
43
44 public DependencyInfo(final String includePathIdentifier, final String source, final long sourceLastModified,
45 final Vector includes, final Vector sysIncludes) {
46 if (source == null) {
47 throw new NullPointerException("source");
48 }
49 if (includePathIdentifier == null) {
50 throw new NullPointerException("includePathIdentifier");
51 }
52 this.source = source;
53 this.sourceLastModified = sourceLastModified;
54 this.includePathIdentifier = includePathIdentifier;
55 this.includes = new String[includes.size()];
56 // BEGINFREEHEP
57 // if (includes.size() == 0) {
58 // compositeLastModified = sourceLastModified;
59 // } else {
60 // includes.copyInto(this.includes);
61 // compositeLastModified = Long.MIN_VALUE;
62 // }
63 // ENDFREEHEP
64 this.sysIncludes = new String[sysIncludes.size()];
65 // FREEHEP
66 includes.copyInto(this.includes);
67 sysIncludes.copyInto(this.sysIncludes);
68 }
69
70 // ENDFREEHEP
71 public String getIncludePathIdentifier() {
72 return this.includePathIdentifier;
73 }
74
75 public String[] getIncludes() {
76 final String[] includesClone = this.includes.clone();
77 return includesClone;
78 }
79
80 public String getSource() {
81 return this.source;
82 }
83
84 public long getSourceLastModified() {
85 return this.sourceLastModified;
86 }
87
88 public String[] getSysIncludes() {
89 final String[] sysIncludesClone = this.sysIncludes.clone();
90 return sysIncludesClone;
91 }
92
93 // BEGINFREEHEP
94 /**
95 * Returns true, if dependency info is tagged with object t.
96 *
97 * @param t
98 * object to compare with
99 *
100 * @return boolean, true, if tagged with t, otherwise false
101 */
102 public boolean hasTag(final Object t) {
103 return this.tag == t;
104 }
105
106 // public void setCompositeLastModified(long lastMod) {
107 // compositeLastModified = lastMod;
108 // }
109 // ENDFREEHEP
110 /**
111 * Returns the latest modification date of the source or anything that it
112 * depends on.
113 *
114 * @returns the composite lastModified time, returns Long.MIN_VALUE if not
115 * set
116 */
117 // BEGINFREEHEP
118 // public long getCompositeLastModified() {
119 // return compositeLastModified;
120 // }
121 public void setTag(final Object t) {
122 this.tag = t;
123 }
124 }