Cleanup: remove useless statements
[idea/community.git] / java / compiler / impl / src / com / intellij / openapi / compiler / generic / VirtualFileWithDependenciesState.java
1 /*
2  * Copyright 2000-2014 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.openapi.compiler.generic;
17
18 import com.intellij.openapi.vfs.VirtualFile;
19 import com.intellij.openapi.vfs.VirtualFileManager;
20 import com.intellij.util.io.DataExternalizer;
21 import com.intellij.util.io.IOUtil;
22 import org.jetbrains.annotations.ApiStatus;
23 import org.jetbrains.annotations.NotNull;
24
25 import java.io.DataInput;
26 import java.io.DataOutput;
27 import java.io.IOException;
28 import java.util.HashMap;
29 import java.util.Map;
30
31 /**
32  * @deprecated this class is part of the old deprecated build infrastructure; plug into the external build process instead (see {@link org.jetbrains.jps.builders.BuildTarget})
33  */
34 @Deprecated
35 @ApiStatus.ScheduledForRemoval(inVersion = "192.0")
36 public class VirtualFileWithDependenciesState {
37   public static final DataExternalizer<VirtualFileWithDependenciesState> EXTERNALIZER = new VirtualFileWithDependenciesExternalizer();
38   private final long mySourceTimestamp;
39   private final Map<String, Long> myDependencies = new HashMap<>();
40
41   public VirtualFileWithDependenciesState(long sourceTimestamp) {
42     mySourceTimestamp = sourceTimestamp;
43   }
44
45   public void addDependency(@NotNull VirtualFile file) {
46     myDependencies.put(file.getUrl(), file.getTimeStamp());
47   }
48
49   public boolean isUpToDate(@NotNull VirtualFile sourceFile) {
50     if (sourceFile.getTimeStamp() != mySourceTimestamp) {
51       return false;
52     }
53
54     VirtualFileManager manager = VirtualFileManager.getInstance();
55     for (Map.Entry<String, Long> entry : myDependencies.entrySet()) {
56       final VirtualFile file = manager.findFileByUrl(entry.getKey());
57       if (file == null || file.getTimeStamp() != entry.getValue()) {
58         return false;
59       }
60     }
61     return true;
62   }
63
64
65   private static class VirtualFileWithDependenciesExternalizer implements DataExternalizer<VirtualFileWithDependenciesState> {
66     @Override
67     public void save(@NotNull DataOutput out, VirtualFileWithDependenciesState value) throws IOException {
68       out.writeLong(value.mySourceTimestamp);
69       final Map<String, Long> dependencies = value.myDependencies;
70       out.writeInt(dependencies.size());
71       for (Map.Entry<String, Long> entry : dependencies.entrySet()) {
72         IOUtil.writeUTF(out, entry.getKey());
73         out.writeLong(entry.getValue());
74       }
75     }
76
77     @Override
78     public VirtualFileWithDependenciesState read(@NotNull DataInput in) throws IOException {
79       final VirtualFileWithDependenciesState state = new VirtualFileWithDependenciesState(in.readLong());
80       int size = in.readInt();
81       while (size-- > 0) {
82         final String url = IOUtil.readUTF(in);
83         final long timestamp = in.readLong();
84         state.myDependencies.put(url, timestamp);
85       }
86       return state;
87     }
88   }
89 }